@witty-ai/skill-insight 0.4.0-beta → 0.5.0-beta
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/.env.example +50 -5
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/routes-manifest.json +6 -0
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/auth/organization/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route.js +7 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/config/create/route.js +2 -2
- package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js +1 -1
- package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +3 -3
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/rejudge/route.js +1 -1
- package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/session/route.js +3 -3
- package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/upload/route.js +1 -1
- package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/details.html +1 -1
- package/.next/standalone/.next/server/app/details.rsc +4 -4
- package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +4 -4
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skills.html +1 -1
- package/.next/standalone/.next/server/app/skills.rsc +4 -4
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_auth_organization_route_actions_f58710b7.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +2 -41
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f42faeee.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__5d576168._.js → [root-of-the-server]__40353d98._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__89851212._.js → [root-of-the-server]__480fcd92._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__28978655._.js → [root-of-the-server]__48f8fbcb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__a5ef0b61._.js → [root-of-the-server]__49921b2a._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__317833f9._.js → [root-of-the-server]__593be3d6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ca101543._.js → [root-of-the-server]__5e9ff641._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__90641614._.js → [root-of-the-server]__66cc6ff2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__cda1e286._.js → [root-of-the-server]__9889bdc8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__42ba97b6._.js → [root-of-the-server]__9905ca7a._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ab7cc4a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7bb97139._.js → [root-of-the-server]__9d6b7d48._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__6b8b9bb9._.js → [root-of-the-server]__b8edc8c6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b9972e88._.js → [root-of-the-server]__d691ecb0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__52851239._.js → [root-of-the-server]__e5ddfd15._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9630dedf._.js → [root-of-the-server]__f72f330e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__99ab66d7._.js → [root-of-the-server]__f843e085._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d424fa04._.js → [root-of-the-server]__fd69d276._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_7688d7cd._.js → _049876f0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_72a74a0c._.js → _09546b95._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_cf1f3d2c._.js → _b121f1ae._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_f2653232._.js → node_modules_039c6a11._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_da87f0e3._.js → node_modules_0d3530cd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_afb1ecef._.js → node_modules_0e883565._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_8d9e56b7._.js → node_modules_11dbf165._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_76d6c533._.js → node_modules_2041c122._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_b007145b._.js → node_modules_235267bb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_11d81adf._.js → node_modules_25dfb0ba._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_4ea9b27b._.js → node_modules_2b12c669._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_cc19e85c._.js → node_modules_32996880._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_62621b34._.js → node_modules_35885fe9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed4150ad._.js → node_modules_38a95353._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_f596a14c._.js → node_modules_3a317c51._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_fddab329._.js → node_modules_44966ab2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_e272ac31._.js → node_modules_53af751a._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_abf4f826._.js → node_modules_5f539891._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_86b6ffa4._.js → node_modules_60402210._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3769cd60._.js → node_modules_60eccfb6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_fdf808cf._.js → node_modules_632c098c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_442994dc._.js → node_modules_6c42f75c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_5b6dbbc3._.js → node_modules_6fbe276d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_6716e25d._.js → node_modules_740e9d59._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed1f1845._.js → node_modules_7a3d551c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_4f41f172._.js → node_modules_861cb9cf._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2aaea4ea._.js → node_modules_8a892761._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3964c298._.js → node_modules_a5a4946e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3d9afa91._.js → node_modules_a712c937._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_330b9e3c._.js → node_modules_a8c276dd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ad69a9e4._.js → node_modules_acc9d529._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_8301968d._.js → node_modules_ad07ab39._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_1d88c7cc._.js → node_modules_b38efa22._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_e20e8c2a._.js → node_modules_b4ef036d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2e206c58._.js → node_modules_b6bad701._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_c90fa812._.js → node_modules_b9810024._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_db8af6e3._.js → node_modules_b9ad808d._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_7287189a._.js → node_modules_bc287d9f._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2e38bc5c._.js → node_modules_c6469d93._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_c657890f._.js → node_modules_c704e802._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_b8803ba6._.js → node_modules_cda46cfc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_aa6da06c._.js → node_modules_cf171d0c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2d9e03d1._.js → node_modules_e8927fc2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +1 -0
- package/.next/standalone/.next/static/chunks/4071dbec4cf7e72e.js +109 -0
- package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +1 -0
- package/.next/standalone/.next/static/chunks/a87b5e84254095a5.js +1 -0
- package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +1 -0
- package/.next/standalone/.next/static/chunks/{6d12c79948c7e0ac.js → dc59a07a8f327b40.js} +1 -1
- package/.next/standalone/next.config.ts +14 -2
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/opencode_plugin.ts +257 -36
- package/.next/static/chunks/1e782a49beaf489c.js +1 -0
- package/.next/static/chunks/4071dbec4cf7e72e.js +109 -0
- package/.next/static/chunks/67bd1a5de2195779.js +1 -0
- package/.next/static/chunks/a87b5e84254095a5.js +1 -0
- package/.next/static/chunks/c6bd2818656b1f20.css +1 -0
- package/.next/static/chunks/{6d12c79948c7e0ac.js → dc59a07a8f327b40.js} +1 -1
- package/package.json +1 -1
- package/scripts/opencode_plugin.ts +257 -36
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fceba52._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13132848._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__30769f6e._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__426bc4ab._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__610d08bc._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__75e3674c._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__761462f8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9aa700a4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b7ad2649._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c00180dd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ed8f9b78._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__082c32a2._.js +0 -3
- package/.next/standalone/.next/static/chunks/222a937a6c859036.js +0 -1
- package/.next/standalone/.next/static/chunks/2a3dd49367e2c198.js +0 -1
- package/.next/standalone/.next/static/chunks/3e33f7adc10a38d3.js +0 -109
- package/.next/standalone/.next/static/chunks/428e6cf64b115e9d.css +0 -1
- package/.next/standalone/.next/static/chunks/62129f27f303a5ba.js +0 -1
- package/.next/static/chunks/222a937a6c859036.js +0 -1
- package/.next/static/chunks/2a3dd49367e2c198.js +0 -1
- package/.next/static/chunks/3e33f7adc10a38d3.js +0 -109
- package/.next/static/chunks/428e6cf64b115e9d.css +0 -1
- package/.next/static/chunks/62129f27f303a5ba.js +0 -1
- /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → H581Rok68JtPV4bAVVH3l}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → H581Rok68JtPV4bAVVH3l}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → H581Rok68JtPV4bAVVH3l}/_ssgManifest.js +0 -0
- /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → H581Rok68JtPV4bAVVH3l}/_buildManifest.js +0 -0
- /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → H581Rok68JtPV4bAVVH3l}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → H581Rok68JtPV4bAVVH3l}/_ssgManifest.js +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[22965,e=>e.a(async(t,r)=>{try{var s=e.i(98043),n=t([s]);async function a(e){let t=await o(e);return t&&t.activeConfigId&&t.configs.find(e=>e.id===t.activeConfigId)||null}async function o(e){let t={activeConfigId:null,configs:[]};if(!e)return t;try{let t=await s.db.findUserSettings(e);if(t?.settingsJson)return JSON.parse(t.settingsJson)}catch(e){console.error("Failed to load user settings:",e)}return t}async function i(e,t){let r=JSON.stringify(t);await s.db.upsertUserSettings(e,r)}[s]=n.then?(await n)():n,e.s(["getActiveConfig",()=>a,"getUserSettings",()=>o,"saveUserSettings",()=>i]),r()}catch(e){r(e)}},!1),46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},98043,e=>e.a(async(t,r)=>{try{let l;var s,n=e.i(97289),a=e.i(63021),o=e.i(86414),i=t([o]);[o]=i.then?(await i)():i,(0,n.config)();let u=e.g.prisma||new a.PrismaClient,d=(0,o.getDatabaseAdapter)(),c=process.env.DB_HOST?(l=(s=d).getClient())instanceof a.PrismaClient?l:{user:{findUnique:async e=>e.where?.apiKey?s.findUserByApiKey(e.where.apiKey):e.where?.username?s.findUserByUsername(e.where.username):null,findFirst:async e=>e.where?.username?s.findUserByUsername(e.where.username):null},skill:{findFirst:async e=>{let t=e.where?.name,r=e.where?.OR?.[0]?.user??e.where?.OR?.[1]?.user;return s.findSkill(t,r)},findMany:async e=>s.findSkills(e.where||{}),findUnique:async e=>s.findSkill(e.where?.name,e.where?.user),delete:async e=>(console.warn("[OpenGaussAdapter] skill.delete not fully implemented"),null)},skillVersion:{findFirst:async e=>e.where?.skillId?s.findLatestSkillVersion(e.where.skillId):null},config:{findMany:async e=>s.findConfigs(e.where||{})},session:{findUnique:async e=>e.where?.taskId?s.findSessionByTaskId(e.where.taskId):null,update:async e=>e.where?.id?s.updateSession(e.where.id,e.data):null,upsert:async e=>{let t=e.where?.taskId;return t?s.upsertSession(t,e.create,e.update):null}},execution:{findUnique:async e=>e.where?.id?s.findExecutionById(e.where.id):null,upsert:async e=>s.upsertExecution(e),findMany:async e=>s.findExecutions(e.where,e.orderBy)}}:u;e.s(["db",0,d,"prisma",0,c]),r()}catch(e){r(e)}},!1),81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},87769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},57764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},63242,e=>e.a(async(t,r)=>{try{var s=e.i(85765),n=e.i(98043),a=e.i(89171),o=t([s,n]);function i(e){if(e){if(void 0!==e.stringValue)return e.stringValue;if(void 0!==e.intValue)return parseInt(e.intValue);if(void 0!==e.doubleValue)return e.doubleValue;if(void 0!==e.boolValue)return e.boolValue;if(void 0!==e.arrayValue)return e.arrayValue.values?.map(e=>i(e))||[];if(void 0!==e.kvlistValue){let t={};for(let r of e.kvlistValue.values||[])t[r.key]=i(r.value);return t}}}async function l(e){try{let t,r=e.headers.get("x-witty-api-key");if(r){let e=await n.db.findUserByApiKey(r);e&&(t=e.username,console.log(`[OTel Logs] Authenticated User: ${t}`))}let o=e.headers.get("content-type")||"";if(!o.includes("application/json"))return console.warn(`[OTel Logs] Unsupported Content-Type: ${o}`),new a.NextResponse(JSON.stringify({error:"Only application/json is supported. Set OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/json"}),{status:415});let l=await e.json();if(!l.resourceLogs||!Array.isArray(l.resourceLogs))return console.log("[OTel Logs] Empty or missing resourceLogs"),a.NextResponse.json({status:"success",message:"No logs"});for(let e of(console.log(`[OTel Logs] Received ${l.resourceLogs.length} resourceLog(s)`),l.resourceLogs)){let r={};if(e.resource?.attributes)for(let t of e.resource.attributes)r[t.key]=i(t.value);let n=r["service.name"]||"unknown-service";for(let a of e.scopeLogs||[])for(let e of a.logRecords||[]){let a={};if(e.attributes)for(let t of e.attributes)a[t.key]=i(t.value);let o=a["event.name"]||e.body?.stringValue,l=a["session.id"]||r["session.id"]||r["service.instance.id"],u=a["user.id"]||r["user.id"],d=t||u||"anonymous";if(console.log(`[OTel Logs] Event: ${o} | Session: ${l} | User: ${d}`),!l){console.warn("[OTel Logs] No session.id found, skipping bridge.");continue}let c="cli-agent"===n||"claude-code"===n?"claudecode":n;if("user_prompt"===o)await (0,s.saveExecutionRecord)({task_id:l,query:a.prompt||"Claude Code Session",framework:c,user:d,timestamp:new Date}),console.log(`[OTel Logs] ✅ Saved user_prompt for session ${l}`);else if("api_request"===o){let e=parseInt(a.input_tokens||"0"),t=parseInt(a.output_tokens||"0"),r=parseInt(a.cache_read_tokens||"0"),n=parseInt(a.cache_creation_tokens||"0"),o=e+t+r+n,i=parseInt(a.duration_ms||"0"),u=parseFloat(a.cost_usd||"0");await (0,s.saveExecutionRecord)({task_id:l,model:a.model,tokens:o,latency:i/1e3,cost:u,framework:c,user:d}),console.log(`[OTel Logs] ✅ Saved api_request for session ${l}: model=${a.model}, tokens=${o}`)}else"tool_result"===o?console.log(`[OTel Logs] Tool: ${a.tool_name} | Success: ${a.success} | Duration: ${a.duration_ms}ms`):"api_error"===o&&console.warn(`[OTel Logs] ⚠️ API Error in session ${l}: ${a.error} (status: ${a.status_code})`)}}return a.NextResponse.json({status:"success"})}catch(e){return console.error("[OTel Logs] Handler Error:",e),a.NextResponse.json({status:"error",message:e.message},{status:500})}}async function u(){return new a.NextResponse(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, x-witty-api-key, baggage, traceparent, tracestate"}})}[s,n]=o.then?(await o)():o,e.s(["OPTIONS",()=>u,"POST",()=>l]),r()}catch(e){r(e)}},!1),75340,e=>e.a(async(t,r)=>{try{var s=e.i(47909),n=e.i(74017),a=e.i(60476),o=e.i(59756),i=e.i(61916),l=e.i(74677),u=e.i(69741),d=e.i(16795),c=e.i(87718),p=e.i(95169),f=e.i(47587),g=e.i(66012),h=e.i(70101),y=e.i(26937),x=e.i(10372),v=e.i(93695);e.i(52474);var w=e.i(220),m=e.i(63242),R=t([m]);[m]=R.then?(await R)():R;let k=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/otel/v1/logs/route",pathname:"/api/otel/v1/logs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/otel/v1/logs/route.ts",nextConfigOutput:"standalone",userland:m}),{workAsyncStorage:C,workUnitAsyncStorage:T,serverHooks:A}=k;function E(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:T})}async function O(e,t,r){k.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/otel/v1/logs/route";s=s.replace(/\/index$/,"")||"/";let a=await k.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:m,params:R,nextConfig:E,parsedUrl:O,isDraftMode:C,prerenderManifest:T,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:_,resolvedPathname:b,clientReferenceManifest:q,serverActionsManifest:N}=a,I=(0,u.normalizeAppPath)(s),P=!!(T.dynamicRoutes[I]||T.routes[b]),U=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,O,!1):t.end("This page could not be found"),null);if(P&&!C){let e=!!T.routes[b],t=T.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await U();throw new v.NoFallbackError}}let L=null;!P||k.isDev||C||(L=b,L="/index"===L?"/":L);let $=!0===k.isDev||!P,j=P&&!$;N&&q&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:q,serverActionsManifest:N});let H=e.method||"GET",V=(0,i.getTracer)(),D=V.getActiveScopeSpan(),M={params:R,prerenderManifest:T,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:$,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>k.onRequestError(e,t,s,n,A)},sharedContext:{buildId:m}},B=new d.NodeNextRequest(e),F=new d.NodeNextResponse(t),K=c.NextRequestAdapter.fromNodeNextRequest(B,(0,c.signalFromNodeResponse)(t));try{let a=async e=>k.handle(K,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=V.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${s}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),u=async o=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&S&&_&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await a(o);e.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=M.renderOpts.collectedTags;if(!P)return await (0,g.sendResponse)(B,F,s,M.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[x.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,n=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,A),t}},c=await k.handleResponse({req:e,nextConfig:E,cacheKey:L,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:_,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!P)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",S?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&P||p.delete(x.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(B,F,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};D?await u(D):await V.withPropagatedContext(e.headers,()=>V.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${s}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof v.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,A),P)throw t;return await (0,g.sendResponse)(B,F,new Response(null,{status:500})),null}}e.s(["handler",()=>O,"patchFetch",()=>E,"routeModule",()=>k,"serverHooks",()=>A,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>T]),r()}catch(e){r(e)}},!1)];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__9aa700a4._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[22965,e=>e.a(async(r,t)=>{try{var n=e.i(98043),s=r([n]);async function i(e){let r=await a(e);return r&&r.activeConfigId&&r.configs.find(e=>e.id===r.activeConfigId)||null}async function a(e){let r={activeConfigId:null,configs:[]};if(!e)return r;try{let r=await n.db.findUserSettings(e);if(r?.settingsJson)return JSON.parse(r.settingsJson)}catch(e){console.error("Failed to load user settings:",e)}return r}async function o(e,r){let t=JSON.stringify(r);await n.db.upsertUserSettings(e,t)}[n]=s.then?(await s)():s,e.s(["getActiveConfig",()=>i,"getUserSettings",()=>a,"saveUserSettings",()=>o]),t()}catch(e){t(e)}},!1),46786,(e,r,t)=>{r.exports=e.x("os",()=>require("os"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},66680,(e,r,t)=>{r.exports=e.x("node:crypto",()=>require("node:crypto"))},98043,e=>e.a(async(r,t)=>{try{let d;var n,s=e.i(97289),i=e.i(63021),a=e.i(86414),o=r([a]);[a]=o.then?(await o)():o,(0,s.config)();let l=e.g.prisma||new i.PrismaClient,u=(0,a.getDatabaseAdapter)(),c=process.env.DB_HOST?(d=(n=u).getClient())instanceof i.PrismaClient?d:{user:{findUnique:async e=>e.where?.apiKey?n.findUserByApiKey(e.where.apiKey):e.where?.username?n.findUserByUsername(e.where.username):null,findFirst:async e=>e.where?.username?n.findUserByUsername(e.where.username):null},skill:{findFirst:async e=>{let r=e.where?.name,t=e.where?.OR?.[0]?.user??e.where?.OR?.[1]?.user;return n.findSkill(r,t)},findMany:async e=>n.findSkills(e.where||{}),findUnique:async e=>n.findSkill(e.where?.name,e.where?.user),delete:async e=>(console.warn("[OpenGaussAdapter] skill.delete not fully implemented"),null)},skillVersion:{findFirst:async e=>e.where?.skillId?n.findLatestSkillVersion(e.where.skillId):null},config:{findMany:async e=>n.findConfigs(e.where||{})},session:{findUnique:async e=>e.where?.taskId?n.findSessionByTaskId(e.where.taskId):null,update:async e=>e.where?.id?n.updateSession(e.where.id,e.data):null,upsert:async e=>{let r=e.where?.taskId;return r?n.upsertSession(r,e.create,e.update):null}},execution:{findUnique:async e=>e.where?.id?n.findExecutionById(e.where.id):null,upsert:async e=>n.upsertExecution(e),findMany:async e=>n.findExecutions(e.where,e.orderBy)}}:l;e.s(["db",0,u,"prisma",0,c]),t()}catch(e){t(e)}},!1),81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},87769,(e,r,t)=>{r.exports=e.x("node:events",()=>require("node:events"))},57764,(e,r,t)=>{r.exports=e.x("node:url",()=>require("node:url"))},12714,(e,r,t)=>{r.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,r,t)=>{r.exports=e.x("node:path",()=>require("node:path"))},75054,e=>e.a(async(r,t)=>{try{var n=e.i(98043),s=r([n]);async function i(e,r,t,s,i){let a={taskId:e,label:r,query:t,user:s,model:i,startTime:Date.now(),interactions:[]};return await n.db.createSession({taskId:e,label:r,query:t,user:s,model:i,startTime:new Date(a.startTime),interactions:JSON.stringify([])}),a}async function a(e,r){let t=await n.db.findSessionByTaskId(e),s=[],i=Date.now(),a={};if(t){try{s=t.interactions?JSON.parse(t.interactions):[]}catch(r){console.error(`[ProxyStore] Failed to parse interactions for ${e}`,r),s=[]}i=t.startTime.getTime(),a={taskId:t.taskId,label:t.label,query:t.query,user:t.user,model:t.model,startTime:i,interactions:s}}else console.log(`[ProxyStore] Session ${e} not found in addToSession, creating new.`),a={taskId:e,startTime:i,interactions:[]},await n.db.createSession({taskId:e,startTime:new Date(i),interactions:JSON.stringify([])});return s.push(r),await n.db.updateSession(e,{interactions:JSON.stringify(s)}),a.interactions=s,a}async function o(e){let r=await n.db.findSessionByTaskId(e);return r?{taskId:r.taskId,label:r.label||void 0,query:r.query||void 0,user:r.user||void 0,model:r.model||void 0,startTime:r.startTime.getTime(),interactions:r.interactions?JSON.parse(r.interactions):[]}:null}async function d(e){let r=await n.db.findSessionByTaskId(e);return r?{taskId:r.taskId,label:r.label||void 0,query:r.query||void 0,user:r.user||void 0,model:r.model||void 0,startTime:r.startTime.getTime(),interactions:r.interactions?JSON.parse(r.interactions):[]}:null}[n]=s.then?(await s)():s,e.s(["addToSession",()=>a,"endSession",()=>o,"getSession",()=>d,"startSession",()=>i]),t()}catch(e){t(e)}},!1)];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__b7ad2649._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[22965,e=>e.a(async(r,n)=>{try{var s=e.i(98043),t=r([s]);async function i(e){let r=await a(e);return r&&r.activeConfigId&&r.configs.find(e=>e.id===r.activeConfigId)||null}async function a(e){let r={activeConfigId:null,configs:[]};if(!e)return r;try{let r=await s.db.findUserSettings(e);if(r?.settingsJson)return JSON.parse(r.settingsJson)}catch(e){console.error("Failed to load user settings:",e)}return r}async function o(e,r){let n=JSON.stringify(r);await s.db.upsertUserSettings(e,n)}[s]=t.then?(await t)():t,e.s(["getActiveConfig",()=>i,"getUserSettings",()=>a,"saveUserSettings",()=>o]),n()}catch(e){n(e)}},!1),46786,(e,r,n)=>{r.exports=e.x("os",()=>require("os"))},14747,(e,r,n)=>{r.exports=e.x("path",()=>require("path"))},54799,(e,r,n)=>{r.exports=e.x("crypto",()=>require("crypto"))},93695,(e,r,n)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},70406,(e,r,n)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,n)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,r,n)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,n)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,r,n)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},22734,(e,r,n)=>{r.exports=e.x("fs",()=>require("fs"))},66680,(e,r,n)=>{r.exports=e.x("node:crypto",()=>require("node:crypto"))},98043,e=>e.a(async(r,n)=>{try{let d;var s,t=e.i(97289),i=e.i(63021),a=e.i(86414),o=r([a]);[a]=o.then?(await o)():o,(0,t.config)();let l=e.g.prisma||new i.PrismaClient,p=(0,a.getDatabaseAdapter)(),u=process.env.DB_HOST?(d=(s=p).getClient())instanceof i.PrismaClient?d:{user:{findUnique:async e=>e.where?.apiKey?s.findUserByApiKey(e.where.apiKey):e.where?.username?s.findUserByUsername(e.where.username):null,findFirst:async e=>e.where?.username?s.findUserByUsername(e.where.username):null},skill:{findFirst:async e=>{let r=e.where?.name,n=e.where?.OR?.[0]?.user??e.where?.OR?.[1]?.user;return s.findSkill(r,n)},findMany:async e=>s.findSkills(e.where||{}),findUnique:async e=>s.findSkill(e.where?.name,e.where?.user),delete:async e=>(console.warn("[OpenGaussAdapter] skill.delete not fully implemented"),null)},skillVersion:{findFirst:async e=>e.where?.skillId?s.findLatestSkillVersion(e.where.skillId):null},config:{findMany:async e=>s.findConfigs(e.where||{})},session:{findUnique:async e=>e.where?.taskId?s.findSessionByTaskId(e.where.taskId):null,update:async e=>e.where?.id?s.updateSession(e.where.id,e.data):null,upsert:async e=>{let r=e.where?.taskId;return r?s.upsertSession(r,e.create,e.update):null}},execution:{findUnique:async e=>e.where?.id?s.findExecutionById(e.where.id):null,upsert:async e=>s.upsertExecution(e),findMany:async e=>s.findExecutions(e.where,e.orderBy)}}:l;e.s(["db",0,p,"prisma",0,u]),n()}catch(e){n(e)}},!1),81111,(e,r,n)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},87769,(e,r,n)=>{r.exports=e.x("node:events",()=>require("node:events"))},57764,(e,r,n)=>{r.exports=e.x("node:url",()=>require("node:url"))},12714,(e,r,n)=>{r.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,r,n)=>{r.exports=e.x("node:path",()=>require("node:path"))},6461,(e,r,n)=>{r.exports=e.x("zlib",()=>require("zlib"))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__c00180dd._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[22965,e=>e.a(async(r,n)=>{try{var s=e.i(98043),t=r([s]);async function i(e){let r=await a(e);return r&&r.activeConfigId&&r.configs.find(e=>e.id===r.activeConfigId)||null}async function a(e){let r={activeConfigId:null,configs:[]};if(!e)return r;try{let r=await s.db.findUserSettings(e);if(r?.settingsJson)return JSON.parse(r.settingsJson)}catch(e){console.error("Failed to load user settings:",e)}return r}async function o(e,r){let n=JSON.stringify(r);await s.db.upsertUserSettings(e,n)}[s]=t.then?(await t)():t,e.s(["getActiveConfig",()=>i,"getUserSettings",()=>a,"saveUserSettings",()=>o]),n()}catch(e){n(e)}},!1),46786,(e,r,n)=>{r.exports=e.x("os",()=>require("os"))},14747,(e,r,n)=>{r.exports=e.x("path",()=>require("path"))},54799,(e,r,n)=>{r.exports=e.x("crypto",()=>require("crypto"))},93695,(e,r,n)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},70406,(e,r,n)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,n)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,r,n)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,n)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,r,n)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},22734,(e,r,n)=>{r.exports=e.x("fs",()=>require("fs"))},66680,(e,r,n)=>{r.exports=e.x("node:crypto",()=>require("node:crypto"))},98043,e=>e.a(async(r,n)=>{try{let d;var s,t=e.i(97289),i=e.i(63021),a=e.i(86414),o=r([a]);[a]=o.then?(await o)():o,(0,t.config)();let l=e.g.prisma||new i.PrismaClient,p=(0,a.getDatabaseAdapter)(),u=process.env.DB_HOST?(d=(s=p).getClient())instanceof i.PrismaClient?d:{user:{findUnique:async e=>e.where?.apiKey?s.findUserByApiKey(e.where.apiKey):e.where?.username?s.findUserByUsername(e.where.username):null,findFirst:async e=>e.where?.username?s.findUserByUsername(e.where.username):null},skill:{findFirst:async e=>{let r=e.where?.name,n=e.where?.OR?.[0]?.user??e.where?.OR?.[1]?.user;return s.findSkill(r,n)},findMany:async e=>s.findSkills(e.where||{}),findUnique:async e=>s.findSkill(e.where?.name,e.where?.user),delete:async e=>(console.warn("[OpenGaussAdapter] skill.delete not fully implemented"),null)},skillVersion:{findFirst:async e=>e.where?.skillId?s.findLatestSkillVersion(e.where.skillId):null},config:{findMany:async e=>s.findConfigs(e.where||{})},session:{findUnique:async e=>e.where?.taskId?s.findSessionByTaskId(e.where.taskId):null,update:async e=>e.where?.id?s.updateSession(e.where.id,e.data):null,upsert:async e=>{let r=e.where?.taskId;return r?s.upsertSession(r,e.create,e.update):null}},execution:{findUnique:async e=>e.where?.id?s.findExecutionById(e.where.id):null,upsert:async e=>s.upsertExecution(e),findMany:async e=>s.findExecutions(e.where,e.orderBy)}}:l;e.s(["db",0,p,"prisma",0,u]),n()}catch(e){n(e)}},!1),81111,(e,r,n)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},87769,(e,r,n)=>{r.exports=e.x("node:events",()=>require("node:events"))},57764,(e,r,n)=>{r.exports=e.x("node:url",()=>require("node:url"))},12714,(e,r,n)=>{r.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,r,n)=>{r.exports=e.x("node:path",()=>require("node:path"))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__ed8f9b78._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},60721,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131);let e=(0,d.createContext)(void 0);function f({children:a}){let[f,g]=(0,d.useState)(null),[h,i]=(0,d.useState)(null),j=(0,c.useRouter)(),k=(0,c.usePathname)();return(0,d.useEffect)(()=>{let a=localStorage.getItem("user_id"),b=localStorage.getItem("api_key");a?(g(a),b&&i(b)):"/login"!==k&&j.push("/login")},[k,j]),(0,b.jsx)(e.Provider,{value:{user:f,apiKey:h,login:(a,b)=>{localStorage.setItem("user_id",a),g(a),b&&(localStorage.setItem("api_key",b),i(b)),j.push("/")},logout:()=>{localStorage.removeItem("user_id"),localStorage.removeItem("api_key"),g(null),i(null),j.push("/login")}},children:a})}function g(){let a=(0,d.useContext)(e);if(void 0===a)throw Error("useAuth must be used within an AuthProvider");return a}a.s(["AuthProvider",()=>f,"useAuth",()=>g])},18175,a=>{"use strict";var b=a.i(87924),c=a.i(60721);function d({children:a}){return(0,b.jsx)(c.AuthProvider,{children:a})}a.s(["Providers",()=>d])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__082c32a2._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,r)=>{t.exports=e.r(76562)},94690,e=>{"use strict";var t=e.i(43476),r=e.i(18566),o=e.i(71645);let u=(0,o.createContext)(void 0);function i({children:e}){let[i,l]=(0,o.useState)(null),[s,n]=(0,o.useState)(null),a=(0,r.useRouter)(),c=(0,r.usePathname)();return(0,o.useEffect)(()=>{let e=localStorage.getItem("user_id"),t=localStorage.getItem("api_key");e?(l(e),t&&n(t)):"/login"!==c&&a.push("/login")},[c,a]),(0,t.jsx)(u.Provider,{value:{user:i,apiKey:s,login:(e,t)=>{localStorage.setItem("user_id",e),l(e),t&&(localStorage.setItem("api_key",t),n(t)),a.push("/")},logout:()=>{localStorage.removeItem("user_id"),localStorage.removeItem("api_key"),l(null),n(null),a.push("/login")}},children:e})}function l(){let e=(0,o.useContext)(u);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}e.s(["AuthProvider",()=>i,"useAuth",()=>l])},1661,e=>{"use strict";var t=e.i(43476),r=e.i(94690);function o({children:e}){return(0,t.jsx)(r.AuthProvider,{children:e})}e.s(["Providers",()=>o])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94542,e=>{"use strict";var r=e.i(43476),t=e.i(94690),i=e.i(18566),n=e.i(71645);function a(){let[e,a]=(0,n.useState)(""),[l,o]=(0,n.useState)(""),{login:s}=(0,t.useAuth)(),c=(0,i.useRouter)(),d=async r=>{if(r.preventDefault(),o(""),!e.trim())return void o("请输入邮箱地址");try{let r=await fetch("/api/auth/apikey",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.trim()})}),t=await r.json();r.ok?(s(t.username,t.apiKey),c.push("/")):o(t.error||"登录失败,请重试")}catch(e){console.error(e),o("网络错误,请检查连接")}};return(0,r.jsx)("div",{className:"login-container",children:(0,r.jsxs)("div",{className:"login-box",children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"1.5rem",marginBottom:"2.5rem"},children:[(0,r.jsx)("div",{style:{background:"linear-gradient(135deg, #38bdf8, #818cf8)",color:"white",fontWeight:"bold",fontSize:"1.8rem",padding:"0.8rem 1.2rem",borderRadius:"0.75rem",whiteSpace:"nowrap",boxShadow:"0 10px 15px -3px rgba(56, 189, 248, 0.4), 0 4px 6px -2px rgba(56, 189, 248, 0.2)"},children:"Skill"}),(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,r.jsx)("h1",{style:{fontSize:"3rem",fontWeight:"800",color:"#f8fafc",margin:0,lineHeight:1,letterSpacing:"-0.02em",textShadow:"0 2px 4px rgba(0,0,0,0.3)"},children:"Insight"}),(0,r.jsx)("span",{style:{fontSize:"1rem",color:"#94a3b8",letterSpacing:"0.1em",textTransform:"uppercase",marginTop:"0.25rem"},children:"智能体技能评估、分析与优化"})]})]}),(0,r.jsxs)("form",{className:"login-form",children:[(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsx)("label",{className:"login-label",htmlFor:"username",children:"邮箱地址"}),(0,r.jsx)("input",{className:"login-input",id:"username",type:"email",placeholder:"your.email@example.com",value:e,onChange:e=>{a(e.target.value),o("")},style:l?{borderColor:"#ef4444"}:{}}),l&&(0,r.jsxs)("div",{style:{color:"#ef4444",fontSize:"0.875rem",marginTop:"0.5rem",padding:"0.5rem 0.75rem",background:"rgba(239, 68, 68, 0.1)",borderRadius:"0.375rem",border:"1px solid rgba(239, 68, 68, 0.3)"},children:["⚠️ ",l]})]}),(0,r.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:(0,r.jsx)("button",{className:"login-btn",type:"button",onClick:d,children:"Sign In"})})]})]})})}e.s(["default",()=>a])}]);
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"BailoutToCSR",{enumerable:!0,get:function(){return l}});let o=e.r(32061);function l({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new o.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,r)=>{"use strict";function o(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"encodeURIPath",{enumerable:!0,get:function(){return o}})},52157,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"PreloadChunks",{enumerable:!0,get:function(){return a}});let o=e.r(43476),l=e.r(74080),n=e.r(63599),i=e.r(9885),s=e.r(43369);function a({moduleIds:e}){if("u">typeof window)return null;let t=n.workAsyncStorage.getStore();if(void 0===t)return null;let r=[];if(t.reactLoadableManifest&&e){let o=t.reactLoadableManifest;for(let t of e){if(!o[t])continue;let e=o[t].files;r.push(...e)}}if(0===r.length)return null;let a=(0,s.getDeploymentIdQueryOrEmptyString)();return(0,o.jsx)(o.Fragment,{children:r.map(e=>{let r=`${t.assetPrefix}/_next/${(0,i.encodeURIPath)(e)}${a}`;return e.endsWith(".css")?(0,o.jsx)("link",{precedence:"dynamic",href:r,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,l.preload)(r,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return d}});let o=e.r(43476),l=e.r(71645),n=e.r(67585),i=e.r(52157);function s(e){return{default:e&&"default"in e?e.default:e}}let a={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},d=function(e){let t={...a,...e},r=(0,l.lazy)(()=>t.loader().then(s)),d=t.loading;function c(e){let s=d?(0,o.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,c=a?l.Suspense:l.Fragment,p=t.ssr?(0,o.jsxs)(o.Fragment,{children:["u"<typeof window?(0,o.jsx)(i.PreloadChunks,{moduleIds:t.modules}):null,(0,o.jsx)(r,{...e})]}):(0,o.jsx)(n.BailoutToCSR,{reason:"next/dynamic",children:(0,o.jsx)(r,{...e})});return(0,o.jsx)(c,{...a?{fallback:s}:{},children:p})}return c.displayName="LoadableComponent",c}},70703,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return l}});let o=e.r(55682)._(e.r(69093));function l(e,t){let r={};"function"==typeof e&&(r.loader=e);let l={...r,...t};return(0,o.default)({...l,modules:l.loadableGenerated?.modules})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18819,e=>{"use strict";var t=e.i(43476),r=e.i(70703),o=e.i(18566),l=e.i(71645);function n({executionId:e,skillId:r,user:o,onStepClick:n}){let[s,a]=(0,l.useState)(!1),[d,c]=(0,l.useState)("compare"),[p,x]=(0,l.useState)(null),[m,u]=(0,l.useState)(""),[f,b]=(0,l.useState)(!0),[h,g]=(0,l.useState)(!1),y=r&&r.trim()?r:null;(0,l.useEffect)(()=>{fetch(`/api/executions/${e}/analyze-match`).then(e=>e.json()).then(e=>{e.analyzed&&x(e)}).catch(()=>{})},[e]);let j=async()=>{a(!0),u(""),c("dynamic");try{let t=await fetch(`/api/executions/${e}/analyze-match`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:o,mode:"dynamic"})}),r=await t.json();r.success?x({analyzed:!0,mode:"dynamic",dynamicMermaid:r.dynamicMermaid,interactionCount:r.interactionCount,matchedAt:new Date().toISOString()}):u(r.error||"分析失败")}catch(e){u(e instanceof Error?e.message:"网络错误")}finally{a(!1)}},k=async()=>{if(!y)return void u('该执行记录未关联 Skill,无法进行 Skill 对比。请使用"流程解析"功能。');a(!0),u(""),c("compare");try{let t=await fetch(`/api/executions/${e}/analyze-match`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:o,mode:"compare"})}),r=await t.json();if(r.success){let e=r.match?.problemSteps||[];x({analyzed:!0,mode:"compare",matchJson:JSON.stringify(r.match),staticMermaid:r.staticMermaid,dynamicMermaid:r.dynamicMermaid,analysisText:JSON.stringify(e),interactionCount:r.interactionCount,currentInteractionCount:r.currentInteractionCount,hasUpdate:r.hasUpdate,matchedAt:new Date().toISOString(),usedSkillName:r.usedSkillName,usedSkillVersion:r.usedSkillVersion})}else u(r.error||"分析失败")}catch(e){u(e instanceof Error?e.message:"网络错误")}finally{a(!1)}};return(0,t.jsxs)("div",{style:{background:"#1e293b",borderRadius:"8px",border:"1px solid #334155",marginBottom:"2rem",overflow:"hidden"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"1rem 1.5rem",borderBottom:h?"1px solid #334155":"none",cursor:"pointer"},onClick:()=>g(!h),children:[(0,t.jsx)("h4",{style:{color:"#38bdf8",margin:0,fontSize:"0.95rem"},children:"📊 执行流程分析"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,t.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.8rem",marginRight:"0.5rem"},children:h?"收起":"展开"}),(0,t.jsx)("button",{style:{background:"#334155",border:"none",borderRadius:"4px",color:"#94a3b8",padding:"4px 8px",cursor:"pointer",fontSize:"0.8rem"},children:h?"▲":"▼"})]})]}),h&&(0,t.jsxs)("div",{style:{padding:"1.5rem"},children:[(0,t.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",marginBottom:"1rem"},children:(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,t.jsx)("button",{onClick:e=>{e.stopPropagation(),j()},disabled:s,style:{padding:"6px 16px",background:s&&"dynamic"===d?"#334155":"#22c55e",color:s&&"dynamic"===d?"#94a3b8":"#0f172a",border:"none",borderRadius:"4px",cursor:s?"not-allowed":"pointer",fontWeight:"bold",fontSize:"0.85rem"},children:s&&"dynamic"===d?"分析中...":"流程解析"}),(0,t.jsx)("button",{onClick:e=>{e.stopPropagation(),k()},disabled:s,style:{padding:"6px 16px",background:s&&"compare"===d?"#334155":"#38bdf8",color:s&&"compare"===d?"#94a3b8":"#0f172a",border:"none",borderRadius:"4px",cursor:s?"not-allowed":"pointer",fontWeight:"bold",fontSize:"0.85rem"},children:s&&"compare"===d?"对比中...":"Skill对比"})]})}),m&&(0,t.jsx)("div",{style:{padding:"0.75rem",background:"rgba(248, 113, 113, 0.1)",borderRadius:"4px",color:"#f87171",marginBottom:"1rem",fontSize:"0.9rem"},children:m}),p&&p.analyzed?(0,t.jsxs)("div",{children:["compare"===p.mode&&p.dynamicMermaid?(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsxs)("h5",{style:{color:"#94a3b8",margin:"0 0 0.5rem 0",fontSize:"0.85rem"},children:["执行流程对比 ",p.usedSkillName&&`(${p.usedSkillName} v${p.usedSkillVersion})`]}),(0,t.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",minHeight:"250px",overflowX:"auto",overflowY:"auto"},children:(0,t.jsx)(i,{code:p.dynamicMermaid||""})})]}):(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsx)("h5",{style:{color:"#94a3b8",margin:"0 0 0.5rem 0",fontSize:"0.85rem"},children:"执行轨迹"}),(0,t.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",minHeight:"180px",overflowX:"auto",overflowY:"auto"},children:(0,t.jsx)(i,{code:p.dynamicMermaid||""})})]}),"compare"===p.mode&&p.matchJson&&(()=>{let e=null;try{e=JSON.parse(p.matchJson)?.summary}catch{}return e?(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1.5rem",padding:"0.75rem",background:"#0f172a",borderRadius:"6px",marginBottom:"1rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:"1.5rem",fontSize:"0.85rem"},children:[(0,t.jsxs)("span",{style:{color:"#4ade80"},children:["✅ 符合预期:",e.matchedSteps||0]}),(0,t.jsxs)("span",{style:{color:"#fbbf24"},children:["⚠️ 部分偏离:",e.partialSteps||0]}),(0,t.jsxs)("span",{style:{color:"#f87171"},children:["❌ 非预期调用:",e.unexpectedSteps||0]}),(0,t.jsxs)("span",{style:{color:"#94a3b8"},children:["⭕ 跳过:",e.skippedSteps||0]})]}),(0,t.jsxs)("div",{style:{marginLeft:"auto",fontSize:"0.8rem",color:"#64748b"},children:["对话轮数: ",p.interactionCount,p.hasUpdate&&(0,t.jsx)("span",{style:{color:"#fbbf24",marginLeft:"0.5rem"},children:"(有更新)"})]})]}):null})(),"compare"===p.mode&&p.analysisText&&(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer",marginBottom:"0.5rem"},onClick:()=>b(!f),children:[(0,t.jsx)("h5",{style:{color:"#94a3b8",margin:0,fontSize:"0.85rem"},children:"问题步骤分析"}),(0,t.jsx)("button",{style:{background:"#334155",border:"none",borderRadius:"4px",color:"#94a3b8",padding:"4px 8px",cursor:"pointer",fontSize:"0.8rem"},children:f?"收起 ▲":"展开 ▼"})]}),f&&(()=>{let e=[];try{e=JSON.parse(p.analysisText)}catch{return(0,t.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",color:"#64748b",fontSize:"0.9rem"},children:"暂无问题步骤"})}if(!Array.isArray(e)||0===e.length)return(0,t.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",color:"#4ade80",fontSize:"0.9rem"},children:"✅ 执行流程完全符合预期,无问题步骤"});let r={partial:{text:"部分偏离",color:"#fbbf24"},unexpected:{text:"非预期调用",color:"#f87171"},skipped:{text:"跳过",color:"#94a3b8"}};return(0,t.jsx)("div",{style:{background:"#0f172a",borderRadius:"6px",border:"1px solid #334155",overflow:"hidden"},children:(0,t.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.9rem"},children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{style:{background:"#1e293b"},children:[(0,t.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"80px"},children:"对话轮数"}),(0,t.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"120px"},children:"步骤名称"}),(0,t.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"110px"},children:"状态"}),(0,t.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155"},children:"问题描述"}),(0,t.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155"},children:"改进建议"})]})}),(0,t.jsx)("tbody",{children:e.map((e,o)=>(0,t.jsxs)("tr",{style:{background:o%2==0?"#0f172a":"#111827"},children:[(0,t.jsxs)("td",{style:{padding:"0.75rem",color:n?"#38bdf8":"#e2e8f0",borderBottom:"1px solid #334155",cursor:n?"pointer":"default",textDecoration:n?"underline":"none"},onClick:()=>n?.(e.stepIndex),children:["#",e.stepIndex]}),(0,t.jsx)("td",{style:{padding:"0.75rem",color:"#e2e8f0",borderBottom:"1px solid #334155"},children:e.stepName}),(0,t.jsx)("td",{style:{padding:"0.75rem",borderBottom:"1px solid #334155"},children:(0,t.jsx)("span",{style:{padding:"2px 8px",borderRadius:"4px",background:`${r[e.status]?.color||"#94a3b8"}20`,color:r[e.status]?.color||"#94a3b8",fontSize:"0.8rem"},children:r[e.status]?.text||e.status})}),(0,t.jsx)("td",{style:{padding:"0.75rem",color:"#e2e8f0",borderBottom:"1px solid #334155"},children:e.problem}),(0,t.jsx)("td",{style:{padding:"0.75rem",color:"#38bdf8",borderBottom:"1px solid #334155"},children:e.suggestion})]},o))})]})})})()]})]}):(0,t.jsxs)("div",{style:{color:"#64748b",fontSize:"0.9rem",textAlign:"center",padding:"2rem"},children:[(0,t.jsxs)("div",{style:{marginBottom:"0.5rem"},children:[(0,t.jsx)("strong",{children:"执行流程"}),":根据执行数据生成轨迹图,无需关联 Skill"]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("strong",{children:"Skill对比"}),":与已解析的 Skill 流程进行对比分析"]})]})]})]})}function i({code:r}){let[o,n]=(0,l.useState)(""),[i,s]=(0,l.useState)("");return((0,l.useEffect)(()=>{let t=async()=>{try{let t=(await e.A(95802)).default;t.initialize({startOnLoad:!1,theme:"dark",flowchart:{useMaxWidth:!1,curve:"basis"},themeVariables:{fontSize:"16px"}});let{svg:o}=await t.render("mermaid-exec-"+Date.now(),r);n(o),s("")}catch(e){console.error("Mermaid render error:",e),s("渲染失败")}};r&&t()},[r]),i)?(0,t.jsx)("div",{style:{color:"#f87171"},children:i}):o?(0,t.jsx)("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"flex-start",minWidth:"max-content"},dangerouslySetInnerHTML:{__html:o}}):(0,t.jsx)("div",{style:{color:"#64748b"},children:"加载中..."})}var s=e.i(9665),a=e.i(94690);let d=(0,r.default)(()=>e.A(34486).then(e=>e.Line),{loadableGenerated:{modules:[13143]},ssr:!1}),c=(0,r.default)(()=>e.A(34486).then(e=>e.LineChart),{loadableGenerated:{modules:[13143]},ssr:!1}),p=(0,r.default)(()=>e.A(34486).then(e=>e.XAxis),{loadableGenerated:{modules:[13143]},ssr:!1}),x=(0,r.default)(()=>e.A(34486).then(e=>e.YAxis),{loadableGenerated:{modules:[13143]},ssr:!1}),m=(0,r.default)(()=>e.A(34486).then(e=>e.CartesianGrid),{loadableGenerated:{modules:[13143]},ssr:!1}),u=(0,r.default)(()=>e.A(34486).then(e=>e.Tooltip),{loadableGenerated:{modules:[13143]},ssr:!1});(0,r.default)(()=>e.A(34486).then(e=>e.Legend),{loadableGenerated:{modules:[13143]},ssr:!1});let f=(0,r.default)(()=>e.A(34486).then(e=>e.ReferenceLine),{loadableGenerated:{modules:[13143]},ssr:!1}),b=(0,r.default)(()=>e.A(34486).then(e=>e.ResponsiveContainer),{loadableGenerated:{modules:[13143]},ssr:!1}),h=(0,r.default)(()=>e.A(14524),{loadableGenerated:{modules:[17847]},ssr:!1}),g=({content:e})=>{let[r,o]=(0,l.useState)(!1);return(0,t.jsxs)("span",{style:{position:"relative",marginLeft:"4px",cursor:"help",fontSize:"0.8rem",display:"inline-block"},onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:["ⓘ",r&&(0,t.jsxs)("div",{style:{position:"absolute",bottom:"100%",left:"50%",transform:"translateX(-50%)",background:"#0f172a",border:"1px solid #334155",color:"#f1f5f9",padding:"6px 10px",borderRadius:"4px",whiteSpace:"pre-line",minWidth:"280px",maxWidth:"400px",zIndex:1e3,marginBottom:"6px",fontSize:"0.75rem",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.5)",pointerEvents:"none",fontWeight:"normal",lineHeight:"1.4"},children:[e,(0,t.jsx)("div",{style:{position:"absolute",top:"100%",left:"50%",marginLeft:"-4px",width:0,height:0,borderLeft:"4px solid transparent",borderRight:"4px solid transparent",borderTop:"4px solid #334155"}})]})]})},y=({interactions:e,focusedStep:r,onStepClick:o})=>{if(!e||!Array.isArray(e)||0===e.length)return null;let[n,i]=(0,l.useState)("default"),[s,a]=(0,l.useState)(!0),[d,c]=(0,l.useState)(0),p=(0,l.useMemo)(()=>(e=>{if(!e||0===e.length)return[];let t=e[0];if(t.type&&("user"===t.type||"assistant"===t.type)&&t.message){let t=new Map;return e.forEach((e,r)=>{let o=e.message;if(!o||!Array.isArray(o.content))return;let l=o.content.some(e=>"toolCall"===e.type)?"toolCall":"tool_use";o.content.filter(e=>e.type===l).forEach(r=>{t.set(r.id,{name:r.name,arguments:r.arguments||r.input,messageId:e.id,timestamp:o.timestamp||Date.parse(e.timestamp)})})}),e.map((r,o)=>{let l=r.message;if(!l)return null;let n=Date.parse(r.timestamp),i=l.timestamp||(isNaN(n)?0:n),s={role:l.role,timestamp:i,timeInfo:{created:i}};if(r.latency)s.latency=r.latency;else if("assistant"===l.role){let t=e[o-1];if(t&&t.message?.role==="user"){let e=Date.parse(t.timestamp),o=Date.parse(r.timestamp);isNaN(e)||isNaN(o)||!(o>e)||(s.latency=o-e)}}if(l.content){if("string"==typeof l.content)s.content=l.content;else if(Array.isArray(l.content)){let o=l.content.filter(e=>"text"===e.type);o.length>0&&(s.content=o.map(e=>e.text).join("\n"));let n=l.content.some(e=>"toolCall"===e.type)?"toolCall":"tool_use",i=l.content.filter(e=>e.type===n);i.length>0&&(s.tool_calls=i.map(o=>{let l=t.get(o.id),n=((e,t,r)=>{let o=r,l=new Set,n=100;for(;o&&n>0&&!l.has(o);){l.add(o);let r=t.filter(e=>e.parentId===o);for(let t of r){let r=t.message;if(r&&Array.isArray(r.content)){for(let o of r.content.filter(e=>"toolResult"===e.type||"tool_result"===e.type))if((o.toolCallId||o.tool_use_id)===e)return{content:o.content,isError:o.isError||o.is_error,timestamp:r.timestamp||Date.parse(t.timestamp)}}}if(r.length>0)o=r[0].id,n--;else break}return null})(o.id,e,r.id),i=0;if(l&&n){let e=l.timestamp,t=n.timestamp;e&&t&&t>e&&(i=t-e)}return{function:{name:o.name},arguments:o.arguments||o.input,output:n?n.content:null,timing:{duration_ms:i}}}))}}if(l.usage){let e=l.usage.totalTokens||l.usage.total_tokens||(l.usage.input_tokens||0)+(l.usage.output_tokens||0);s.usage={total:e,total_tokens:e,input:l.usage.input||l.usage.input_tokens||0,output:l.usage.output||l.usage.output_tokens||0}}return s}).filter(e=>e&&("user"===e.role||"assistant"===e.role))}return e})(e),[e]),x=(0,l.useMemo)(()=>{let e=[],t=e=>{if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let r=Date.parse(t);return Number.isFinite(r)?r:null}return null};return p.forEach((r,o)=>{let l=r.latency||0;!l&&r.timeInfo&&r.timeInfo.completed&&r.timeInfo.created&&(l=r.timeInfo.completed-r.timeInfo.created);let n=r.usage||r.responseMessage?.usage,i=n?.total_tokens||0;!i&&n?.total&&(i=n.total),!i&&(n?.input||n?.output)&&(i=(n.input||0)+(n.output||0)),e.push({kind:"llm",id:`llm-${o}`,order:e.length,original:r,parentIndex:o,toolIndex:null,latency:l,tokens:i});let s=r.tool_calls||r.toolCalls||[];Array.isArray(s)&&s.length>0&&s.forEach((r,l)=>{let n=0,i=r.timing||r.timeInfo||{};if("number"==typeof i.duration_ms)n=i.duration_ms;else if(i.started_at&&i.completed_at){let e=t(i.started_at),r=t(i.completed_at);null!=e&&null!=r&&r>=e&&r-e<36e5&&(n=r-e)}e.push({kind:"tool",id:`tool-${o}-${l}`,order:e.length,original:r,parentIndex:o,toolIndex:l,latency:n,tokens:0})})}),e},[e]),m=(0,l.useMemo)(()=>new Set([...x.filter(e=>"llm"===e.kind)].sort((e,t)=>t.latency-e.latency).slice(0,5).filter(e=>e.latency>0).map(e=>e.id)),[x]),u=(0,l.useMemo)(()=>new Set([...x.filter(e=>"llm"===e.kind)].sort((e,t)=>t.tokens-e.tokens).slice(0,5).filter(e=>e.tokens>0).map(e=>e.id)),[x]),f=x.filter(e=>"llm"===e.kind),b=(0,l.useMemo)(()=>{let e=[...f];return"latency_desc"===n?e.sort((e,t)=>t.latency-e.latency):"tokens_desc"===n?e.sort((e,t)=>t.tokens-e.tokens):e.sort((e,t)=>e.order-t.order),e},[f,n]),h=Math.ceil(b.length/5),g=(0,l.useMemo)(()=>{let e=5*d;return b.slice(e,e+5)},[b,d,5]),y=(0,l.useMemo)(()=>{let e=[];return g.forEach(t=>{e.push(t);let r=x.filter(e=>"tool"===e.kind&&e.parentIndex===t.parentIndex);e.push(...r)}),e},[g,x]);return(0,l.useEffect)(()=>{c(0)},[n]),(0,t.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem",borderBottom:"1px solid #334155",paddingBottom:"4px",minHeight:"34px"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,t.jsx)("button",{onClick:()=>a(!s),style:{background:"transparent",border:"none",color:"#38bdf8",cursor:"pointer",padding:0},children:s?"▼":"▶"}),(0,t.jsx)("h4",{style:{color:"#38bdf8",fontSize:"0.95rem",margin:0},children:"执行步骤(Trace)"})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,t.jsx)("span",{style:{fontSize:"0.8rem",color:"#94a3b8"},children:"Sort by:"}),(0,t.jsxs)("select",{value:n,onChange:e=>i(e.target.value),style:{background:"#1e293b",color:"#e2e8f0",border:"1px solid #334155",borderRadius:"4px",padding:"2px 8px",fontSize:"0.8rem",outline:"none"},children:[(0,t.jsx)("option",{value:"default",children:"执行顺序"}),(0,t.jsx)("option",{value:"latency_desc",children:"时延"}),(0,t.jsx)("option",{value:"tokens_desc",children:"Tokens"})]})]})]}),s&&(0,t.jsxs)("div",{style:{maxHeight:"600px",overflowY:"auto",paddingRight:"8px"},children:[(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:y.map(e=>{let{original:l,kind:n,parentIndex:i,toolIndex:s,latency:a,tokens:d}=e,c=m.has(e.id),p=u.has(e.id),x=r===i,f="tool"===n,b=a<1e3?`${a.toFixed(0)}ms`:`${(a/1e3).toFixed(2)}s`,h="unknown",g="";if("tool"===n){h=`tool:${l.function?.name||l.name||"unknown"}`;let e=l.output??(l.state&&l.state.output);g="string"==typeof e?e:null!=e?JSON.stringify(e):""}else{if(l.responseMessage){h=l.responseMessage.role||"assistant";let e=l.responseMessage.content;"string"==typeof e?g=e:e&&(g=JSON.stringify(e))}if(!g&&l.content){let e=l.content;g="string"==typeof e?e:JSON.stringify(e)}l.role&&"unknown"===h&&(h=l.role)}let y=f?"#fbbf24":"user"===h?"#a78bfa":"assistant"===h?"#38bdf8":"opencode"===h?"#ef4444":"subagent"===h?"#22c55e":"#e2e8f0",j=c?"#fb923c":"#fbbf24",k="0 0 0 2px rgba(96, 165, 250, 0.3)",S=`inset 3px 0 0 ${j}`,v=f?x?`${k}, ${S}`:S:x?k:"none";return g.length>150&&(g=g.slice(0,150)+"..."),(0,t.jsxs)("div",{onClick:()=>o(i),style:{background:x?f?"#3730a3":"#1e3a8a":f?"#111827":"#1e293b",border:x?"1px solid #60a5fa":f?"1px solid #374151":"1px solid #334155",borderRadius:"6px",padding:"0.75rem",paddingLeft:f?"1.25rem":"0.75rem",marginLeft:f?"16px":0,fontSize:"0.9rem",cursor:"pointer",transition:"all 0.2s",boxShadow:v},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,t.jsx)("span",{style:{background:"#334155",color:"#94a3b8",padding:"2px 6px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold"},children:"tool"===n?`#${i}.${s}`:`#${i}`}),(0,t.jsx)("span",{style:{fontWeight:"bold",color:y,textTransform:"capitalize"},children:h}),f&&(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"#0f172a",background:"#fbbf24",borderRadius:"999px",padding:"1px 8px",fontWeight:"bold"},children:"TOOL"})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"1rem",fontSize:"0.85rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,t.jsx)("span",{style:{color:"#94a3b8"},children:"Latency:"}),(0,t.jsx)("span",{style:{color:c?"#fb923c":"#cbd5e1",fontWeight:c?"bold":"normal",borderBottom:c?"1px dashed #fb923c":"none"},children:b}),c&&(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"#fb923c",border:"1px solid #fb923c",borderRadius:"4px",padding:"0 4px"},children:"TOP 5"})]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,t.jsx)("span",{style:{color:"#94a3b8"},children:"Tokens:"}),(0,t.jsx)("span",{style:{color:p?"#f472b6":"#cbd5e1",fontWeight:p?"bold":"normal",borderBottom:p?"1px dashed #f472b6":"none"},children:d}),p&&(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"#f472b6",border:"1px solid #f472b6",borderRadius:"4px",padding:"0 4px"},children:"TOP 5"})]})]})]}),(0,t.jsx)("div",{style:{color:"#cbd5e1",fontFamily:"monospace",opacity:.9,wordBreak:"break-all"},children:g||(0,t.jsx)("span",{style:{color:"#64748b",fontStyle:"italic"},children:"(No Content)"})})]},e.id)})}),h>1&&(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"1rem",marginTop:"1rem"},children:[(0,t.jsx)("button",{onClick:()=>c(e=>Math.max(0,e-1)),disabled:0===d,style:{padding:"4px 12px",background:0===d?"#334155":"#38bdf8",color:0===d?"#94a3b8":"#0f172a",border:"none",borderRadius:"4px",cursor:0===d?"not-allowed":"pointer"},children:"Prev"}),(0,t.jsxs)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:["Page ",d+1," of ",h]}),(0,t.jsx)("button",{onClick:()=>c(e=>Math.min(h-1,e+1)),disabled:d===h-1,style:{padding:"4px 12px",background:d===h-1?"#334155":"#38bdf8",color:d===h-1?"#94a3b8":"#0f172a",border:"none",borderRadius:"4px",cursor:d===h-1?"not-allowed":"pointer"},children:"Next"})]})]})]})};function j(){return(0,t.jsx)(l.Suspense,{fallback:(0,t.jsx)("div",{className:"p-8 text-white",children:"Loading..."}),children:(0,t.jsx)(k,{})})}function k(){let e,r=(0,o.useRouter)(),i=(0,o.useSearchParams)(),{user:j}=(0,a.useAuth)(),k=i.get("query")||"",z=i.get("framework")||"",C=i.get("expandTaskId"),[B,R]=(0,l.useState)([]),[T,I]=(0,l.useState)(!0),[A,L]=(0,l.useState)({}),[M,$]=(0,l.useState)("all"),[N,W]=(0,l.useState)(null),[D,O]=(0,l.useState)(""),[P,F]=(0,l.useState)(null),[E,K]=(0,l.useState)(null),[H,q]=(0,l.useState)(""),[U,J]=(0,l.useState)(null),[G,Y]=(0,l.useState)(null),[V,X]=(0,l.useState)(!1),[Q,Z]=(0,l.useState)("all"),[ee,et]=(0,l.useState)("type"),[er,eo]=(0,l.useState)(null),[el,en]=(0,l.useState)(!0),[ei,es]=(0,l.useState)(!0),[ea,ed]=(0,l.useState)(!0);(0,l.useEffect)(()=>{C&&!A[C]&&fetch(`/api/session?taskId=${C}`).then(e=>e.ok?e.json():{error:"Error"}).then(e=>L(t=>({...t,[C]:e}))).catch(()=>L(e=>({...e,[C]:{error:"Fetch failed"}})))},[C]),(0,l.useEffect)(()=>{let e=new URLSearchParams;j&&e.append("user",j),k&&e.append("query",k),z&&e.append("framework",z),C&&e.append("taskId",C),fetch("/api/data?"+e.toString(),{cache:"no-store"}).then(e=>e.json()).then(e=>{let t=k,r=z;if(!t&&C){let o=e.find(e=>e.task_id===C||e.upload_id===C);o&&(t=o.query,r||(r=o.framework),eo(o))}else if(C){let t=e.find(e=>e.task_id===C||e.upload_id===C);t&&eo(t)}let o=e.filter(e=>e.query===t&&(!r||e.framework===r)).map(e=>({...e,tokens:Number(e.tokens||e.Token||0),latency:Number(e.latency||0),answer_score:void 0!==e.answer_score?Number(e.answer_score):+!!e.is_answer_correct}));o.sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime()),R(o),I(!1)})},[k,z,C,j]);let[ec,ep]=(0,l.useState)(new Set),[ex,em]=(0,l.useState)(new Set),[eu,ef]=(0,l.useState)(!1),[eb,eh]=(0,l.useState)(!1),[eg,ey]=(0,l.useState)("label"),ej="__no_label__",ek=(0,l.useMemo)(()=>{let e=new Set,t=!1;B.forEach(r=>{r.label?e.add(r.label):t=!0});let r=Array.from(e).sort();return t&&r.unshift(ej),r},[B]),eS=(0,l.useMemo)(()=>{let e=new Set,t=!1;B.forEach(r=>{r.model?e.add(r.model):t=!0});let r=Array.from(e).sort();return t&&r.unshift(ej),r},[B]),ev=(0,l.useMemo)(()=>{let e=B;if("all"!==M){let t=Date.now()-(({"1h":36e5,"12h":432e5,"24h":864e5})[M]||0);e=e.filter(e=>new Date(e.timestamp).getTime()>t)}return ec.size>0&&(e=e.filter(e=>e.label?ec.has(e.label):ec.has(ej))),ex.size>0&&(e=e.filter(e=>e.model?ex.has(e.model):ex.has(ej))),e},[B,M,ec,ex]),ew=(0,l.useMemo)(()=>{let e="label"===eg?"label":"model",t=[...new Set(ev.map(t=>t[e]).filter(e=>e))];return t.sort((e,t)=>{let r=e=>{let t=String(e).match(/(\d+)$/);return t?parseInt(t[0],10):null},o=r(String(e)),l=r(String(t));return null!==o&&null!==l?o-l:String(e).localeCompare(String(t))}),{latency:t.map(t=>{let r=ev.filter(r=>r[e]===t);return{name:t,latency:r.reduce((e,t)=>e+(t.latency||0),0)/r.length}}),tokens:t.map(t=>{let r=ev.filter(r=>r[e]===t);return{name:t,tokens:r.reduce((e,t)=>e+(t.tokens||0),0)/r.length}}),accuracy:t.map(t=>{let r=ev.filter(r=>r[e]===t);return{name:t,answer_score:r.reduce((e,t)=>e+(t.answer_score||0),0)/r.length}}),skillRecallRate:t.map(t=>{let r=ev.filter(r=>r[e]===t).filter(e=>null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate),o=r.length,l=r.reduce((e,t)=>e+(t.skill_recall_rate||0),0);return{name:t,skill_recall_rate:o>0?l/o:0}}),contextWindow:t.map(t=>{let r=ev.filter(r=>r[e]===t&&null!=r.context_window_pct);return{name:t,context_window_pct:r.length>0?r.reduce((e,t)=>e+(t.context_window_pct||0),0)/r.length:void 0}}).filter(e=>null!=e.context_window_pct)}},[ev,eg]),e_=(0,l.useMemo)(()=>{if(0===ev.length)return[];let e=[...ev].sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime()).filter(e=>null!=e.cost);if(0===e.length)return[];let t=[],r=0,o=0;return e.forEach((e,l)=>{r+=e.cost||0,e.is_answer_correct&&o++;let n=l+1,i=r/n,s=o/n,a=s>0?i/s:null;null!==a&&t.push({timestamp:e.timestamp,cpsr:a,avgCost:i,successRate:s,totalRuns:n})}),t},[ev]),ez=async(e,t)=>{let o=D.trim();if(o){F({id:e,status:"saving"});try{let l=await fetch("/api/data",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:e,upload_id:t||void 0,query:o})}),n=await l.json();if(!l.ok)return void F({id:e,status:"error",msg:n.error||"保存失败"});let i=(n.record?.judgment_reason||"").includes("未找到匹配的评测配置")?"已保存,但未找到匹配的评测配置,Score 已归零。请在「数据集管理」中为该 query 添加完全一致的条目。":n.message||"已保存";if(F({id:e,status:"ok",msg:i}),W(null),O(""),o!==k){let t=new URLSearchParams;t.set("query",o),z&&t.set("framework",z),t.set("expandTaskId",e),r.push(`/details?${t.toString()}`)}else{let e=j?`/api/data?user=${encodeURIComponent(j)}`:"/api/data",t=await fetch(e),r=(await t.json()).filter(e=>e.query===k&&(!z||e.framework===z)).map(e=>({...e,tokens:Number(e.tokens||e.Token||0),latency:Number(e.latency||0),answer_score:void 0!==e.answer_score?Number(e.answer_score):+!!e.is_answer_correct}));r.sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime()),R(r)}}catch(t){F({id:e,status:"error",msg:"网络错误"})}}},eC=async(e,t)=>{let r=H.trim();if(r){J({id:e,status:"saving"});try{let o=await fetch("/api/data",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:e,upload_id:t||void 0,final_result:r})}),l=await o.json();if(!o.ok)return void J({id:e,status:"error",msg:l.error||"保存失败"});let n=l.message||"已保存,正在后台重新评估";J({id:e,status:"ok",msg:n}),K(null),q("");try{R(t=>t.map(t=>(t.task_id||t.upload_id)===e?{...t,final_result:r,judgment_reason:"结果评估中..."}:t))}catch(e){console.error("Error updating local data:",e)}}catch(t){J({id:e,status:"error",msg:"网络错误"})}}},eB=async e=>{let t=e.target.files?.[0];if(!t)return;let r=new FormData;r.append("document",t);try{let e=await fetch("/api/parse-document",{method:"POST",body:r}),t=await e.json();e.ok?q(t.content||""):alert("解析文档失败: "+(t.error||"Unknown error"))}catch(e){alert("解析文档异常: "+e.message)}},eR=e=>new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),eT=e=>{if(!e)return"-";let t=new Date(e);return t.getFullYear()+"/"+String(t.getMonth()+1).padStart(2,"0")+"/"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")+":"+String(t.getSeconds()).padStart(2,"0")},eI=e=>{if(!e&&0!==e)return"-";let t=new Date(e);return t.getFullYear()+"/"+String(t.getMonth()+1).padStart(2,"0")+"/"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")+":"+String(t.getSeconds()).padStart(2,"0")+"."+String(t.getMilliseconds()).padStart(3,"0")};if(T)return(0,t.jsx)("div",{style:{padding:"2rem",color:"white"},children:"Loading..."});if(!C)return(0,t.jsx)("div",{style:{minHeight:"100vh",background:"#0f172a",color:"#f8fafc",padding:"2rem"},children:(0,t.jsxs)("div",{style:{maxWidth:"600px",margin:"4rem auto",textAlign:"center",background:"#1e293b",border:"1px solid #334155",borderRadius:"8px",padding:"3rem"},children:[(0,t.jsx)("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"⚠️"}),(0,t.jsx)("h2",{style:{color:"#fbbf24",marginBottom:"1rem"},children:"缺少必要参数"}),(0,t.jsxs)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:["请通过 ",(0,t.jsx)("code",{style:{background:"#0f172a",padding:"2px 8px",borderRadius:"4px"},children:"expandTaskId"})," 参数访问此页面"]}),(0,t.jsx)("button",{onClick:()=>r.push("/"),style:{padding:"10px 24px",background:"#38bdf8",color:"#0f172a",border:"none",borderRadius:"6px",fontWeight:"bold",cursor:"pointer"},children:"返回首页"})]})});if(!er)return(0,t.jsx)("div",{style:{minHeight:"100vh",background:"#0f172a",color:"#f8fafc",padding:"2rem"},children:(0,t.jsxs)("div",{style:{maxWidth:"600px",margin:"4rem auto",textAlign:"center",background:"#1e293b",border:"1px solid #334155",borderRadius:"8px",padding:"3rem"},children:[(0,t.jsx)("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"🔍"}),(0,t.jsx)("h2",{style:{color:"#f87171",marginBottom:"1rem"},children:"未找到记录"}),(0,t.jsxs)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:["未找到 ID 为 ",(0,t.jsx)("code",{style:{background:"#0f172a",padding:"2px 8px",borderRadius:"4px"},children:C})," 的记录"]}),(0,t.jsx)("button",{onClick:()=>r.push("/"),style:{padding:"10px 24px",background:"#38bdf8",color:"#0f172a",border:"none",borderRadius:"6px",fontWeight:"bold",cursor:"pointer"},children:"返回首页"})]})});let eA=er.task_id||er.upload_id||`temp-${er.timestamp}`,eL=A[eA];return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"#0f172a",color:"#f8fafc",padding:"2rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem",borderBottom:"1px solid #334155",paddingBottom:"0.5rem"},children:[(0,t.jsxs)("h1",{style:{fontSize:"1.5rem",margin:0,display:"flex",alignItems:"center",gap:"8px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:k,children:[(0,t.jsx)("span",{id:"home-link",style:{flexShrink:0,cursor:"pointer",color:"#38bdf8",transition:"color 0.2s"},onClick:()=>r.push("/"),onMouseOver:e=>e.currentTarget.style.color="#7dd3fc",onMouseOut:e=>e.currentTarget.style.color="#38bdf8",children:"skill-insight"}),(0,t.jsx)("span",{style:{flexShrink:0,color:"#334155"},children:"|"}),(0,t.jsx)("span",{style:{color:"#94a3b8",overflow:"hidden",textOverflow:"ellipsis"},children:k})]}),(0,t.jsxs)("button",{className:"export-btn",onClick:()=>{let e=document.documentElement.cloneNode(!0);e.querySelectorAll("script").forEach(e=>e.remove()),e.querySelectorAll(".export-btn").forEach(e=>e.remove());let t=`
|
|
2
|
-
<script>
|
|
3
|
-
(function() {
|
|
4
|
-
const TS_MAP = {
|
|
5
|
-
'1h': 60 * 60 * 1000,
|
|
6
|
-
'12h': 12 * 60 * 60 * 1000,
|
|
7
|
-
'24h': 24 * 60 * 60 * 1000,
|
|
8
|
-
'all': 0
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
let state = {
|
|
12
|
-
timeFilter: 'all',
|
|
13
|
-
selectedLabels: new Set()
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
const rows = document.querySelectorAll('.record-row');
|
|
17
|
-
const totalCountEl = document.getElementById('total-records-count');
|
|
18
|
-
const labelMenu = document.getElementById('label-menu-dropdown');
|
|
19
|
-
const labelTrigger = document.getElementById('label-menu-trigger');
|
|
20
|
-
const labelTextObj = document.getElementById('label-trigger-text');
|
|
21
|
-
|
|
22
|
-
function updateVisibility() {
|
|
23
|
-
const now = Date.now();
|
|
24
|
-
const threshold = TS_MAP[state.timeFilter] ? now - TS_MAP[state.timeFilter] : 0;
|
|
25
|
-
let count = 0;
|
|
26
|
-
|
|
27
|
-
rows.forEach(row => {
|
|
28
|
-
const ts = parseInt(row.getAttribute('data-timestamp') || '0');
|
|
29
|
-
const lbl = row.getAttribute('data-label') || '';
|
|
30
|
-
|
|
31
|
-
let visible = true;
|
|
32
|
-
|
|
33
|
-
if (threshold > 0 && ts < threshold) visible = false;
|
|
34
|
-
|
|
35
|
-
if (visible && state.selectedLabels.size > 0) {
|
|
36
|
-
const checkLbl = lbl || '__no_label__';
|
|
37
|
-
if (!state.selectedLabels.has(checkLbl)) visible = false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
row.style.display = visible ? '' : 'none';
|
|
41
|
-
if (visible) count++;
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
if (totalCountEl) totalCountEl.innerText = count;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
document.querySelectorAll('.filter-time-btn').forEach(btn => {
|
|
48
|
-
btn.onclick = () => {
|
|
49
|
-
document.querySelectorAll('.filter-time-btn').forEach(b => {
|
|
50
|
-
b.style.background = '#1e293b';
|
|
51
|
-
b.style.color = '#94a3b8';
|
|
52
|
-
});
|
|
53
|
-
btn.style.background = '#38bdf8';
|
|
54
|
-
btn.style.color = '#0f172a';
|
|
55
|
-
|
|
56
|
-
state.timeFilter = btn.getAttribute('data-tf');
|
|
57
|
-
updateVisibility();
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
if (labelTrigger && labelMenu) {
|
|
62
|
-
labelTrigger.onclick = (e) => {
|
|
63
|
-
e.stopPropagation();
|
|
64
|
-
labelMenu.style.display = labelMenu.style.display === 'none' ? 'block' : 'none';
|
|
65
|
-
};
|
|
66
|
-
document.body.onclick = () => {
|
|
67
|
-
labelMenu.style.display = 'none';
|
|
68
|
-
};
|
|
69
|
-
labelMenu.onclick = (e) => e.stopPropagation();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
document.querySelectorAll('.filter-label-checkbox').forEach(chk => {
|
|
73
|
-
chk.onchange = () => {
|
|
74
|
-
const val = chk.value;
|
|
75
|
-
if (chk.checked) state.selectedLabels.add(val);
|
|
76
|
-
else state.selectedLabels.delete(val);
|
|
77
|
-
|
|
78
|
-
if (labelTextObj) {
|
|
79
|
-
labelTextObj.innerText = state.selectedLabels.size === 0 ? 'All Filter' : \`\${state.selectedLabels.size} Selected\`;
|
|
80
|
-
}
|
|
81
|
-
updateVisibility();
|
|
82
|
-
};
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
const clearBtn = document.getElementById('filter-label-clear');
|
|
86
|
-
if (clearBtn) {
|
|
87
|
-
clearBtn.onclick = () => {
|
|
88
|
-
state.selectedLabels.clear();
|
|
89
|
-
document.querySelectorAll('.filter-label-checkbox').forEach(c => c.checked = false);
|
|
90
|
-
if (labelTextObj) labelTextObj.innerText = 'All Filter';
|
|
91
|
-
updateVisibility();
|
|
92
|
-
if (labelMenu) labelMenu.style.display = 'none';
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const homeLink = document.getElementById('home-link');
|
|
97
|
-
if (homeLink) {
|
|
98
|
-
homeLink.onclick = () => {
|
|
99
|
-
window.location.href = '/';
|
|
100
|
-
};
|
|
101
|
-
homeLink.onmouseover = () => { homeLink.style.color = '#7dd3fc'; };
|
|
102
|
-
homeLink.onmouseout = () => { homeLink.style.color = '#38bdf8'; };
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
console.log('Offline Mode: Charts are static snapshots.');
|
|
106
|
-
})();
|
|
107
|
-
</script>
|
|
108
|
-
`,r=new Blob([`<!DOCTYPE html>
|
|
109
|
-
${e.outerHTML}${t}`],{type:"text/html"}),o=URL.createObjectURL(r),l=document.createElement("a");l.href=o,l.download=`detail_export_${k||"all"}_${new Date().toISOString().slice(0,10)}.html`,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(o)},style:{padding:"8px 16px",background:"#38bdf8",color:"#0f172a",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",display:"flex",alignItems:"center",gap:"8px"},children:[(0,t.jsx)("span",{children:"📤"})," 导出"]})]}),(0,t.jsxs)("div",{style:{marginBottom:"2rem",color:"#94a3b8"},children:["框架: ",(0,t.jsx)("strong",{style:{color:"white"},children:z||"All"})," | 任务 ID: ",(0,t.jsx)("strong",{style:{color:"white"},children:eA})]}),(0,t.jsxs)("div",{style:{background:"linear-gradient(135deg, #1e3a5f 0%, #1e293b 100%)",border:"2px solid #38bdf8",borderRadius:"12px",padding:"2rem",marginBottom:"2rem",boxShadow:"0 0 20px rgba(56, 189, 248, 0.2)"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:el?"1.5rem":"0"},children:[(0,t.jsxs)("h2",{style:{fontSize:"1.5rem",margin:0,color:"#38bdf8",display:"flex",alignItems:"center",gap:"8px"},children:["📋 本次执行记录详情",(0,t.jsx)("span",{style:{fontSize:"0.85rem",background:"#38bdf8",color:"#0f172a",padding:"2px 12px",borderRadius:"999px",fontWeight:"bold"},children:eT(er.timestamp)})]}),(0,t.jsx)("button",{onClick:()=>en(!el),style:{background:"transparent",border:"1px solid #38bdf8",color:"#38bdf8",padding:"4px 12px",borderRadius:"6px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem"},children:el?"▼ 折叠":"▶ 展开"})]}),el&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{background:"#0f172a",border:"1px solid #334155",borderRadius:"8px",padding:"1.5rem",marginBottom:"1.5rem"},children:[(0,t.jsx)("h3",{style:{fontSize:"1.2rem",marginBottom:"1rem",color:"#fbbf24",borderBottom:"1px solid #334155",paddingBottom:"0.5rem"},children:"📊 原始采集数据"}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem",marginBottom:"1.5rem",minHeight:"400px"},children:[(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1.5rem"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{style:w,children:"用户输入"}),N===eA?(0,t.jsxs)("div",{children:[(0,t.jsx)("textarea",{value:D,onChange:e=>O(e.target.value),rows:3,style:{width:"100%",padding:"0.75rem",background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",color:"#e2e8f0",fontFamily:"monospace",fontSize:"0.9rem",resize:"vertical"},placeholder:"输入 query"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem",alignItems:"center"},children:[(0,t.jsx)("button",{onClick:()=>ez(eA,er.upload_id),disabled:P?.id===eA&&P?.status==="saving",style:{padding:"6px 14px",background:"#38bdf8",color:"#0f172a",border:"none",borderRadius:"4px",cursor:P?.id===eA&&P?.status==="saving"?"not-allowed":"pointer",fontWeight:"bold"},children:P?.id===eA&&P?.status==="saving"?"保存中...":"保存"}),(0,t.jsx)("button",{onClick:()=>{W(null),O(""),F(null)},style:{padding:"6px 14px",background:"#334155",color:"#94a3b8",border:"none",borderRadius:"4px",cursor:"pointer"},children:"取消"}),P?.id===eA&&P?.status==="ok"&&(0,t.jsx)("span",{style:{color:"#4ade80",fontSize:"0.9rem"},children:P.msg}),P?.id===eA&&P?.status==="error"&&(0,t.jsx)("span",{style:{color:"#f87171",fontSize:"0.9rem"},children:P.msg})]})]}):(0,t.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.5rem"},children:[(0,t.jsx)("div",{style:_,children:er.query||"(空)"}),(0,t.jsx)("button",{onClick:e=>{var t;e.stopPropagation(),t=er.query||"",W(eA),O(t||""),F(null)},style:{padding:"4px 10px",background:"transparent",color:"#38bdf8",border:"1px solid #38bdf8",borderRadius:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontSize:"0.8rem",whiteSpace:"nowrap"},children:"✏️ 编辑"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{style:w,children:"使用 Skills"}),(0,t.jsx)("div",{style:{..._,padding:"0.5rem",background:"#1e293b",borderRadius:"4px",border:"1px solid #334155"},children:(0,t.jsx)(s.SkillLinks,{skills:er.skills,skill:er.skill,skillVersion:er.skill_version,user:er.user})})]}),(null!=er.llm_call_count||null!=er.tool_call_count||null!=er.input_tokens||null!=er.output_tokens||null!=er.tool_call_error_count)&&(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{style:w,children:"运行时指标"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(120px, 1fr))",gap:"0.75rem",marginTop:"0.5rem"},children:[{label:"大模型调用次数",value:er.llm_call_count,color:"#38bdf8"},{label:"工具调用次数",value:er.tool_call_count,color:"#38bdf8"},{label:"工具报错次数",value:er.tool_call_error_count??0,color:er.tool_call_error_count?"#f87171":"#4ade80"},{label:"输入 Tokens",value:er.input_tokens,color:"#38bdf8"},{label:"输出 Tokens",value:er.output_tokens,color:"#38bdf8"},{label:"上下文窗口 %",value:er.context_window_pct,color:null!=er.context_window_pct?er.context_window_pct>90?"#f87171":"#4ade80":"#38bdf8",format:e=>`${e.toFixed(1)}%`,fallback:null==er.context_window_pct&&null!=er.max_single_call_tokens?"N/A":void 0,tooltip:null!=er.context_window_pct?`max_single_call_tokens (${er.max_single_call_tokens?.toLocaleString()}) / context_window_limit (${er.context_window_limit?.toLocaleString()}) \xd7 100`+(er.model?` (${er.model})`:"")+`. Source: ${er.context_window_source||"default"}.`:er.model?`此模型未配置: ${er.model}.`:"Model unknown. Context window % cannot be calculated."},{label:"预估成本",value:er.cost,color:"#38bdf8",format:e=>`$${0===e?"0.00":e<.01?e.toFixed(4):e<1?e.toFixed(3):e.toFixed(2)}`,fallback:null==er.cost&&null!=er.input_tokens?"N/A":void 0,tooltip:er.cost_pricing?(er.cache_read_input_tokens||er.cache_creation_input_tokens?`Cost = base_input \xd7 $${er.cost_pricing.inputTokenPrice}/M + cache_read \xd7 $${er.cost_pricing.cacheReadInputTokenPrice}/M + cache_create \xd7 $${er.cost_pricing.cacheCreationInputTokenPrice}/M + output \xd7 $${er.cost_pricing.outputTokenPrice}/M`:`Cost = input_tokens \xd7 $${er.cost_pricing.inputTokenPrice}/M + output_tokens \xd7 $${er.cost_pricing.outputTokenPrice}/M`)+(er.model?` (${er.model})`:"")+`. Estimated from ${"custom"===er.cost_pricing.source?"custom":"default"} pricing.`:er.model?`Pricing not available for model: ${er.model}.`:"Model unknown. Cost cannot be estimated."}].map((e,r)=>(0,t.jsxs)("div",{style:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",padding:"0.75rem",textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:"1.3rem",fontWeight:"bold",color:e.color},children:null!=e.value?"format"in e&&e.format?e.format(e.value):e.value.toLocaleString():"fallback"in e&&e.fallback?e.fallback:"-"}),(0,t.jsxs)("div",{style:{fontSize:"0.75rem",color:"#64748b",marginTop:"4px"},children:[e.label,"tooltip"in e&&e.tooltip&&(0,t.jsx)(g,{content:e.tooltip})]})]},r))})]})]}),(0,t.jsx)("div",{style:{position:"relative"},children:(0,t.jsxs)("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column"},children:[(0,t.jsx)("h4",{style:{...w,marginBottom:"0.5rem"},children:"最终结果"}),E===eA?(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[(0,t.jsx)("textarea",{value:H,onChange:e=>q(e.target.value),style:{flex:1,width:"100%",padding:"0.75rem",background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",color:"#e2e8f0",fontFamily:"monospace",fontSize:"0.9rem",resize:"none",marginBottom:"0.5rem"},placeholder:"输入或上传 最终结果"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center",flexShrink:0},children:[(0,t.jsx)("button",{onClick:()=>eC(eA,er.upload_id),disabled:U?.id===eA&&U?.status==="saving",style:{padding:"6px 14px",background:"#38bdf8",color:"#0f172a",border:"none",borderRadius:"4px",cursor:U?.id===eA&&U?.status==="saving"?"not-allowed":"pointer",fontWeight:"bold"},children:U?.id===eA&&U?.status==="saving"?"保存中...":"保存并重评"}),(0,t.jsx)("button",{onClick:()=>{K(null),q(""),J(null)},style:{padding:"6px 14px",background:"#334155",color:"#94a3b8",border:"none",borderRadius:"4px",cursor:"pointer"},children:"取消"}),(0,t.jsxs)("label",{style:{padding:"6px 14px",background:"#2d3748",color:"#fbbf24",border:"1px solid #fbbf24",borderRadius:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontSize:"0.85rem"},children:["📄 上传报告",(0,t.jsx)("input",{type:"file",accept:".md,.txt,.pdf,.markdown",style:{display:"none"},onChange:eB})]}),U?.id===eA&&U?.status==="ok"&&(0,t.jsx)("span",{style:{color:"#4ade80",fontSize:"0.9rem"},children:U.msg}),U?.id===eA&&U?.status==="error"&&(0,t.jsx)("span",{style:{color:"#f87171",fontSize:"0.9rem"},children:U.msg})]})]}):(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[(0,t.jsx)("div",{style:{..._,flex:1,overflowY:"auto",padding:"1rem",background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",wordBreak:"break-word"},children:er.final_result||"(No Result)"}),(0,t.jsx)("div",{style:{marginTop:"0.5rem",flexShrink:0},children:(0,t.jsx)("button",{onClick:e=>{var t;e.stopPropagation(),t=er.final_result||"",K(eA),q(t||""),J(null)},style:{padding:"4px 10px",background:"transparent",color:"#38bdf8",border:"1px solid #38bdf8",borderRadius:"4px",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"0.8rem"},children:"✏️ 编辑 / 替换结果"})})]})]})})]}),eL?eL.error?(0,t.jsx)("div",{style:{color:"#94a3b8",fontStyle:"italic"},children:eL.error}):(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"2rem"},children:[(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"flex-start",alignItems:"center",gap:"8px",marginBottom:"0.5rem",borderBottom:"1px solid #334155",paddingBottom:"4px",minHeight:"34px"},children:[(0,t.jsx)("button",{onClick:()=>es(!ei),style:{background:"transparent",border:"none",color:"#38bdf8",cursor:"pointer",padding:0},children:ei?"▼":"▶"}),(0,t.jsx)("h4",{style:w,children:"会话数据(原始JSON)"})]}),ei&&(0,t.jsx)("div",{style:{background:"#1e293b",padding:"1rem",borderRadius:"8px",overflowY:"auto",maxHeight:"600px"},children:(0,t.jsx)(h,{src:(e=>{if(!e)return e;let t=JSON.parse(JSON.stringify(e));return t.startTime&&(t.startTime=eI(t.startTime)),Array.isArray(t.interactions)&&(t.interactions=t.interactions.map(e=>{let t={...e};return t.timestamp&&(t.timestamp=eI(t.timestamp)),t.message?.timestamp&&(t.message.timestamp=eI(t.message.timestamp)),t.timeInfo?.created&&(t.timeInfo.created=eI(t.timeInfo.created)),t})),t})(eL),theme:"monokai",shouldCollapse:e=>{let t=[...e.namespace||[],e.name].filter(e=>null!=e&&""!==String(e).trim()).map(String);if(null===G)return"interactions"===t[0]&&!!(t.length>=2);if("interactions"===t[0]){let e=t[1];if(void 0!==e){let t=Number(e);if(!isNaN(t)&&t!==G)return!0}}return!1},displayDataTypes:!1,name:null,style:{backgroundColor:"transparent",fontSize:"0.85rem"},enableClipboard:!0},`json-${null!==G?G:"default"}`)})]}),(0,t.jsx)("div",{style:{minWidth:0},children:(0,t.jsx)(y,{interactions:eL.interactions,focusedStep:G,onStepClick:Y})})]}):(0,t.jsx)("div",{style:{color:"#38bdf8"},children:"Loading session log..."})]}),(0,t.jsxs)("div",{style:{background:"#1a1f2e",border:"1px solid #475569",borderRadius:"8px",padding:"1.5rem",marginTop:"1.5rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:ea?"1rem":"0",borderBottom:ea?"1px solid #475569":"none",paddingBottom:ea?"0.5rem":"0"},children:[(0,t.jsx)("h3",{style:{fontSize:"1.2rem",margin:0,color:"#a78bfa"},children:"🔍 分析结果"}),(0,t.jsx)("button",{onClick:()=>ed(!ea),style:{background:"transparent",border:"1px solid #a78bfa",color:"#a78bfa",padding:"4px 12px",borderRadius:"6px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem"},children:ea?"▼ 折叠":"▶ 展开"})]}),ea&&(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"2rem",marginBottom:"2rem"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{style:{...w,marginBottom:"1rem"},children:"评分详情与分析"}),0===(e=function(e){let t=[];if(!e)return t;let r=e.split("\n"),o={rc:0,ka:0};for(let e of r){let r=e.match(/\*\*Root Cause\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);if(r){t.push({id:`RC-${o.rc++}`,type:"root_cause",content:r[1].replace(/\.{3}$/,""),match_score:parseInt(r[2])/100,explanation:r[3].trim(),weight:parseFloat(r[4])});continue}let l=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);l&&t.push({id:`KA-${o.ka++}`,type:"key_action",content:l[1].replace(/\.{3}$/,""),match_score:parseInt(l[2])/100,explanation:l[3].trim(),weight:parseFloat(l[4])})}return t}(er.judgment_reason||"")).length?(0,t.jsx)("div",{style:{..._,background:"#1e293b",padding:"1rem",borderRadius:"6px",border:"1px solid #334155"},children:er.judgment_reason||"-"}):(0,t.jsx)("div",{style:{background:"#1e293b",borderRadius:"6px",border:"1px solid #334155",overflowX:"visible"},children:(0,t.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",minWidth:"950px"},children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{style:{background:"#0f172a"},children:[(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"#94a3b8",borderBottom:"1px solid #334155",width:"60px",whiteSpace:"nowrap"},children:"ID"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",minWidth:"180px"},children:"评分标准"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"#94a3b8",borderBottom:"1px solid #334155",width:"60px",whiteSpace:"nowrap"},children:"得分"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"#94a3b8",borderBottom:"1px solid #334155",width:"50px",whiteSpace:"nowrap"},children:"权重"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"#94a3b8",borderBottom:"1px solid #334155",width:"60px",whiteSpace:"nowrap"},children:"扣分"}),(0,t.jsxs)("th",{style:{padding:"10px 12px",textAlign:"center",color:"#94a3b8",borderBottom:"1px solid #334155",width:"50px",whiteSpace:"nowrap"},children:["关联",(0,t.jsx)(g,{content:"表示扣分来源。若与skill相关,则体现在“分析依据”和“改进建议”"})]}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",minWidth:"150px"},children:"扣分原因"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",minWidth:"150px"},children:"分析依据"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",minWidth:"150px"},children:"改进建议"})]})}),(0,t.jsx)("tbody",{children:e.map((e,r)=>{let o=er.skill_issues?.find(t=>{if(t.id===e.id)return!0;let r=(t.content||"").trim().toLowerCase(),o=(e.content||"").trim().toLowerCase();return r&&o&&(r===o||o.includes(r))}),l=(1-e.match_score)*e.weight;return(0,t.jsxs)("tr",{id:`eval-item-${eA}-${e.id}`,style:{background:r%2==0?"#1e293b":"#1a2530",transition:"background 0.2s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(56, 189, 248, 0.05)"},onMouseLeave:e=>{e.currentTarget.style.background=r%2==0?"#1e293b":"#1a2530"},children:[(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",textAlign:"center"},children:(0,t.jsx)("span",{style:{background:"root_cause"===e.type?"#f472b6":"#38bdf8",color:"#0f172a",padding:"2px 8px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold",whiteSpace:"nowrap"},children:e.id})}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",color:"#e2e8f0"},children:(0,t.jsx)("div",{style:{fontWeight:500,marginBottom:"4px",wordBreak:"break-word"},children:o?.content||e.content})}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",textAlign:"center"},children:(0,t.jsxs)("span",{style:{color:e.match_score>=1?"#4ade80":e.match_score>=.5?"#fbbf24":"#f87171",fontWeight:"bold",whiteSpace:"nowrap"},children:[(100*e.match_score).toFixed(0),"%"]})}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",textAlign:"center",color:"#94a3b8"},children:e.weight.toFixed(1)}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",textAlign:"center"},children:(0,t.jsxs)("span",{style:{color:l>0?"#f87171":"#4ade80",fontWeight:"bold",whiteSpace:"nowrap"},children:["-",l.toFixed(2)]})}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",textAlign:"center"},children:o&&(0,t.jsx)("span",{style:{background:"#ef4444",color:"#fff",padding:"2px 6px",borderRadius:"4px",fontSize:"0.7rem",whiteSpace:"nowrap"},children:"Skill"})}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",color:"#cbd5e1",fontSize:"0.85rem"},children:o?.explanation||e.explanation||"-"}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",color:"#fcd34d",fontSize:"0.85rem",fontStyle:"italic"},children:o?.reasoning||"-"}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",color:"#86efac",fontSize:"0.85rem"},children:o?.improvement_suggestion?(0,t.jsx)("div",{style:{background:"rgba(74, 222, 128, 0.1)",padding:"4px 8px",borderRadius:"4px"},children:o.improvement_suggestion}):"-"})]},r)})})]})})]}),er.failures&&er.failures.length>0?(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.75rem"},children:[(0,t.jsx)("h4",{style:{...w,color:"#f87171",borderLeft:"3px solid #f87171",paddingLeft:"8px",borderBottom:"none",margin:0},children:" 执行异常 "}),(0,t.jsx)("div",{style:{display:"flex",gap:"8px"},children:(0,t.jsxs)("select",{value:Q,onChange:e=>Z(e.target.value),style:{background:"#0f172a",border:"1px solid #334155",color:"#94a3b8",borderRadius:"4px",padding:"4px 8px",fontSize:"0.8rem"},children:[(0,t.jsx)("option",{value:"all",children:"全部"}),(0,t.jsx)("option",{value:"failure",children:"失败"}),(0,t.jsx)("option",{value:"anomaly",children:"异常"})]})})]}),(0,t.jsx)("div",{style:{background:"#1e293b",borderRadius:"6px",border:"1px solid #334155",overflow:"hidden"},children:(0,t.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem"},children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{style:{background:"#0f172a"},children:[(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"100px"},children:"类型"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"auto"},children:"描述"}),(0,t.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"500px"},children:"恢复措施"})]})}),(0,t.jsx)("tbody",{children:er.failures.filter(e=>{if("all"===Q)return!0;let t=e.failure_type.toLowerCase();return"failure"===Q?t.includes("fail")||t.includes("error"):"anomaly"!==Q||t.includes("anomaly")||t.includes("warn")}).map((e,r)=>(0,t.jsxs)("tr",{style:{background:r%2==0?"#1e293b":"#1a2530"},children:[(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155"},children:(0,t.jsx)("span",{style:{background:e.failure_type.toLowerCase().includes("error")||e.failure_type.toLowerCase().includes("fail")?"#f87171":"#fbbf24",color:"#0f172a",padding:"2px 8px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold"},children:e.failure_type})}),(0,t.jsxs)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155"},children:[(0,t.jsx)("div",{style:{color:"#fca5a5",fontWeight:500,marginBottom:"4px"},children:e.description}),e.context&&(0,t.jsx)("div",{style:{fontSize:"0.8rem",color:"#94a3b8",fontFamily:"monospace",background:"rgba(0,0,0,0.3)",padding:"6px 8px",borderRadius:"4px",marginTop:"4px",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:e.context})]}),(0,t.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",color:"#86efac",fontSize:"0.8rem"},children:e.recovery||"-"})]},r))})]})})]}):(0,t.jsx)("div",{style:{padding:"1rem",border:"1px dashed #334155",borderRadius:"6px",color:"#64748b",textAlign:"center",fontSize:"0.9rem",marginBottom:"1.5rem"},children:"No intermediate failures detected."}),(0,t.jsx)(n,{executionId:eA,skillId:er.skill&&er.skill.trim()||(Array.isArray(er.skills)&&er.skills.length>0?er.skills[0]:void 0),user:er.user,onStepClick:Y})]})]})]})]}),(0,t.jsxs)("div",{style:{marginBottom:"2rem",display:"flex",gap:"1rem",alignItems:"center",flexWrap:"wrap"},children:[["all","24h","12h","1h"].map(e=>(0,t.jsx)("button",{className:"filter-time-btn","data-tf":e,onClick:()=>$(e),style:{padding:"6px 16px",background:M===e?"#38bdf8":"#1e293b",color:M===e?"#0f172a":"#94a3b8",border:"1px solid #334155",borderRadius:"4px",cursor:"pointer"},children:e.toUpperCase()},e)),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.8rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,t.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:"比较维度:"}),(0,t.jsxs)("div",{style:{display:"flex",background:"#1e293b",padding:"2px",borderRadius:"6px",border:"1px solid #334155"},children:[(0,t.jsx)("button",{onClick:()=>ey("label"),style:{padding:"4px 12px",borderRadius:"4px",fontSize:"0.85rem",background:"label"===eg?"#38bdf8":"transparent",color:"label"===eg?"#0f172a":"#94a3b8",border:"none",cursor:"pointer",transition:"all 0.2s",fontWeight:"label"===eg?"bold":"normal"},children:"标签 (Label)"}),(0,t.jsx)("button",{onClick:()=>ey("model"),style:{padding:"4px 12px",borderRadius:"4px",fontSize:"0.85rem",background:"model"===eg?"#38bdf8":"transparent",color:"model"===eg?"#0f172a":"#94a3b8",border:"none",cursor:"pointer",transition:"all 0.2s",fontWeight:"model"===eg?"bold":"normal"},children:"模型 (Model)"})]})]}),ek.length>0&&(0,t.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:"0.5rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,t.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:"Label:"}),(0,t.jsxs)("div",{style:{position:"relative"},children:[(0,t.jsxs)("button",{id:"label-menu-trigger",onClick:()=>ef(!eu),style:{background:"#1e293b",color:"#f8fafc",border:"1px solid #334155",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem",minWidth:"120px",justifyContent:"space-between"},children:[(0,t.jsx)("span",{id:"label-trigger-text",children:0===ec.size?"All Filter":`${ec.size} Selected`}),(0,t.jsx)("span",{style:{fontSize:"0.7rem"},children:"▼"})]}),(0,t.jsxs)("div",{id:"label-menu-dropdown",style:{display:eu?"block":"none",position:"absolute",top:"100%",left:0,marginTop:"4px",background:"#1e293b",border:"1px solid #334155",borderRadius:"4px",padding:"0.5rem",zIndex:50,minWidth:"200px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.5)",flexDirection:"column",gap:"0.5rem",maxHeight:"300px",overflowY:"auto"},children:[(0,t.jsx)("div",{id:"filter-label-clear",onClick:()=>{ep(new Set),ef(!1)},style:{cursor:"pointer",padding:"4px 8px",fontSize:"0.9rem",color:0===ec.size?"#38bdf8":"#94a3b8",borderBottom:"1px solid #334155",marginBottom:"4px"},children:"Show All (Clear Filter)"}),ek.map(e=>{let r=ec.has(e),o=e===ej?"(None)":String(e),l=e===ej?"__no_label__":String(e);return(0,t.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontSize:"0.9rem",padding:"2px 8px"},children:[(0,t.jsx)("input",{type:"checkbox",className:"filter-label-checkbox",value:l,checked:r,onChange:()=>{let t=new Set(ec);t.has(e)?t.delete(e):t.add(e),ep(t)}}),(0,t.jsx)("span",{style:{color:r?"#fff":"#cbd5e1"},children:o})]},String(e))})]}),eu&&(0,t.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:40},onClick:()=>ef(!1)})]})]}),eS.length>0&&(0,t.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:"0.5rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,t.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:"Model:"}),(0,t.jsxs)("div",{style:{position:"relative"},children:[(0,t.jsxs)("button",{onClick:()=>eh(!eb),style:{background:"#1e293b",color:"#f8fafc",border:"1px solid #334155",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem",minWidth:"120px",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:0===ex.size?"All Models":`${ex.size} Selected`}),(0,t.jsx)("span",{style:{fontSize:"0.7rem"},children:"▼"})]}),(0,t.jsxs)("div",{style:{display:eb?"block":"none",position:"absolute",top:"100%",left:0,marginTop:"4px",background:"#1e293b",border:"1px solid #334155",borderRadius:"4px",padding:"0.5rem",zIndex:50,minWidth:"200px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.5)",flexDirection:"column",gap:"0.5rem",maxHeight:"300px",overflowY:"auto"},children:[(0,t.jsx)("div",{onClick:()=>{em(new Set),eh(!1)},style:{cursor:"pointer",padding:"4px 8px",fontSize:"0.9rem",color:0===ex.size?"#38bdf8":"#94a3b8",borderBottom:"1px solid #334155",marginBottom:"4px"},children:"Show All (Clear Filter)"}),eS.map(e=>{let r=ex.has(e),o=e===ej?"(None)":String(e);return(0,t.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontSize:"0.9rem",padding:"2px 8px"},children:[(0,t.jsx)("input",{type:"checkbox",checked:r,onChange:()=>{let t=new Set(ex);t.has(e)?t.delete(e):t.add(e),em(t)}}),(0,t.jsx)("span",{style:{color:r?"#fff":"#cbd5e1"},children:o})]},String(e))})]}),eb&&(0,t.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:40},onClick:()=>eh(!1)})]})]})]}),ev.some(e=>null!=e.context_window_pct)&&(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsxs)("button",{onClick:()=>X(!V),style:{background:"transparent",border:"1px solid #334155",color:"#94a3b8",padding:"6px 14px",borderRadius:"4px",cursor:"pointer",fontSize:"0.9rem",display:"flex",alignItems:"center",gap:"6px",marginBottom:"0.5rem"},children:[(0,t.jsx)("span",{style:{fontSize:"0.7rem"},children:V?"▲":"▼"}),"上下文窗口利用率趋势 (%)"]}),V&&(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["上下文窗口利用率趋势 (%)",(0,t.jsx)(g,{content:"单次 LLM 调用中最大 token 数 / 模型上下文窗口限制 × 100。超过 90% 时推理质量可能下降。"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ev.filter(e=>null!=e.context_window_pct),children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"timestamp",tickFormatter:eR,stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,100]}),(0,t.jsx)(u,{contentStyle:{background:"#1e293b",borderColor:"#334155"}}),(0,t.jsx)(f,{y:90,stroke:"#f87171",strokeDasharray:"4 4",label:{value:"90%",fill:"#f87171",fontSize:11}}),er&&null!=er.context_window_pct&&(0,t.jsx)(f,{x:er.timestamp,stroke:"#fbbf24",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"#fbbf24",fontSize:11,position:"insideTopLeft"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"context_window_pct",stroke:"#a78bfa",dot:!0,strokeWidth:2})]})})]})]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"1rem",marginBottom:"2rem"},children:[(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["时延趋势 (秒)",(0,t.jsx)(g,{content:"从请求发出到收到最终完整回复的总耗时"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ev,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"timestamp",tickFormatter:eR,stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,t.jsx)(u,{contentStyle:{background:"#1e293b",borderColor:"#334155"}}),er&&(0,t.jsx)(f,{x:er.timestamp,stroke:"#fbbf24",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"#fbbf24",fontSize:11,position:"insideTopLeft"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"latency",stroke:"#38bdf8",dot:!0,strokeWidth:2})]})})]}),(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["Token 消耗趋势",(0,t.jsx)(g,{content:"输入 Prompt 与输出 Completion 的 Token 总和"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ev,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"timestamp",tickFormatter:eR,stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,t.jsx)(u,{contentStyle:{background:"#1e293b",borderColor:"#334155"}}),er&&(0,t.jsx)(f,{x:er.timestamp,stroke:"#fbbf24",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"#fbbf24",fontSize:11,position:"insideTopLeft"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"tokens",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["准确率趋势 (0-1)",(0,t.jsx)(g,{content:"基于 AI 裁判 (LLM) 对执行结果的自动评分 (1.0=通过, 0.0=失败)"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ev,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"timestamp",tickFormatter:eR,stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,t.jsx)(u,{contentStyle:{background:"#1e293b",borderColor:"#334155"}}),er&&(0,t.jsx)(f,{x:er.timestamp,stroke:"#fbbf24",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"#fbbf24",fontSize:11,position:"insideTopLeft"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"answer_score",stroke:"#4ade80",dot:!0,strokeWidth:2})]})})]}),(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["技能召回率趋势",(0,t.jsx)(g,{content:"基于执行结果是否使用了预期技能计算出的值 (0-1),表示正确调用技能的比例"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ev,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"timestamp",tickFormatter:eR,stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,t.jsx)(u,{contentStyle:{background:"#1e293b",borderColor:"#334155"}}),er&&(0,t.jsx)(f,{x:er.timestamp,stroke:"#fbbf24",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"#fbbf24",fontSize:11,position:"insideTopLeft"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"skill_recall_rate",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),e_.length>0&&(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["CPSR 趋势",(0,t.jsx)(g,{content:"Cost Per Successful Resolution: Average cost per successful task resolution.\nFormula: (total cost) / (number of runs with successful resolutions)"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:e_,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"timestamp",tickFormatter:eR,stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11,tickFormatter:e=>`$${e.toFixed(3)}`}),(0,t.jsx)(u,{formatter:(e,t)=>"CPSR"===t?[`$${e?.toFixed(4)||"N/A"}`,"CPSR"]:[e,String(t)],contentStyle:{backgroundColor:"#1e293b",borderColor:"#334155",color:"#f8fafc"}}),er&&null!=er.cost&&(0,t.jsx)(f,{x:er.timestamp,stroke:"#fbbf24",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"#fbbf24",fontSize:11,position:"insideTopLeft"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"cpsr",name:"CPSR",stroke:"#a78bfa",strokeWidth:2,dot:!0})]})})]})]}),ew.latency.length>0&&(0,t.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,t.jsxs)("h2",{style:{fontSize:"1.25rem",marginBottom:"1rem"},children:["按 ","label"===eg?"标签 (Label)":"模型 (Model)"," 对比 (平均值)"]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem"},children:[(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["平均时延 - ","label"===eg?"标签":"模型",(0,t.jsx)(g,{content:"平均延迟时间"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ew.latency,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,t.jsx)(u,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"latency",stroke:"#38bdf8",dot:!0,strokeWidth:2})]})})]}),(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["平均 Token - ","label"===eg?"标签":"模型",(0,t.jsx)(g,{content:"平均 Token 使用量"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ew.tokens,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,t.jsx)(u,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"tokens",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["平均准确率 - ","label"===eg?"标签":"模型",(0,t.jsx)(g,{content:"平均准确率 (0-1)"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ew.accuracy,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,t.jsx)(u,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"answer_score",stroke:"#4ade80",dot:!0,strokeWidth:2})]})})]}),(0,t.jsxs)("div",{className:"card",style:S,children:[(0,t.jsxs)("h3",{style:v,children:["技能召回率 - ","label"===eg?"标签":"模型",(0,t.jsx)(g,{content:"基于执行结果是否使用了预期技能计算出的值 (0-1),表示正确调用技能的比例"})]}),(0,t.jsx)(b,{width:"100%",height:200,children:(0,t.jsxs)(c,{data:ew.skillRecallRate,children:[(0,t.jsx)(m,{strokeDasharray:"3 3",stroke:"#334155"}),(0,t.jsx)(p,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,t.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,t.jsx)(u,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,t.jsx)(d,{type:"monotone",dataKey:"skill_recall_rate",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]})]})]}),(0,t.jsxs)("div",{className:"list-container",children:[(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsx)("h2",{style:{fontSize:"1.25rem",marginBottom:"0.5rem"},children:"同问题执行记录"}),(0,t.jsx)("p",{style:{fontSize:"0.9rem",color:"#94a3b8"},children:"点击记录可查看详细信息"})]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr 1fr 1fr",padding:"1rem",borderBottom:"1px solid #334155",color:"#94a3b8",fontSize:"0.9rem"},children:[(0,t.jsx)("div",{children:"时间 / ID"}),(0,t.jsx)("div",{children:"标签"}),(0,t.jsx)("div",{children:"时延"}),(0,t.jsx)("div",{children:"消耗"}),(0,t.jsx)("div",{children:"技能召回率"}),(0,t.jsx)("div",{children:"窗口%"}),(0,t.jsx)("div",{children:"评分"})]}),ev.slice().reverse().map(e=>{let r=e.task_id||e.upload_id||`temp-${e.timestamp}`,o=r===eA;return(0,t.jsx)("div",{className:"record-row","data-timestamp":new Date(e.timestamp).getTime(),"data-label":e.label||"__no_label__",style:{borderBottom:"1px solid #1e293b",background:o?"rgba(56, 189, 248, 0.15)":"#1e293b",marginBottom:"1px",cursor:"pointer",transition:"background 0.2s"},onClick:()=>{if(!o){let t=new URLSearchParams;t.set("query",e.query),e.framework&&t.set("framework",e.framework),t.set("expandTaskId",r),window.open(`/details?${t.toString()}`,"_blank")}},onMouseOver:e=>{o||(e.currentTarget.style.background="#334155")},onMouseOut:e=>{o||(e.currentTarget.style.background="#1e293b")},children:(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr 1fr 1fr",padding:"1rem",alignItems:"center"},children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{fontWeight:"bold",fontSize:"0.95rem",display:"flex",alignItems:"center",gap:"8px"},children:[eT(e.timestamp),o&&(0,t.jsx)("span",{style:{background:"#38bdf8",color:"#0f172a",padding:"2px 8px",borderRadius:"4px",fontSize:"0.7rem",fontWeight:"bold"},children:"当前"})]}),(0,t.jsx)("div",{style:{fontSize:"0.8rem",color:"#64748b"},children:r})]}),(0,t.jsx)("div",{style:{fontSize:"0.9rem",color:"#cbd5e1"},children:e.label||"-"}),(0,t.jsx)("div",{children:e.latency?e.latency<1?(1e3*e.latency).toFixed(0)+"ms":e.latency.toFixed(2)+"s":"-"}),(0,t.jsx)("div",{children:e.tokens}),(0,t.jsx)("div",{style:{color:null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate?1===e.skill_recall_rate?"#4ade80":e.skill_recall_rate>0?"#fbbf24":"#f87171":"#94a3b8",fontWeight:"bold"},children:null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate?(100*e.skill_recall_rate).toFixed(0)+"%":"--"}),(0,t.jsx)("div",{style:{color:null!=e.context_window_pct?e.context_window_pct>90?"#f87171":"#4ade80":"#94a3b8"},children:null!=e.context_window_pct?`${e.context_window_pct.toFixed(1)}%`:"-"}),(0,t.jsx)("div",{style:{color:null===e.answer_score?"#94a3b8":(e.answer_score||0)>.8?"#4ade80":"#f87171"},children:null===e.answer_score?"--":e.answer_score?.toFixed(2)})]})},r)})]})]})}let S={background:"#1e293b",border:"1px solid #334155",borderRadius:"8px",padding:"1rem",display:"flex",flexDirection:"column"},v={margin:"0 0 1rem 0",fontSize:"0.9rem",color:"#94a3b8",fontWeight:"normal"},w={color:"#38bdf8",margin:0,fontSize:"0.95rem"},_={fontFamily:"monospace",fontSize:"0.9rem",lineHeight:"1.5",whiteSpace:"pre-wrap",color:"#e2e8f0"};e.s(["default",()=>j],18819)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--background:#0f172a;--foreground:#f8fafc;--card-bg:#1e293bb3;--card-border:#94a3b81a;--primary:#38bdf8;--secondary:#818cf8;--accent:#f472b6;--success:#4ade80;--warning:#fbbf24}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}*{box-sizing:border-box}.dashboard-container{max-width:1600px;margin:0 auto;padding:2rem}.header{border-bottom:1px solid var(--card-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1rem;display:flex}.title-group h1{background:linear-gradient(to right,var(--primary),var(--secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:2.5rem;font-weight:800}.subtitle{color:#94a3b8;margin-top:.5rem;font-size:1.1rem}.controls{align-items:center;gap:1rem;display:flex}select{color:#f8fafc;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:.5rem;outline:none;padding:.5rem 1rem;font-size:.875rem}select:focus{border-color:var(--primary)}.grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.analysis-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.card{background:var(--card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--card-border);border-radius:1rem;flex-direction:column;padding:1.5rem;transition:transform .2s,box-shadow .2s;display:flex}.card:hover{transform:translateY(-2px);box-shadow:0 10px 30px -10px #00000080}.card-title{color:#94a3b8;justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:1.1rem;font-weight:600;display:flex}.stat-value{color:var(--foreground);font-size:2rem;font-weight:700}.stat-sub{color:#64748b;margin-top:.25rem;font-size:.875rem}.chart-container{flex:1;width:100%;height:350px}.table-container{overflow-x:auto}table{border-collapse:collapse;width:100%;margin-top:1rem}th,td{text-align:left;border-bottom:1px solid var(--card-border);padding:1rem}th{color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}tr:last-child td{border-bottom:none}.tag{text-transform:uppercase;border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;display:inline-block}.section-title{color:var(--foreground);align-items:center;gap:1rem;margin:3rem 0 1.5rem;font-size:1.5rem;font-weight:700;display:flex}.loading{height:50vh;color:var(--primary);justify-content:center;align-items:center;font-size:1.5rem;display:flex}.analysis-controls{background:var(--card-bg);border:1px solid var(--card-border);border-radius:1rem;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;padding:1rem;display:flex}.control-group{flex-direction:column;gap:.5rem;display:flex}.control-label{color:#94a3b8;text-transform:uppercase;font-size:.75rem;font-weight:600}.highlight-bad{color:var(--accent)}.highlight-good{color:var(--success)}.tab-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.5rem 1rem;font-size:1rem}.tab-btn.active{color:#38bdf8;border-bottom-color:#38bdf8}.btn-primary{color:#0f172a;cursor:pointer;background:#38bdf8;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:700}.btn-primary:hover{opacity:.9}.btn-sm{color:#fff;cursor:pointer;border:none;border-radius:4px;padding:4px 8px;font-size:.8rem;transition:background .2s}.btn-sm:hover{opacity:.8}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:#1e293b;border:1px solid #334155;border-radius:12px;padding:2rem;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}input,textarea,select{color:#f8fafc;background:#0f172a;border:1px solid #334155;border-radius:4px;padding:8px}input:focus,textarea:focus,select:focus{border-color:#38bdf8;outline:none}.skill-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;display:grid}.skill-card{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#1e293b99;border:1px solid #94a3b81a;border-radius:.75rem;flex-direction:column;height:100%;transition:all .2s;display:flex;overflow:hidden}.skill-card:hover{border-color:#94a3b84d;transform:translateY(-2px);box-shadow:0 10px 20px -5px #0006}.skill-card-header{background:linear-gradient(90deg,#1e293bcc,#0000);border-bottom:1px solid #94a3b81a;justify-content:space-between;align-items:flex-start;padding:1.25rem;display:flex}.skill-title{color:#f8fafc;white-space:nowrap;text-overflow:ellipsis;max-width:200px;margin:0 0 .5rem;font-size:1.125rem;font-weight:700;overflow:hidden}.skill-meta{align-items:center;gap:.75rem;display:flex}.skill-version-badge{color:#38bdf8;background:#38bdf81a;border:1px solid #38bdf833;border-radius:4px;padding:.125rem .5rem;font-family:monospace;font-size:.75rem}.skill-date{color:#64748b;font-size:.75rem}.skill-icon{background:#3341554d;border-radius:.5rem;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;font-size:1.5rem;display:flex}.skill-body{flex-direction:column;flex:1;gap:1rem;padding:1.25rem;display:flex}.skill-description{color:#94a3b8;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;height:4.5em;font-size:.875rem;line-height:1.5;display:-webkit-box;overflow:hidden}.skill-tags{flex-wrap:wrap;gap:.5rem;display:flex}.skill-tag{color:#cbd5e1;background:#33415580;border:1px solid #47556980;border-radius:9999px;padding:.2rem .5rem;font-size:.7rem}.skill-actions{background:#0f172a66;border-top:1px solid #94a3b81a;gap:.75rem;padding:1rem;display:flex}.btn-manage{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:.5rem;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s;display:flex;box-shadow:0 4px 6px -1px #2563eb4d}.btn-manage:hover{background:#1d4ed8;transform:translateY(-1px);box-shadow:0 6px 12px -2px #2563eb66}.btn-manage:active{transform:translateY(0)}.btn-delete{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #94a3b833;border-radius:.5rem;justify-content:center;align-items:center;width:2.8rem;font-size:1.1rem;transition:all .2s;display:flex}.btn-delete:hover{color:#f87171;background:#ef444426;border-color:#ef444480}.modal-window-lg{background:#1e293b;border:1px solid #334155;border-radius:.75rem;flex-direction:column;width:900px;max-width:95vw;height:85vh;display:flex;overflow:hidden;box-shadow:0 25px 50px -12px #0009}.modal-header-new{background:#0f172a;border-bottom:1px solid #334155;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-sync-banner{background:#1e293bcc;border-bottom:1px solid #334155;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.nav-tabs{border-bottom:1px solid #334155;margin-bottom:1.5rem;display:flex}.nav-tab-item{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.75rem 1.5rem;font-size:.9rem;font-weight:500;transition:all .2s}.nav-tab-item:hover{color:#e2e8f0}.nav-tab-item.active{color:#38bdf8;border-bottom-color:#38bdf8}.upload-card{text-align:center;background:#1e293b4d;border:2px dashed #475569;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;padding:4rem 2rem;transition:all .2s;display:flex}.upload-card:hover{background:#1e293b80;border-color:#94a3b8}.login-container{background:radial-gradient(circle at top,#1e293b 0%,#0f172a 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-box{width:100%;max-width:28rem;animation:.5s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.login-form{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1e293b80;border:1px solid #94a3b81a;border-radius:1rem;padding:2.5rem;box-shadow:0 25px 50px -12px #00000080}.login-label{color:#cbd5e1;letter-spacing:.02em;margin-bottom:.5rem;font-size:.9rem;font-weight:600;display:block}.login-input{appearance:none;color:#f8fafc;background:#0f172a99;border:1px solid #334155;border-radius:.5rem;width:100%;padding:.75rem 1rem;font-size:1rem;line-height:1.5;transition:all .2s;box-shadow:inset 0 2px 4px #0003}.login-input:focus{border-color:var(--primary);background:#0f172acc;outline:none;box-shadow:0 0 0 2px #38bdf833,inset 0 2px 4px #0003}.login-btn{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;cursor:pointer;text-shadow:0 1px 2px #0003;border:none;border-radius:.5rem;width:100%;margin-top:1rem;padding:.875rem 1.5rem;font-size:1rem;font-weight:700;transition:all .2s;box-shadow:0 4px 6px -1px #0003}.login-btn:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 10px 15px -3px #0000004d}.login-btn:active{transform:translateY(0)}
|