@sleep2agi/agent-network-dashboard 0.6.3-preview.19 → 0.6.3-preview.20
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_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +11 -11
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +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 +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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 +2 -2
- package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +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 +2 -2
- package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +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 +2 -2
- package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +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 +3 -3
- package/.next/server/app/node.segments/_full.segment.rsc +3 -3
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +2 -2
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/node.segments/node.segment.rsc +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 +3 -3
- package/.next/server/app/nodes.segments/_full.segment.rsc +3 -3
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/providers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/providers.html +2 -2
- package/.next/server/app/providers.rsc +2 -2
- package/.next/server/app/providers.segments/_full.segment.rsc +2 -2
- package/.next/server/app/providers.segments/_head.segment.rsc +1 -1
- package/.next/server/app/providers.segments/_index.segment.rsc +2 -2
- package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/providers.segments/providers/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/providers.segments/providers.segment.rsc +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 +2 -2
- package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +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 +2 -2
- package/.next/server/app/servers.segments/_full.segment.rsc +2 -2
- package/.next/server/app/servers.segments/_head.segment.rsc +1 -1
- package/.next/server/app/servers.segments/_index.segment.rsc +2 -2
- package/.next/server/app/servers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/servers.segments/servers/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/servers.segments/servers.segment.rsc +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 +2 -2
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +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 +2 -2
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +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 +2 -2
- package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__091su60._.js +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__091su60._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0vc.3k7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0vc.3k7._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_0rh8p9o._.js +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_0rh8p9o._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_app_0~.1~ew._.js +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_app_0~.1~ew._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_app_13k3-ai._.js +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_app_13k3-ai._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_app_nodes_page_tsx_0ma3oqt._.js +1 -1
- package/.next/server/chunks/ssr/dash-loop-wt_app_nodes_page_tsx_0ma3oqt._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- 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.b6xqw76pcks.js → 00wka73f9rki_.js} +1 -1
- package/.next/static/chunks/{0umgi_y479ddt.js → 08medgd.1p151.js} +1 -1
- package/.next/static/chunks/{0n8tkdk74r.vt.js → 09ju~nqgg3wpf.js} +3 -3
- package/.next/static/chunks/{0b6ulhtmb3ycb.js → 0rhjfleuyvtd8.js} +1 -1
- package/.next/static/chunks/12x~60u05l-xj.css +1 -0
- package/.next/static/chunks/{0db4ft9k8d8jj.js → 13t5k3_w2mgd4.js} +1 -1
- package/.next/static/chunks/13vqo73myw3fe.js +4 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/AgentCard.tsx +3 -2
- package/app/components/CommandCenter.tsx +2 -1
- package/app/components/TaskChatPanel.tsx +29 -17
- package/app/lib/ui-lang.ts +14 -0
- package/app/nodes/page.tsx +4 -3
- package/package.json +1 -1
- package/.next/static/chunks/09hfex0..10y8.css +0 -1
- package/.next/static/chunks/0zxo9burl18g1.js +0 -4
- /package/.next/static/{mBuJjoO9H0RG2XXhmevmB → F09kAlh9X67Chm49jMtd_}/_buildManifest.js +0 -0
- /package/.next/static/{mBuJjoO9H0RG2XXhmevmB → F09kAlh9X67Chm49jMtd_}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{mBuJjoO9H0RG2XXhmevmB → F09kAlh9X67Chm49jMtd_}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":347,"timestamp":5787090595494,"id":4,"parentId":1,"tags":{},"startTime":1784595062842,"traceId":"5d2ea9f864ac7ff4"},{"name":"load-custom-routes","duration":697,"timestamp":5787090596069,"id":5,"parentId":1,"tags":{},"startTime":1784595062842,"traceId":"5d2ea9f864ac7ff4"},{"name":"create-dist-dir","duration":845,"timestamp":5787090596828,"id":6,"parentId":1,"tags":{},"startTime":1784595062843,"traceId":"5d2ea9f864ac7ff4"},{"name":"clean","duration":51001,"timestamp":5787090598830,"id":7,"parentId":1,"tags":{},"startTime":1784595062845,"traceId":"5d2ea9f864ac7ff4"},{"name":"discover-routes","duration":12330,"timestamp":5787090744747,"id":8,"parentId":1,"tags":{},"startTime":1784595062991,"traceId":"5d2ea9f864ac7ff4"},{"name":"create-root-mapping","duration":127,"timestamp":5787090757148,"id":9,"parentId":1,"tags":{},"startTime":1784595063003,"traceId":"5d2ea9f864ac7ff4"},{"name":"generate-route-types","duration":38413,"timestamp":5787090759913,"id":10,"parentId":1,"tags":{},"startTime":1784595063006,"traceId":"5d2ea9f864ac7ff4"},{"name":"public-dir-conflict-check","duration":137,"timestamp":5787090798552,"id":11,"parentId":1,"tags":{},"startTime":1784595063045,"traceId":"5d2ea9f864ac7ff4"},{"name":"generate-routes-manifest","duration":6945,"timestamp":5787090798861,"id":12,"parentId":1,"tags":{},"startTime":1784595063045,"traceId":"5d2ea9f864ac7ff4"},{"name":"run-turbopack","duration":9720943,"timestamp":5787090813871,"id":14,"parentId":1,"tags":{},"startTime":1784595063060,"traceId":"5d2ea9f864ac7ff4"},{"name":"turbopack-build-events","duration":156,"timestamp":5787091187992,"id":15,"parentId":1,"tags":{},"startTime":1784595063434,"traceId":"5d2ea9f864ac7ff4"},{"name":"run-typescript","duration":13749246,"timestamp":5787100551914,"id":16,"parentId":1,"tags":{},"startTime":1784595072798,"traceId":"5d2ea9f864ac7ff4"},{"name":"generate-required-server-files","duration":3379,"timestamp":5787114302644,"id":18,"parentId":1,"tags":{},"startTime":1784595086549,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-static-error-page","duration":21194,"timestamp":5787114538987,"id":20,"parentId":19,"tags":{},"startTime":1784595086785,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":730784,"timestamp":5787114563574,"id":75,"parentId":22,"tags":{},"startTime":1784595086810,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":752362,"timestamp":5787114542183,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1784595086788,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":861735,"timestamp":5787114568470,"id":79,"parentId":33,"tags":{},"startTime":1784595086815,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":881501,"timestamp":5787114548808,"id":33,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1784595086795,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":872212,"timestamp":5787114569026,"id":82,"parentId":36,"tags":{},"startTime":1784595086815,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":891709,"timestamp":5787114549610,"id":36,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1784595086796,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":880947,"timestamp":5787114563922,"id":78,"parentId":32,"tags":{},"startTime":1784595086810,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":896289,"timestamp":5787114548649,"id":32,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1784595086795,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":883320,"timestamp":5787114563706,"id":76,"parentId":29,"tags":{},"startTime":1784595086810,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":899308,"timestamp":5787114547809,"id":29,"parentId":19,"tags":{"page":"/api/anet/providers/probe-results"},"startTime":1784595086794,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":881130,"timestamp":5787114569192,"id":84,"parentId":39,"tags":{},"startTime":1784595086815,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":898050,"timestamp":5787114552332,"id":39,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":883331,"timestamp":5787114569230,"id":85,"parentId":40,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":900156,"timestamp":5787114552476,"id":40,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":893862,"timestamp":5787114568837,"id":81,"parentId":35,"tags":{},"startTime":1784595086815,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":913689,"timestamp":5787114549075,"id":35,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1784595086795,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":898960,"timestamp":5787114569401,"id":88,"parentId":43,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":915611,"timestamp":5787114552820,"id":43,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":907659,"timestamp":5787114569416,"id":89,"parentId":44,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":924176,"timestamp":5787114552981,"id":44,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":908261,"timestamp":5787114569113,"id":83,"parentId":37,"tags":{},"startTime":1784595086815,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":927540,"timestamp":5787114549887,"id":37,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1784595086796,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":909242,"timestamp":5787114569425,"id":90,"parentId":45,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":925582,"timestamp":5787114553134,"id":45,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":921837,"timestamp":5787114569453,"id":92,"parentId":48,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":937752,"timestamp":5787114553613,"id":48,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1784595086800,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":924309,"timestamp":5787114569440,"id":91,"parentId":46,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":940547,"timestamp":5787114553254,"id":46,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1784595086800,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":927494,"timestamp":5787114569467,"id":93,"parentId":50,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":942950,"timestamp":5787114554075,"id":50,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1784595086800,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":931503,"timestamp":5787114569382,"id":87,"parentId":42,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":948221,"timestamp":5787114552715,"id":42,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":932453,"timestamp":5787114569490,"id":95,"parentId":52,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":947687,"timestamp":5787114554325,"id":52,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":938762,"timestamp":5787114569517,"id":97,"parentId":54,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":953884,"timestamp":5787114554455,"id":54,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":942080,"timestamp":5787114569530,"id":98,"parentId":55,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":957079,"timestamp":5787114554578,"id":55,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":944384,"timestamp":5787114569348,"id":86,"parentId":41,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":961184,"timestamp":5787114552596,"id":41,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1784595086799,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":951565,"timestamp":5787114569544,"id":99,"parentId":56,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":966504,"timestamp":5787114554665,"id":56,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":951861,"timestamp":5787114569476,"id":94,"parentId":51,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":967162,"timestamp":5787114554220,"id":51,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1784595086800,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":963678,"timestamp":5787114569580,"id":102,"parentId":61,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":977743,"timestamp":5787114555584,"id":61,"parentId":19,"tags":{"page":"/manifest.webmanifest"},"startTime":1784595086802,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":970221,"timestamp":5787114569508,"id":96,"parentId":53,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":985402,"timestamp":5787114554393,"id":53,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":970421,"timestamp":5787114569566,"id":101,"parentId":58,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":985221,"timestamp":5787114554831,"id":58,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":972395,"timestamp":5787114569557,"id":100,"parentId":57,"tags":{},"startTime":1784595086816,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":987249,"timestamp":5787114554745,"id":57,"parentId":19,"tags":{"page":"/api/hub/upload"},"startTime":1784595086801,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":962944,"timestamp":5787114583295,"id":103,"parentId":24,"tags":{},"startTime":1784595086830,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1003370,"timestamp":5787114542919,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1784595086789,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":965486,"timestamp":5787114584697,"id":104,"parentId":25,"tags":{},"startTime":1784595086831,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1004588,"timestamp":5787114545702,"id":25,"parentId":19,"tags":{"page":"/api/anet/host-supervisors"},"startTime":1784595086792,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":961001,"timestamp":5787114590362,"id":105,"parentId":27,"tags":{},"startTime":1784595086837,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1004813,"timestamp":5787114546592,"id":27,"parentId":19,"tags":{"page":"/api/anet/node-create"},"startTime":1784595086793,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":955245,"timestamp":5787114597474,"id":106,"parentId":28,"tags":{},"startTime":1784595086844,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1005388,"timestamp":5787114547373,"id":28,"parentId":19,"tags":{"page":"/api/anet/node-lifecycle"},"startTime":1784595086794,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":989319,"timestamp":5787114563816,"id":77,"parentId":30,"tags":{},"startTime":1784595086810,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1005184,"timestamp":5787114547998,"id":30,"parentId":19,"tags":{"page":"/api/anet/providers/probe"},"startTime":1784595086794,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":946090,"timestamp":5787114608745,"id":107,"parentId":26,"tags":{},"startTime":1784595086855,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1008783,"timestamp":5787114546100,"id":26,"parentId":19,"tags":{"page":"/api/anet/node-config"},"startTime":1784595086792,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":944610,"timestamp":5787114610630,"id":108,"parentId":38,"tags":{},"startTime":1784595086857,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1005226,"timestamp":5787114550074,"id":38,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1784595086796,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":937078,"timestamp":5787114626914,"id":109,"parentId":31,"tags":{},"startTime":1784595086873,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1015850,"timestamp":5787114548231,"id":31,"parentId":19,"tags":{"page":"/api/anet/providers"},"startTime":1784595086795,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":938012,"timestamp":5787114630295,"id":111,"parentId":49,"tags":{},"startTime":1784595086877,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1014670,"timestamp":5787114553704,"id":49,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1784595086800,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":1004158,"timestamp":5787114568667,"id":80,"parentId":34,"tags":{},"startTime":1784595086815,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1023970,"timestamp":5787114548927,"id":34,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1784595086795,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":947585,"timestamp":5787114627988,"id":110,"parentId":47,"tags":{},"startTime":1784595086874,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1022258,"timestamp":5787114553364,"id":47,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1784595086800,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":977184,"timestamp":5787114650726,"id":113,"parentId":59,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1072730,"timestamp":5787114555262,"id":59,"parentId":19,"tags":{"page":"/login"},"startTime":1784595086802,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":986472,"timestamp":5787114650793,"id":118,"parentId":66,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1079437,"timestamp":5787114557910,"id":66,"parentId":19,"tags":{"page":"/providers"},"startTime":1784595086804,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":995278,"timestamp":5787114650826,"id":119,"parentId":67,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1088009,"timestamp":5787114558166,"id":67,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1784595086804,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":1000454,"timestamp":5787114650674,"id":112,"parentId":23,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1108557,"timestamp":5787114542655,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1784595086789,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":1003910,"timestamp":5787114650842,"id":120,"parentId":68,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1096412,"timestamp":5787114558395,"id":68,"parentId":19,"tags":{"page":"/servers"},"startTime":1784595086805,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":1009391,"timestamp":5787114650857,"id":121,"parentId":69,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"},{"name":"check-page","duration":1101808,"timestamp":5787114558498,"id":69,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1784595086805,"traceId":"5d2ea9f864ac7ff4"},{"name":"is-page-static","duration":1016209,"timestamp":5787114650871,"id":122,"parentId":71,"tags":{},"startTime":1784595086897,"traceId":"5d2ea9f864ac7ff4"}]
|
|
2
|
-
[{"name":"check-page","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":317,"timestamp":5788284111385,"id":4,"parentId":1,"tags":{},"startTime":1784596256358,"traceId":"ff99179654b74581"},{"name":"load-custom-routes","duration":562,"timestamp":5788284111882,"id":5,"parentId":1,"tags":{},"startTime":1784596256358,"traceId":"ff99179654b74581"},{"name":"create-dist-dir","duration":965,"timestamp":5788284112512,"id":6,"parentId":1,"tags":{},"startTime":1784596256359,"traceId":"ff99179654b74581"},{"name":"clean","duration":47053,"timestamp":5788284114235,"id":7,"parentId":1,"tags":{},"startTime":1784596256361,"traceId":"ff99179654b74581"},{"name":"discover-routes","duration":28959,"timestamp":5788284268705,"id":8,"parentId":1,"tags":{},"startTime":1784596256515,"traceId":"ff99179654b74581"},{"name":"create-root-mapping","duration":177,"timestamp":5788284297752,"id":9,"parentId":1,"tags":{},"startTime":1784596256544,"traceId":"ff99179654b74581"},{"name":"generate-route-types","duration":26882,"timestamp":5788284301768,"id":10,"parentId":1,"tags":{},"startTime":1784596256548,"traceId":"ff99179654b74581"},{"name":"public-dir-conflict-check","duration":240,"timestamp":5788284328944,"id":11,"parentId":1,"tags":{},"startTime":1784596256575,"traceId":"ff99179654b74581"},{"name":"generate-routes-manifest","duration":9221,"timestamp":5788284329637,"id":12,"parentId":1,"tags":{},"startTime":1784596256576,"traceId":"ff99179654b74581"},{"name":"run-turbopack","duration":8996895,"timestamp":5788284361787,"id":14,"parentId":1,"tags":{},"startTime":1784596256608,"traceId":"ff99179654b74581"},{"name":"turbopack-build-events","duration":100,"timestamp":5788284719557,"id":15,"parentId":1,"tags":{},"startTime":1784596256966,"traceId":"ff99179654b74581"},{"name":"run-typescript","duration":13362616,"timestamp":5788293370018,"id":16,"parentId":1,"tags":{},"startTime":1784596265616,"traceId":"ff99179654b74581"},{"name":"generate-required-server-files","duration":4058,"timestamp":5788306734396,"id":18,"parentId":1,"tags":{},"startTime":1784596278981,"traceId":"ff99179654b74581"},{"name":"check-static-error-page","duration":28193,"timestamp":5788307028417,"id":20,"parentId":19,"tags":{},"startTime":1784596279275,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":601722,"timestamp":5788307060692,"id":78,"parentId":32,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":618532,"timestamp":5788307044060,"id":32,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1784596279290,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":604147,"timestamp":5788307065194,"id":81,"parentId":35,"tags":{},"startTime":1784596279311,"traceId":"ff99179654b74581"},{"name":"check-page","duration":624886,"timestamp":5788307044542,"id":35,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":648012,"timestamp":5788307065385,"id":82,"parentId":36,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":668267,"timestamp":5788307045204,"id":36,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":669677,"timestamp":5788307065459,"id":83,"parentId":37,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":689783,"timestamp":5788307045434,"id":37,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1784596279292,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":674734,"timestamp":5788307065538,"id":84,"parentId":39,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":692529,"timestamp":5788307047824,"id":39,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1784596279294,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":679665,"timestamp":5788307065605,"id":85,"parentId":40,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":697492,"timestamp":5788307047964,"id":40,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1784596279294,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":684458,"timestamp":5788307065731,"id":86,"parentId":41,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":702113,"timestamp":5788307048152,"id":41,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1784596279294,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":692344,"timestamp":5788307065764,"id":87,"parentId":42,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":709858,"timestamp":5788307048320,"id":42,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":694057,"timestamp":5788307065783,"id":88,"parentId":43,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":711496,"timestamp":5788307048414,"id":43,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":699029,"timestamp":5788307065797,"id":89,"parentId":44,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":716375,"timestamp":5788307048513,"id":44,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":703641,"timestamp":5788307065806,"id":90,"parentId":45,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":720904,"timestamp":5788307048600,"id":45,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":712471,"timestamp":5788307065819,"id":91,"parentId":46,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":729652,"timestamp":5788307048709,"id":46,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":735951,"timestamp":5788307060244,"id":75,"parentId":22,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":762800,"timestamp":5788307033529,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1784596279280,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":756306,"timestamp":5788307065833,"id":92,"parentId":48,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":773169,"timestamp":5788307049074,"id":48,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":758351,"timestamp":5788307065856,"id":94,"parentId":51,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":774557,"timestamp":5788307049708,"id":51,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":763445,"timestamp":5788307065870,"id":95,"parentId":52,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":779530,"timestamp":5788307049844,"id":52,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":767859,"timestamp":5788307065882,"id":96,"parentId":53,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":783865,"timestamp":5788307049948,"id":53,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":772511,"timestamp":5788307065892,"id":97,"parentId":54,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":788400,"timestamp":5788307050065,"id":54,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":780208,"timestamp":5788307065906,"id":98,"parentId":55,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":795990,"timestamp":5788307050202,"id":55,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":786627,"timestamp":5788307059794,"id":74,"parentId":21,"tags":{},"startTime":1784596279306,"traceId":"ff99179654b74581"},{"name":"check-page","duration":815227,"timestamp":5788307031239,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1784596279278,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":781645,"timestamp":5788307065919,"id":99,"parentId":56,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":797329,"timestamp":5788307050293,"id":56,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":789446,"timestamp":5788307065945,"id":101,"parentId":58,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":805023,"timestamp":5788307050476,"id":58,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":794560,"timestamp":5788307065957,"id":102,"parentId":61,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":809311,"timestamp":5788307051268,"id":61,"parentId":19,"tags":{"page":"/manifest.webmanifest"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":784521,"timestamp":5788307086846,"id":103,"parentId":24,"tags":{},"startTime":1784596279333,"traceId":"ff99179654b74581"},{"name":"check-page","duration":837187,"timestamp":5788307034256,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1784596279281,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":816417,"timestamp":5788307060513,"id":77,"parentId":30,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":833647,"timestamp":5788307043382,"id":30,"parentId":19,"tags":{"page":"/api/anet/providers/probe"},"startTime":1784596279290,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":790025,"timestamp":5788307092045,"id":104,"parentId":25,"tags":{},"startTime":1784596279338,"traceId":"ff99179654b74581"},{"name":"check-page","duration":842843,"timestamp":5788307039311,"id":25,"parentId":19,"tags":{"page":"/api/anet/host-supervisors"},"startTime":1784596279286,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":784212,"timestamp":5788307101621,"id":105,"parentId":26,"tags":{},"startTime":1784596279348,"traceId":"ff99179654b74581"},{"name":"check-page","duration":846143,"timestamp":5788307039765,"id":26,"parentId":19,"tags":{"page":"/api/anet/node-config"},"startTime":1784596279286,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":792358,"timestamp":5788307110917,"id":106,"parentId":27,"tags":{},"startTime":1784596279357,"traceId":"ff99179654b74581"},{"name":"check-page","duration":862946,"timestamp":5788307040401,"id":27,"parentId":19,"tags":{"page":"/api/anet/node-create"},"startTime":1784596279287,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":787809,"timestamp":5788307129554,"id":107,"parentId":28,"tags":{},"startTime":1784596279376,"traceId":"ff99179654b74581"},{"name":"check-page","duration":876640,"timestamp":5788307040871,"id":28,"parentId":19,"tags":{"page":"/api/anet/node-lifecycle"},"startTime":1784596279287,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":784973,"timestamp":5788307140845,"id":108,"parentId":31,"tags":{},"startTime":1784596279387,"traceId":"ff99179654b74581"},{"name":"check-page","duration":882342,"timestamp":5788307043555,"id":31,"parentId":19,"tags":{"page":"/api/anet/providers"},"startTime":1784596279290,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":795665,"timestamp":5788307143467,"id":110,"parentId":47,"tags":{},"startTime":1784596279390,"traceId":"ff99179654b74581"},{"name":"check-page","duration":890436,"timestamp":5788307048803,"id":47,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":873477,"timestamp":5788307065936,"id":100,"parentId":57,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":889061,"timestamp":5788307050382,"id":57,"parentId":19,"tags":{"page":"/api/hub/upload"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":799882,"timestamp":5788307144594,"id":111,"parentId":49,"tags":{},"startTime":1784596279391,"traceId":"ff99179654b74581"},{"name":"check-page","duration":895345,"timestamp":5788307049205,"id":49,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":810092,"timestamp":5788307142554,"id":109,"parentId":38,"tags":{},"startTime":1784596279389,"traceId":"ff99179654b74581"},{"name":"check-page","duration":907125,"timestamp":5788307045595,"id":38,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1784596279292,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":779390,"timestamp":5788307173498,"id":112,"parentId":23,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":919025,"timestamp":5788307033907,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1784596279280,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":900780,"timestamp":5788307060965,"id":79,"parentId":33,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":917621,"timestamp":5788307044245,"id":33,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":795075,"timestamp":5788307173590,"id":115,"parentId":62,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":917369,"timestamp":5788307051366,"id":62,"parentId":19,"tags":{"page":"/messages"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":803968,"timestamp":5788307173616,"id":117,"parentId":64,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":925810,"timestamp":5788307051840,"id":64,"parentId":19,"tags":{"page":"/nodes"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":812071,"timestamp":5788307173632,"id":118,"parentId":66,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":931871,"timestamp":5788307053901,"id":66,"parentId":19,"tags":{"page":"/providers"},"startTime":1784596279300,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":821171,"timestamp":5788307173647,"id":119,"parentId":67,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":940701,"timestamp":5788307054192,"id":67,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1784596279300,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":829612,"timestamp":5788307173660,"id":120,"parentId":68,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":948858,"timestamp":5788307054479,"id":68,"parentId":19,"tags":{"page":"/servers"},"startTime":1784596279301,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":840173,"timestamp":5788307173670,"id":121,"parentId":69,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":959282,"timestamp":5788307054640,"id":69,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1784596279301,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":846813,"timestamp":5788307173685,"id":122,"parentId":71,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":964952,"timestamp":5788307055615,"id":71,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1784596279302,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":867416,"timestamp":5788307173700,"id":123,"parentId":72,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"}]
|
|
2
|
+
[{"name":"check-page","duration":985625,"timestamp":5788307055811,"id":72,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1784596279302,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":897898,"timestamp":5788307173710,"id":124,"parentId":73,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1015496,"timestamp":5788307056205,"id":73,"parentId":19,"tags":{"page":"/tasks"},"startTime":1784596279302,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1006000,"timestamp":5788307065846,"id":93,"parentId":50,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1022302,"timestamp":5788307049586,"id":50,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":913310,"timestamp":5788307173576,"id":114,"parentId":60,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1035892,"timestamp":5788307051089,"id":60,"parentId":19,"tags":{"page":"/logs"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":913613,"timestamp":5788307173560,"id":113,"parentId":59,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1036332,"timestamp":5788307050884,"id":59,"parentId":19,"tags":{"page":"/login"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":943245,"timestamp":5788307173726,"id":125,"parentId":65,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1064971,"timestamp":5788307052120,"id":65,"parentId":19,"tags":{"page":"/"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":950123,"timestamp":5788307173605,"id":116,"parentId":63,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1072189,"timestamp":5788307051614,"id":63,"parentId":19,"tags":{"page":"/node"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1078625,"timestamp":5788307060386,"id":76,"parentId":29,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1095979,"timestamp":5788307043139,"id":29,"parentId":19,"tags":{"page":"/api/anet/providers/probe-results"},"startTime":1784596279289,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1145184,"timestamp":5788307061167,"id":80,"parentId":34,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1162048,"timestamp":5788307044396,"id":34,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1044574,"timestamp":5788307177172,"id":126,"parentId":70,"tags":{},"startTime":1784596279423,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1166942,"timestamp":5788307054885,"id":70,"parentId":19,"tags":{"page":"/settings"},"startTime":1784596279301,"traceId":"ff99179654b74581"},{"name":"static-check","duration":1194899,"timestamp":5788307026987,"id":19,"parentId":1,"tags":{},"startTime":1784596279273,"traceId":"ff99179654b74581"},{"name":"write-routes-manifest","duration":649,"timestamp":5788308241590,"id":128,"parentId":1,"tags":{},"startTime":1784596280488,"traceId":"ff99179654b74581"},{"name":"load-dotenv","duration":59,"timestamp":5788308257785,"id":131,"parentId":130,"tags":{},"startTime":1784596280504,"traceId":"ff99179654b74581"},{"name":"run-export-path-map","duration":903,"timestamp":5788308270639,"id":132,"parentId":130,"tags":{},"startTime":1784596280517,"traceId":"ff99179654b74581"},{"name":"next-export","duration":920872,"timestamp":5788308255929,"id":130,"parentId":1,"tags":{},"startTime":1784596280502,"traceId":"ff99179654b74581"},{"name":"move-exported-app-not-found-","duration":8278,"timestamp":5788309183196,"id":133,"parentId":129,"tags":{},"startTime":1784596281429,"traceId":"ff99179654b74581"},{"name":"move-exported-app-global-error-","duration":11660,"timestamp":5788309191652,"id":134,"parentId":129,"tags":{},"startTime":1784596281438,"traceId":"ff99179654b74581"},{"name":"static-generation","duration":973577,"timestamp":5788308247420,"id":129,"parentId":1,"tags":{},"startTime":1784596280494,"traceId":"ff99179654b74581"},{"name":"write-routes-manifest","duration":478,"timestamp":5788309221348,"id":135,"parentId":1,"tags":{},"startTime":1784596281468,"traceId":"ff99179654b74581"},{"name":"print-tree-view","duration":6261,"timestamp":5788309246705,"id":136,"parentId":1,"tags":{},"startTime":1784596281493,"traceId":"ff99179654b74581"},{"name":"write-route-bundle-stats","duration":20680,"timestamp":5788309253081,"id":137,"parentId":1,"tags":{},"startTime":1784596281499,"traceId":"ff99179654b74581"},{"name":"telemetry-flush","duration":16345,"timestamp":5788309273807,"id":138,"parentId":1,"tags":{},"startTime":1784596281520,"traceId":"ff99179654b74581"},{"name":"next-build","duration":25242491,"timestamp":5788284047719,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784596256294,"traceId":"ff99179654b74581"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":8996895,"timestamp":5788284361787,"id":14,"parentId":1,"tags":{},"startTime":1784596256608,"traceId":"ff99179654b74581"},{"name":"turbopack-build-events","duration":100,"timestamp":5788284719557,"id":15,"parentId":1,"tags":{},"startTime":1784596256966,"traceId":"ff99179654b74581"},{"name":"run-typescript","duration":13362616,"timestamp":5788293370018,"id":16,"parentId":1,"tags":{},"startTime":1784596265616,"traceId":"ff99179654b74581"},{"name":"static-check","duration":1194899,"timestamp":5788307026987,"id":19,"parentId":1,"tags":{},"startTime":1784596279273,"traceId":"ff99179654b74581"},{"name":"static-generation","duration":973577,"timestamp":5788308247420,"id":129,"parentId":1,"tags":{},"startTime":1784596280494,"traceId":"ff99179654b74581"},{"name":"telemetry-flush","duration":16345,"timestamp":5788309273807,"id":138,"parentId":1,"tags":{},"startTime":1784596281520,"traceId":"ff99179654b74581"},{"name":"next-build","duration":25242491,"timestamp":5788284047719,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784596256294,"traceId":"ff99179654b74581"}]
|
|
@@ -7,6 +7,7 @@ import { timeAgo } from './utils';
|
|
|
7
7
|
import { AliasAvatar } from './AliasAvatar';
|
|
8
8
|
import { useHasDraft } from '../lib/chat-drafts';
|
|
9
9
|
import { NodeSettingsPanel } from './NodeSettingsPanel';
|
|
10
|
+
import { t } from '../lib/ui-lang';
|
|
10
11
|
|
|
11
12
|
interface AgentCardProps {
|
|
12
13
|
session: Session;
|
|
@@ -78,7 +79,7 @@ function AgentCardInner({ session: s, hasSse, sseCount, onChat, unreadCount = 0
|
|
|
78
79
|
<AliasAvatar alias={s.alias} size={22} />
|
|
79
80
|
{unreadCount > 0 && (
|
|
80
81
|
<span
|
|
81
|
-
aria-label={`${unreadCount}
|
|
82
|
+
aria-label={t(`${unreadCount} 条未读`, `${unreadCount} unread`)}
|
|
82
83
|
className="absolute -top-1.5 -right-2 min-w-[16px] h-4 px-1 rounded-full bg-red-500 text-white text-[9px] font-semibold leading-4 text-center ring-2 ring-[#161618]"
|
|
83
84
|
>
|
|
84
85
|
{unreadCount > 99 ? '99+' : unreadCount}
|
|
@@ -86,7 +87,7 @@ function AgentCardInner({ session: s, hasSse, sseCount, onChat, unreadCount = 0
|
|
|
86
87
|
)}
|
|
87
88
|
</span>
|
|
88
89
|
<span className="font-semibold text-white truncate text-sm" title={s.alias}>{s.alias}</span>
|
|
89
|
-
{hasDraft && <span className="shrink-0 text-[9px] text-red-400/90" aria-label=
|
|
90
|
+
{hasDraft && <span className="shrink-0 text-[9px] text-red-400/90" aria-label={t('有未发送草稿', 'Unsent draft')}>{t('[草稿]', '[draft]')}</span>}
|
|
90
91
|
<span className={`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${cfg.dot} ${hasSse && s.status === 'working' ? 'animate-pulse' : ''}`} />
|
|
91
92
|
</div>
|
|
92
93
|
<div className="flex items-center gap-1 shrink-0">
|
|
@@ -4,6 +4,7 @@ import { useState, useCallback } from 'react';
|
|
|
4
4
|
import { useChatUnread } from '../lib/chat-unread';
|
|
5
5
|
import { useHasDraft } from '../lib/chat-drafts';
|
|
6
6
|
import { TaskChatPanel } from './TaskChatPanel';
|
|
7
|
+
import { t } from '../lib/ui-lang';
|
|
7
8
|
|
|
8
9
|
interface CommandCenterProps {
|
|
9
10
|
/** Currently open chat tabs */
|
|
@@ -107,7 +108,7 @@ export function CommandCenter({ tabs, activeTab, onOpenTab, onCloseTab, onSetAct
|
|
|
107
108
|
function TabDraftMark({ alias }: { alias: string }) {
|
|
108
109
|
const hasDraft = useHasDraft(alias);
|
|
109
110
|
if (!hasDraft) return null;
|
|
110
|
-
return <span className="text-[9px] text-red-400/90 shrink-0">[草稿]</span>;
|
|
111
|
+
return <span className="text-[9px] text-red-400/90 shrink-0">{t('[草稿]', '[draft]')}</span>;
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
/** Inline chat without the panel chrome (used inside CommandCenter tabs) */
|
|
@@ -67,7 +67,7 @@ function ChatImage({ src, alt, thumbClass, onOpen }: { src: string; alt?: string
|
|
|
67
67
|
if (state === 'error') {
|
|
68
68
|
return (
|
|
69
69
|
<span className={`${thumbClass} flex items-center justify-center bg-black/20 border border-[var(--border)] text-[10px] text-[var(--fg-dim)]`}>
|
|
70
|
-
图片加载失败
|
|
70
|
+
{t('图片加载失败', 'Image failed to load')}
|
|
71
71
|
</span>
|
|
72
72
|
);
|
|
73
73
|
}
|
|
@@ -75,7 +75,7 @@ function ChatImage({ src, alt, thumbClass, onOpen }: { src: string; alt?: string
|
|
|
75
75
|
<button
|
|
76
76
|
type="button"
|
|
77
77
|
onClick={() => onOpen(src)}
|
|
78
|
-
aria-label={alt || '查看大图'}
|
|
78
|
+
aria-label={alt || t('查看大图', 'View full image')}
|
|
79
79
|
className={`relative block overflow-hidden ${state === 'loading' ? 'animate-pulse bg-[var(--bg-elevated)]' : ''} ${thumbClass}`}
|
|
80
80
|
>
|
|
81
81
|
<img
|
|
@@ -144,7 +144,7 @@ function ImageLightbox({ url, onClose, opener }: { url: string; onClose: () => v
|
|
|
144
144
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
145
145
|
}, []); // opener/onCloseRef are stable for one open
|
|
146
146
|
return (
|
|
147
|
-
<div ref={dialogRef} className="fixed inset-0 z-[100] flex items-center justify-center bg-black/85" onClick={onClose} role="dialog" aria-modal="true" aria-label=
|
|
147
|
+
<div ref={dialogRef} className="fixed inset-0 z-[100] flex items-center justify-center bg-black/85" onClick={onClose} role="dialog" aria-modal="true" aria-label={t('图片预览', 'Image preview')}>
|
|
148
148
|
{!loaded && <div className="absolute h-6 w-6 animate-spin rounded-full border-2 border-white/30 border-t-white" />}
|
|
149
149
|
<img
|
|
150
150
|
src={url}
|
|
@@ -159,9 +159,9 @@ function ImageLightbox({ url, onClose, opener }: { url: string; onClose: () => v
|
|
|
159
159
|
onClick={(e) => e.stopPropagation()}
|
|
160
160
|
className="absolute right-12 top-3 text-[11px] text-white/70 underline hover:text-white"
|
|
161
161
|
>
|
|
162
|
-
新标签打开
|
|
162
|
+
{t('新标签打开', 'Open in new tab')}
|
|
163
163
|
</a>
|
|
164
|
-
<button onClick={onClose} aria-label=
|
|
164
|
+
<button onClick={onClose} aria-label={t('关闭预览', 'Close preview')} className="absolute right-2 top-2 flex h-8 w-8 items-center justify-center text-lg text-white/80 hover:text-white">
|
|
165
165
|
×
|
|
166
166
|
</button>
|
|
167
167
|
</div>
|
|
@@ -252,6 +252,7 @@ import { useNetworkId } from '../lib/network-context';
|
|
|
252
252
|
import { markChatRead } from '../lib/chat-unread';
|
|
253
253
|
import { readDraft, writeDraft } from '../lib/chat-drafts';
|
|
254
254
|
import { formatWeChatTime } from '../lib/time';
|
|
255
|
+
import { t } from '../lib/ui-lang';
|
|
255
256
|
|
|
256
257
|
/* Loop R14 (气泡子树稳定性): the renderer map used to be an OBJECT LITERAL
|
|
257
258
|
OF INLINE ARROWS inside MarkdownContent's JSX — every render produced new
|
|
@@ -376,7 +377,7 @@ function CollapsibleText({ children }: { children: React.ReactNode }) {
|
|
|
376
377
|
onClick={() => setExpanded(e => !e)}
|
|
377
378
|
className="mt-1 text-[12px] font-medium text-cyan-400 hover:text-cyan-300"
|
|
378
379
|
>
|
|
379
|
-
{expanded ? '收起 ⌃' : '展开全文 ⌄'}
|
|
380
|
+
{expanded ? t('收起 ⌃', 'Collapse ⌃') : t('展开全文 ⌄', 'Show full text ⌄')}
|
|
380
381
|
</button>
|
|
381
382
|
)}
|
|
382
383
|
</div>
|
|
@@ -946,7 +947,9 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
|
|
|
946
947
|
const chatEvents: ChatEvent[] = messages
|
|
947
948
|
.flatMap((task): ChatEvent[] => {
|
|
948
949
|
const events: ChatEvent[] = [{ kind: 'task', task, at: task.created_at }];
|
|
949
|
-
|
|
950
|
+
// R19: a FAILED send stores its error in `result` — that must not
|
|
951
|
+
// masquerade as an agent reply bubble; the red ! badge carries it.
|
|
952
|
+
if (task.result && task.status !== 'failed') events.push({ kind: 'reply', task, at: task.completed_at || task.created_at });
|
|
950
953
|
return events;
|
|
951
954
|
})
|
|
952
955
|
.sort((a, b) => {
|
|
@@ -1002,22 +1005,22 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
|
|
|
1002
1005
|
else if (e.key === 'Enter' && e.shiftKey) { e.preventDefault(); stepMatch(1); }
|
|
1003
1006
|
else if (e.key === 'Enter') { e.preventDefault(); stepMatch(-1); }
|
|
1004
1007
|
}}
|
|
1005
|
-
placeholder=
|
|
1008
|
+
placeholder={t('搜索会话…', 'Search conversation…')}
|
|
1006
1009
|
className="min-w-0 flex-1 bg-transparent text-xs text-[var(--fg)] placeholder-[var(--fg-dim)] focus:outline-none"
|
|
1007
1010
|
/>
|
|
1008
1011
|
<span className="shrink-0 text-[10px] tabular-nums text-[var(--fg-dim)]">
|
|
1009
|
-
{searchMatches.length ? `${Math.min(searchIdx, searchMatches.length - 1) + 1}/${searchMatches.length}` : searchQuery.trim() ? '0 条' : `${chatEvents.length}
|
|
1012
|
+
{searchMatches.length ? `${Math.min(searchIdx, searchMatches.length - 1) + 1}/${searchMatches.length}` : searchQuery.trim() ? t('0 条', '0 found') : t(`${chatEvents.length} 条内`, `in ${chatEvents.length}`)}
|
|
1010
1013
|
</span>
|
|
1011
|
-
<button type="button" onClick={() => stepMatch(-1)} aria-label=
|
|
1012
|
-
<button type="button" onClick={() => stepMatch(1)} aria-label=
|
|
1013
|
-
<button type="button" onClick={closeSearch} aria-label=
|
|
1014
|
+
<button type="button" onClick={() => stepMatch(-1)} aria-label={t('上一条(更早)', 'Previous (older)')} className="shrink-0 rounded px-1 text-[var(--fg-dim)] hover:text-cyan-300">↑</button>
|
|
1015
|
+
<button type="button" onClick={() => stepMatch(1)} aria-label={t('下一条(更新)', 'Next (newer)')} className="shrink-0 rounded px-1 text-[var(--fg-dim)] hover:text-cyan-300">↓</button>
|
|
1016
|
+
<button type="button" onClick={closeSearch} aria-label={t('关闭搜索', 'Close search')} className="shrink-0 rounded px-1 text-[var(--fg-dim)] hover:text-[var(--fg)]">×</button>
|
|
1014
1017
|
</div>
|
|
1015
1018
|
) : (
|
|
1016
1019
|
<div className="sticky top-0 z-20 flex justify-end pointer-events-none -mb-8">
|
|
1017
1020
|
<button
|
|
1018
1021
|
type="button"
|
|
1019
1022
|
onClick={() => { setSearchOpen(true); setTimeout(() => searchInputRef.current?.focus(), 50); }}
|
|
1020
|
-
aria-label=
|
|
1023
|
+
aria-label={t('搜索会话', 'Search conversation')}
|
|
1021
1024
|
className="pointer-events-auto inline-flex min-h-[40px] min-w-[40px] items-center justify-center rounded-full border border-[var(--border)] bg-[var(--bg-elevated)]/80 text-[var(--fg-dim)] shadow hover:text-cyan-300 sm:min-h-0 sm:min-w-0 sm:p-1.5"
|
|
1022
1025
|
>
|
|
1023
1026
|
<svg className="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
|
@@ -1129,7 +1132,16 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
|
|
|
1129
1132
|
{sepEl}
|
|
1130
1133
|
<div className="space-y-1.5 sm:space-y-2">
|
|
1131
1134
|
{/* Outgoing task — labeled with origin so peer-forwarded tasks are obvious */}
|
|
1132
|
-
<div className="flex justify-end" data-ev={`${m.task_id}:task`}>
|
|
1135
|
+
<div className="flex items-center justify-end gap-1.5" data-ev={`${m.task_id}:task`}>
|
|
1136
|
+
{m.status === 'failed' && fromUser && (
|
|
1137
|
+
<span
|
|
1138
|
+
title={(m.result || '').replace(/^❌\s*/, '') || t('发送失败', 'Send failed')}
|
|
1139
|
+
aria-label={t('发送失败', 'Send failed')}
|
|
1140
|
+
className="flex h-[18px] w-[18px] shrink-0 cursor-help items-center justify-center rounded-full bg-red-500 text-[11px] font-bold leading-none text-white"
|
|
1141
|
+
>
|
|
1142
|
+
!
|
|
1143
|
+
</span>
|
|
1144
|
+
)}
|
|
1133
1145
|
<div title={m.created_at} className={`max-w-[92%] sm:max-w-[min(85%,56ch)] bg-cyan-500/8 border border-cyan-500/15 rounded-2xl rounded-br-md px-3 py-2.5 sm:px-4 shadow-sm ${currentMatchKey === `${m.task_id}:task` ? 'ring-2 ring-yellow-400/60' : ''}`}>
|
|
1134
1146
|
<div className="flex items-center gap-2 mb-1">
|
|
1135
1147
|
<span className={`text-[10px] font-medium ${fromUser ? 'text-cyan-400' : 'text-purple-300'}`}>{senderLabel}</span>
|
|
@@ -1146,7 +1158,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
|
|
|
1146
1158
|
optimistic bubble is still in flight; tap-to-resend
|
|
1147
1159
|
on failure (same bubble, no retyping). */}
|
|
1148
1160
|
{m.task_id.startsWith('tmp-') && m.status !== 'failed' && (
|
|
1149
|
-
<span aria-label=
|
|
1161
|
+
<span aria-label={t('发送中', 'Sending')} className="inline-block h-3 w-3 animate-spin rounded-full border-2 border-cyan-500/30 border-t-cyan-400" />
|
|
1150
1162
|
)}
|
|
1151
1163
|
{m.status === 'failed' && fromUser && (
|
|
1152
1164
|
<button
|
|
@@ -1154,7 +1166,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
|
|
|
1154
1166
|
onClick={() => retrySend(m)}
|
|
1155
1167
|
className="inline-flex items-center gap-1 rounded-md border border-red-500/40 bg-red-500/10 px-1.5 py-0.5 text-[10px] font-medium text-red-300 hover:bg-red-500/20"
|
|
1156
1168
|
>
|
|
1157
|
-
<span aria-hidden>↻</span> 重发
|
|
1169
|
+
<span aria-hidden>↻</span> {t('重发', 'Resend')}
|
|
1158
1170
|
</button>
|
|
1159
1171
|
)}
|
|
1160
1172
|
{senderBadge}
|
|
@@ -1191,7 +1203,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
|
|
|
1191
1203
|
}}
|
|
1192
1204
|
className="pointer-events-auto flex items-center gap-1 rounded-full border border-cyan-500/30 bg-[var(--bg-elevated)] px-3 py-1 text-[11px] text-cyan-300 shadow-lg shadow-black/40 hover:bg-cyan-500/10"
|
|
1193
1205
|
>
|
|
1194
|
-
↓ {newBelow}
|
|
1206
|
+
↓ {t(`${newBelow} 条新消息`, `${newBelow} new message${newBelow > 1 ? 's' : ''}`)}
|
|
1195
1207
|
</button>
|
|
1196
1208
|
</div>
|
|
1197
1209
|
)}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
// Loop R18 (R3 i18n 还债, scoped): the WeChat-loop rounds introduced
|
|
4
|
+
// user-visible Chinese strings (pill, drafts, search, lightbox, retry).
|
|
5
|
+
// English-locale users saw mixed-language chrome. All call sites render
|
|
6
|
+
// only after client interaction/data (never in SSR HTML), so a plain
|
|
7
|
+
// navigator.language check is hydration-safe here.
|
|
8
|
+
export function isZh(): boolean {
|
|
9
|
+
return typeof navigator !== 'undefined' && (navigator.language || '').toLowerCase().startsWith('zh');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function t(zh: string, en: string): string {
|
|
13
|
+
return isZh() ? zh : en;
|
|
14
|
+
}
|
package/app/nodes/page.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import { useCollapsibleSearch } from '../components/CollapsibleSearch';
|
|
|
14
14
|
import type { Session } from '../components/types';
|
|
15
15
|
import { SESSION_STATUS_CHIP_CLASS as STATUS_COLORS } from '../lib/status';
|
|
16
16
|
import { useChatUnread } from '../lib/chat-unread';
|
|
17
|
+
import { t } from '../lib/ui-lang';
|
|
17
18
|
|
|
18
19
|
/** Round 81: shorten long server hostnames (Alibaba `iZ…oyZ` style)
|
|
19
20
|
* for table display. Returns the original string unchanged when ≤12
|
|
@@ -30,7 +31,7 @@ type SessionRow = Session & { online: boolean };
|
|
|
30
31
|
function DraftMark({ alias }: { alias: string }) {
|
|
31
32
|
const hasDraft = useHasDraft(alias);
|
|
32
33
|
if (!hasDraft) return null;
|
|
33
|
-
return <span className="shrink-0 text-[9px] text-red-400/90" aria-label=
|
|
34
|
+
return <span className="shrink-0 text-[9px] text-red-400/90" aria-label={t('有未发送草稿', 'Unsent draft')}>{t('[草稿]', '[draft]')}</span>;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
export default function NodesPage() {
|
|
@@ -221,7 +222,7 @@ export default function NodesPage() {
|
|
|
221
222
|
<span className="relative inline-flex shrink-0">
|
|
222
223
|
<AliasAvatar alias={s.alias} size={36} />
|
|
223
224
|
{unreadCount(s.alias) > 0 && (
|
|
224
|
-
<span aria-label={`${unreadCount(s.alias)}
|
|
225
|
+
<span aria-label={t(`${unreadCount(s.alias)} 条未读`, `${unreadCount(s.alias)} unread`)} className="absolute -top-1 -right-1.5 min-w-[16px] h-4 px-1 rounded-full bg-red-500 text-white text-[9px] font-semibold leading-4 text-center ring-2 ring-[#161618]">
|
|
225
226
|
{unreadCount(s.alias) > 99 ? '99+' : unreadCount(s.alias)}
|
|
226
227
|
</span>
|
|
227
228
|
)}
|
|
@@ -311,7 +312,7 @@ export default function NodesPage() {
|
|
|
311
312
|
<span className="relative inline-flex shrink-0">
|
|
312
313
|
<AliasAvatar alias={s.alias} size={20} />
|
|
313
314
|
{unreadCount(s.alias) > 0 && (
|
|
314
|
-
<span aria-label={`${unreadCount(s.alias)}
|
|
315
|
+
<span aria-label={t(`${unreadCount(s.alias)} 条未读`, `${unreadCount(s.alias)} unread`)} className="absolute -top-1.5 -right-2 min-w-[15px] h-[15px] px-1 rounded-full bg-red-500 text-white text-[9px] font-semibold leading-[15px] text-center">
|
|
315
316
|
{unreadCount(s.alias) > 99 ? '99+' : unreadCount(s.alias)}
|
|
316
317
|
</span>
|
|
317
318
|
)}
|
package/package.json
CHANGED