@witty-ai/skill-insight 0.5.0-beta → 0.7.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 +6 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +24 -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 +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- 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/config/create/route.js +4 -3
- 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 +5 -4
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js +6 -5
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/evaluation/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +6 -5
- 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 +4 -3
- 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]/end/route.js +4 -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 +6 -5
- package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/session/route.js +4 -4
- package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js +6 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js +6 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route_client-reference-manifest.js +2 -0
- 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]/route.js +3 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +6 -5
- package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/route.js +3 -2
- package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js +8 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/skills/upload/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/task-stats/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/task-stats/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/task-stats/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/task-stats/route.js +12 -0
- package/.next/standalone/.next/server/app/api/task-stats/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/task-stats/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/task-stats/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/upload/route.js +5 -4
- package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +2 -2
- 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 +5 -5
- package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +5 -5
- 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 +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__23efcd78._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__591248f3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6261d672._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8402dfd1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__89404730._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d551ea2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa3d72e3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa5c8858._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c20da96a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c602c518._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f9e66e02._.js +3 -0
- package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
- package/.next/standalone/.next/server/chunks/_3e8b4d8c._.js +1 -1
- package/.next/standalone/.next/server/chunks/_46f10554._.js +3 -0
- package/.next/standalone/.next/server/chunks/_4c806e26._.js +3 -0
- package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
- package/.next/standalone/.next/server/chunks/_ddffef3e._.js +1 -1
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_setup_opencode-tui_route_actions_fc8ae29f.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_skills_sync-enterprise_route_actions_0ca45899.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_task-stats_route_actions_983505cd.js +3 -0
- package/.next/standalone/.next/server/chunks/ce889_server_app_api_setup_opencode-commands_si-optimizer_route_actions_fcde30ef.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +47 -4
- 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_98433cb8._.js +237 -0
- package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +57 -8
- package/.next/standalone/.next/server/chunks/src_lib_119f6c7b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9ab7cc4a._.js → [root-of-the-server]__082c32a2._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_049876f0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_09546b95._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +9 -9
- package/.next/standalone/.next/server/chunks/ssr/{_b121f1ae._.js → _e2faf4f5._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_3582f3d0.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_a1341fea._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.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/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{737b8cff3c6a4e30.js → 015467355d3866a3.js} +1 -1
- package/.next/standalone/.next/static/chunks/09f192c9b0609ad8.js +1 -0
- package/.next/standalone/.next/static/chunks/1945a5514fbc393c.css +1 -0
- package/.next/{static/chunks/07c9f28a269c701a.js → standalone/.next/static/chunks/361e4cf1e9a71ccb.js} +1 -1
- package/.next/{static/chunks/5432ce4a494bc74d.js → standalone/.next/static/chunks/60bc50374fd32f20.js} +3 -3
- package/.next/standalone/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
- package/.next/standalone/.next/static/chunks/961f7fa606dd26a8.js +1 -0
- package/.next/standalone/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
- package/.next/standalone/.next/static/chunks/c513373e5cfedd5b.js +2 -0
- package/.next/standalone/.next/static/chunks/ca3017e51e817855.js +1 -0
- package/.next/{static/chunks/7e35f4cf2e266022.js → standalone/.next/static/chunks/cb104c3cb4c52833.js} +1 -1
- package/.next/{static/chunks/ff6357067630b168.js → standalone/.next/static/chunks/e13d208072a48316.js} +1 -1
- package/.next/standalone/.next/static/chunks/{e09d9ee16fe90255.js → f786bb68e17b12b4.js} +1 -1
- package/.next/standalone/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
- package/.next/standalone/node_modules/.prisma/client/edge.js +7 -3
- package/.next/standalone/node_modules/.prisma/client/index-browser.js +4 -0
- package/.next/standalone/node_modules/.prisma/client/index.js +7 -3
- package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
- package/.next/standalone/node_modules/.prisma/client/schema.prisma +26 -22
- package/.next/standalone/node_modules/.prisma/client/wasm.js +4 -0
- package/.next/standalone/node_modules/adm-zip/util/constants.js +142 -0
- package/.next/standalone/node_modules/adm-zip/util/decoder.js +5 -0
- package/.next/standalone/node_modules/adm-zip/util/errors.js +63 -0
- package/.next/standalone/node_modules/adm-zip/util/fattr.js +76 -0
- package/.next/standalone/node_modules/adm-zip/util/index.js +5 -0
- package/.next/standalone/node_modules/adm-zip/util/utils.js +339 -0
- package/.next/standalone/package.json +6 -2
- package/.next/standalone/prisma/schema.prisma +7 -3
- package/.next/standalone/scripts/opencode_plugin.ts +158 -50
- package/.next/standalone/scripts/opencode_tui_plugin.tsx +308 -0
- package/.next/standalone/scripts/si-optimizer.md +5 -0
- package/.next/static/chunks/{737b8cff3c6a4e30.js → 015467355d3866a3.js} +1 -1
- package/.next/static/chunks/09f192c9b0609ad8.js +1 -0
- package/.next/static/chunks/1945a5514fbc393c.css +1 -0
- package/.next/{standalone/.next/static/chunks/07c9f28a269c701a.js → static/chunks/361e4cf1e9a71ccb.js} +1 -1
- package/.next/{standalone/.next/static/chunks/5432ce4a494bc74d.js → static/chunks/60bc50374fd32f20.js} +3 -3
- package/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
- package/.next/static/chunks/961f7fa606dd26a8.js +1 -0
- package/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
- package/.next/static/chunks/c513373e5cfedd5b.js +2 -0
- package/.next/static/chunks/ca3017e51e817855.js +1 -0
- package/.next/{standalone/.next/static/chunks/7e35f4cf2e266022.js → static/chunks/cb104c3cb4c52833.js} +1 -1
- package/.next/{standalone/.next/static/chunks/ff6357067630b168.js → static/chunks/e13d208072a48316.js} +1 -1
- package/.next/static/chunks/{e09d9ee16fe90255.js → f786bb68e17b12b4.js} +1 -1
- package/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
- package/package.json +6 -2
- package/prisma/schema.prisma +7 -3
- package/scripts/activate_telemetry.sh +44 -1
- package/scripts/opencode_plugin.ts +158 -50
- package/scripts/opencode_tui_plugin.tsx +308 -0
- package/scripts/si-optimizer.md +5 -0
- package/scripts/utils.js +0 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2f0baee._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +0 -3
- package/.next/standalone/.next/server/chunks/_41a98bd8._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +0 -175
- package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +0 -3
- package/.next/standalone/.next/static/chunks/01eddf501c574a44.js +0 -1
- package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +0 -1
- package/.next/standalone/.next/static/chunks/4071dbec4cf7e72e.js +0 -109
- package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +0 -1
- package/.next/standalone/.next/static/chunks/a87b5e84254095a5.js +0 -1
- package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +0 -1
- package/.next/standalone/.next/static/chunks/dc59a07a8f327b40.js +0 -1
- package/.next/standalone/LICENSE +0 -21
- package/.next/standalone/bin/cli.js +0 -106
- package/.next/standalone/custom-models.example.json +0 -21
- package/.next/standalone/eslint.config.mjs +0 -18
- package/.next/standalone/features/feature-skill-used-jump-link/design/2026-03-18-skill-used-jump-link-design.md +0 -126
- package/.next/standalone/features/feature-skill-used-jump-link/feature.json +0 -32
- package/.next/standalone/features/feature-skill-used-jump-link/issue.md +0 -32
- package/.next/standalone/features/feature-skill-used-jump-link/plans/2026-03-18-skill-used-jump-link.md +0 -528
- package/.next/standalone/next.config.ts +0 -41
- package/.next/standalone/scripts/activate_telemetry.sh +0 -159
- package/.next/standalone/scripts/create_migration_package.sh +0 -124
- package/.next/standalone/scripts/fix_models.js +0 -66
- package/.next/standalone/scripts/init_opengauss.py +0 -284
- package/.next/standalone/scripts/install.js +0 -273
- package/.next/standalone/scripts/logs.js +0 -38
- package/.next/standalone/scripts/otel_data/logs.jsonl +0 -12
- package/.next/standalone/scripts/otel_data/metrics.jsonl +0 -21
- package/.next/standalone/scripts/otel_data/raw_requests.jsonl +0 -8
- package/.next/standalone/scripts/otel_data/raw_requests.jsonl.bak +0 -6
- package/.next/standalone/scripts/otel_receiver.py +0 -580
- package/.next/standalone/scripts/postinstall.js +0 -192
- package/.next/standalone/scripts/publish-npm.js +0 -401
- package/.next/standalone/scripts/restart.js +0 -26
- package/.next/standalone/scripts/restart.sh +0 -138
- package/.next/standalone/scripts/restart_dev.sh +0 -132
- package/.next/standalone/scripts/start.js +0 -291
- package/.next/standalone/scripts/status.js +0 -41
- package/.next/standalone/scripts/stop.js +0 -90
- package/.next/standalone/scripts/sync_skills.js +0 -216
- package/.next/standalone/scripts/utils.js +0 -235
- package/.next/standalone/tests/setup_skill_optimizer.sh +0 -118
- package/.next/standalone/tsconfig.json +0 -34
- package/.next/static/chunks/01eddf501c574a44.js +0 -1
- package/.next/static/chunks/1e782a49beaf489c.js +0 -1
- package/.next/static/chunks/4071dbec4cf7e72e.js +0 -109
- package/.next/static/chunks/67bd1a5de2195779.js +0 -1
- package/.next/static/chunks/a87b5e84254095a5.js +0 -1
- package/.next/static/chunks/c6bd2818656b1f20.css +0 -1
- package/.next/static/chunks/dc59a07a8f327b40.js +0 -1
- /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
- /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
- /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
module.exports=[62414,e=>{"use strict";function t(e,t,n,s,i){let r=i?`Reference Skill Definition (Using this skill as the context for evaluation):
|
|
2
|
-
${i}
|
|
3
|
-
|
|
4
|
-
`:"";return`
|
|
5
|
-
You are an objective and strict judge. Your task is to evaluate a "User Answer" against a set of weighted criteria for a given "User Query".
|
|
6
|
-
|
|
7
|
-
${r}User Query: ${e}
|
|
8
|
-
User Answer: ${t}
|
|
9
|
-
|
|
10
|
-
Evaluation Criteria (Score strictly based on these weighted items):
|
|
11
|
-
1. Root Causes (Must identify these issues):
|
|
12
|
-
${n.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
|
|
13
|
-
|
|
14
|
-
2. Key Actions (Must perform these actions):
|
|
15
|
-
${s.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
|
|
16
|
-
|
|
17
|
-
Evaluation Steps:
|
|
18
|
-
1. For each item listed above (marked with [ID: ...]), determine the degree of match (0.0 to 1.0).
|
|
19
|
-
- 0.0 = Not mentioned or completely wrong.
|
|
20
|
-
- 0.5 = Partially mentioned or vague.
|
|
21
|
-
- 1.0 = Clearly and correctly addressed.
|
|
22
|
-
**CRITICAL**: For Key Actions involving specific operations (e.g., "backup", "modify", "restart"), you must find EXPLICT EVIDENCE in the User Answer that these actions were performed (checking/reading is NOT the same as backing up).
|
|
23
|
-
2. Provide a brief explanation (in Chinese) for your evaluation of each item.
|
|
24
|
-
3. If a Reference Skill Definition is provided, consider whether the answer aligns with the skill's capabilities and instructions, but primarily score based on the specific Root Causes and Key Actions listed above.
|
|
25
|
-
|
|
26
|
-
Respond ONLY with a JSON object in the following format:
|
|
27
|
-
{
|
|
28
|
-
"evaluations": [
|
|
29
|
-
{ "id": "RC-0", "match_score": 0.5, "explanation": "此处用中文简要解释评分理由..." },
|
|
30
|
-
{ "id": "KA-0", "match_score": 1.0, "explanation": "..." }
|
|
31
|
-
...
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
`}e.s(["generateJudgePrompt",()=>t])},33526,e=>{"use strict";let t=`
|
|
35
|
-
你是一个专业的 Skill 优化分析师。你的任务是:
|
|
36
|
-
|
|
37
|
-
1. 分析 Agent 在某个评分项上扣分的原因
|
|
38
|
-
2. 判断该扣分是否可以通过优化 Skill 定义来解决
|
|
39
|
-
3. 检查 Agent 的实际执行过程是否符合 Skill 中定义的步骤
|
|
40
|
-
|
|
41
|
-
## 判断标准
|
|
42
|
-
|
|
43
|
-
**是 Skill 问题的情况**:
|
|
44
|
-
- Skill 中完全没有提到该知识点或操作步骤
|
|
45
|
-
- Skill 中的描述不够清晰或不够详细,导致 Agent 无法正确理解
|
|
46
|
-
- Skill 中缺少关键的参数说明、工具使用方法或注意事项
|
|
47
|
-
- Skill 中的信息过时或与实际情况不符
|
|
48
|
-
- Agent 的执行步骤与 Skill 定义不一致,但 Skill 的指导本身存在问题(如步骤顺序不合理、缺少前置条件说明等)
|
|
49
|
-
|
|
50
|
-
**不是 Skill 问题的情况**:
|
|
51
|
-
- Skill 中已经清楚地包含了相关信息,但 Agent 没有正确使用(模型能力问题)
|
|
52
|
-
- 该评分项要求的是通用知识,不在 Skill 的职责范围内
|
|
53
|
-
- 该评分项涉及的是运行时环境问题(网络、权限等)
|
|
54
|
-
- Agent 的执行过程偏离了 Skill 的指导,但 Skill 的指导本身是正确和清晰的
|
|
55
|
-
|
|
56
|
-
## 分析步骤
|
|
57
|
-
|
|
58
|
-
1. **阅读 Skill 定义**:理解 Skill 规定的操作步骤和知识要点
|
|
59
|
-
2. **查看交互历史**:观察 Agent 实际执行了哪些操作
|
|
60
|
-
3. **对比分析**:
|
|
61
|
-
- Agent 的执行是否遵循了 Skill 的指导?
|
|
62
|
-
- 如果没有遵循,是因为 Skill 不清晰,还是 Agent 自身的问题?
|
|
63
|
-
- 评分项要求的内容在 Skill 中是否有足够的覆盖?
|
|
64
|
-
4. **得出结论**:判断是否是 Skill 问题,并给出改进建议
|
|
65
|
-
|
|
66
|
-
## 输出格式
|
|
67
|
-
|
|
68
|
-
请以 JSON 格式返回:
|
|
69
|
-
{
|
|
70
|
-
"id": "评分项ID",
|
|
71
|
-
"is_skill_issue": true或false,
|
|
72
|
-
"reasoning": "使用中文详细解释判断依据,需要:1) 引用 Skill 定义中的相关内容 2) 说明 Agent 执行过程中的表现 3) 解释为什么是/不是 Skill 问题",
|
|
73
|
-
"improvement_suggestion": "如果是 Skill 问题,给出具体的改进建议,说明应该在 Skill 中添加或修改什么内容;否则留空或不填"
|
|
74
|
-
}
|
|
75
|
-
`;function n(e,n,s,i,r){return`${t}
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## 分析材料
|
|
80
|
-
|
|
81
|
-
### [当前 Skill 定义]
|
|
82
|
-
\`\`\`
|
|
83
|
-
${e}
|
|
84
|
-
\`\`\`
|
|
85
|
-
|
|
86
|
-
### [用户问题]
|
|
87
|
-
${s}
|
|
88
|
-
|
|
89
|
-
### [Agent 执行过程 - 完整交互历史]
|
|
90
|
-
\`\`\`
|
|
91
|
-
${r}
|
|
92
|
-
\`\`\`
|
|
93
|
-
|
|
94
|
-
### [Agent 最终回答]
|
|
95
|
-
${i}
|
|
96
|
-
|
|
97
|
-
### [待分析的评分项]
|
|
98
|
-
- **ID**: ${n.id}
|
|
99
|
-
- **类型**: ${"root_cause"===n.type?"Root Cause (根因分析)":"Key Action (关键操作)"}
|
|
100
|
-
- **评分标准**: ${n.content}
|
|
101
|
-
- **得分**: ${(100*n.match_score).toFixed(0)}% (满分 100%)
|
|
102
|
-
- **扣分原因**: ${n.explanation}
|
|
103
|
-
- **权重**: ${n.weight}
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
请根据以上材料,判断此评分项的扣分是否可以通过优化 Skill 定义来改善,并输出 JSON 结果:`}e.s(["SKILL_ISSUE_ANALYSIS_PROMPT",0,t,"generateSkillIssuePrompt",()=>n])},44087,e=>{"use strict";let t=`
|
|
108
|
-
你是一位专家级的日志分析师。你的任务是分析用户与 AI 助手之间的对话历史(包括工具输出),并提取任何“中间故障”或“异常过程”。
|
|
109
|
-
|
|
110
|
-
“中间故障”或“异常过程”定义如下:
|
|
111
|
-
1. **工具执行错误**:代理尝试运行工具(例如 bash 命令、python 脚本)但失败了(非零退出代码、堆栈跟踪、错误消息)。
|
|
112
|
-
2. **逻辑/推理修正**:代理意识到自己犯了错误并明确纠正自己(例如,“我犯了一个错误...”,“之前的方法失败了...”)。
|
|
113
|
-
3. **超时/卡住**:代理提到等待太久或进程卡住。
|
|
114
|
-
4. **无效参数**:代理尝试使用带有无效参数的工具并被系统拒绝。
|
|
115
|
-
|
|
116
|
-
你将获得包含完整对话历史的最后一次交互内容。
|
|
117
|
-
|
|
118
|
-
逐步分析历史记录。对于发现的每个故障,提取:
|
|
119
|
-
- failure_type: (Tool Error / Reasoning Error / Timeout / Invalid Usage)
|
|
120
|
-
- description: 用中文简要总结出了什么问题。
|
|
121
|
-
- context: 导致失败的具体命令或推理内容。
|
|
122
|
-
- recovery: 代理如何尝试恢复(如果有)。
|
|
123
|
-
|
|
124
|
-
仅以以下 JSON 格式响应:
|
|
125
|
-
{
|
|
126
|
-
"failures": [
|
|
127
|
-
{
|
|
128
|
-
"failure_type": "Tool Error",
|
|
129
|
-
"description": "无法安装包 'xyz'",
|
|
130
|
-
"context": "pip install xyz",
|
|
131
|
-
"recovery": "代理尝试改用 apt-get。"
|
|
132
|
-
},
|
|
133
|
-
...
|
|
134
|
-
]
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
如果未发现故障,请返回:
|
|
138
|
-
{
|
|
139
|
-
"failures": []
|
|
140
|
-
}
|
|
141
|
-
`;function n(e){return`
|
|
142
|
-
${t}
|
|
143
|
-
|
|
144
|
-
Conversation History:
|
|
145
|
-
${e}
|
|
146
|
-
`}e.s(["FAILURE_EXTRACTION_PROMPT",0,t,"generateFailureAnalysisPrompt",()=>n])},18868,e=>{"use strict";let t=`
|
|
147
|
-
你是一位专家级的日志分析师。你的任务是分析用户与 AI 助手之间的完整对话历史,并精准提取本次会话的**最终执行结果**。
|
|
148
|
-
|
|
149
|
-
**提取规则:**
|
|
150
|
-
1. **必须完整保留**:如果最终结果分散在多个连续的回复中(例如先输出长篇详细报告,紧接着输出总结摘要),必须将它们**全部提取并按顺序拼接**,形成一个完整的报告。
|
|
151
|
-
2. **剔除过程噪声**:只提取最终交付给用户的有效信息(如分析报告、代码方案、问题解答)。必须剔除之前的思考过程、工具调用命令(如 bash/python)、工具执行日志、自我纠正的尝试等中间过程。
|
|
152
|
-
3. **保持原样**:提取的内容必须**完全保持原样(Verbatim)**,不要进行总结、改写或缩减。包括 Markdown 格式(标题、列表、代码块)都要保留。
|
|
153
|
-
4. **识别头部**:通常最终结果会以明确的标题开始(如 "# 分析报告"、"## 结论"),或者直接给出用户请求的答案。
|
|
154
|
-
|
|
155
|
-
**输入数据:**
|
|
156
|
-
完整的对话历史记录。
|
|
157
|
-
|
|
158
|
-
**输出格式:**
|
|
159
|
-
请直接返回提取后的最终结果内容。不要包含 JSON 格式,不要包含 "Here is the result:" 等废话,由于内容可能包含 Markdown,请确保输出是纯文本格式的 Markdown 内容。
|
|
160
|
-
`;function n(e){return`
|
|
161
|
-
${t}
|
|
162
|
-
|
|
163
|
-
**对话历史:**
|
|
164
|
-
${e}
|
|
165
|
-
|
|
166
|
-
**请提取最终结果:**
|
|
167
|
-
`}e.s(["EXTRACTION_PROMPT",0,t,"generateExtractionPrompt",()=>n])},31390,e=>e.a(async(t,n)=>{try{var s=e.i(22734);e.i(89228);var i=e.i(88045),r=e.i(14747),l=e.i(74008),o=e.i(22965),a=t([o]);[o]=a.then?(await a)():a;let A=r.default.join(process.cwd(),"data","model_debug.jsonl");function c(e,t,n){try{let i=r.default.dirname(A);s.default.existsSync(i)||s.default.mkdirSync(i,{recursive:!0});let l={timestamp:new Date().toISOString(),stage:e,input:t,output:n};s.default.appendFileSync(A,JSON.stringify(l)+"\n")}catch(e){console.error("Log error",e)}}async function u(e){let t=await (0,o.getActiveConfig)(e);if(!t)return{client:null,model:null};let n=t.apiKey||"no-api-key-required",s=t.baseUrl||"https://api.deepseek.com",{customFetch:r}=(0,l.getProxyConfig)();return{client:new i.OpenAI({apiKey:n,baseURL:s,fetch:r}),model:t.model||"deepseek-chat"}}async function g(t,n,s,i){let{client:r,model:l}=await u(i);if(!r||!r.apiKey)return console.warn("LLM Evaluation disabled or missing config. Skipping."),{is_correct:!1,score:0,reason:"请在首页左上角的设置中配置 LLM"};try{let i=n.root_causes||[],o=n.key_actions||[],a=i.map((e,t)=>({id:`RC-${t}`,...e})),u=o.map((e,t)=>({id:`KA-${t}`,...e})),{generateJudgePrompt:g}=e.r(62414),f=g(t,s,a,u,n.skill_definition),d=await r.chat.completions.create({messages:[{role:"user",content:f}],model:l});console.log(`[Judge API Debug] Model: ${l}. Received response choices:`,d?.choices?.length);let m=d.choices?.[0]?.message?.content;if(c("result_evaluation",{prompt:f},{raw_output:m}),!m)throw console.error("\n[Judge API Error 🚨] LLM content is empty or undefined!"),console.error(">>> Full LLM Response:"),console.error(JSON.stringify(d,null,2)),console.error("<<<\n"),Error("No content from evaluation model");let h=m.trim(),p=h.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(p)h=p[1];else{let e=h.indexOf("{"),t=h.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(h=h.substring(e,t+1))}let y=JSON.parse(h).evaluations||[],S=0,k=0,A=[];a.forEach(e=>{let t=y.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,s=t?.explanation||"未找到评分结果";S+=n*e.weight,k+=e.weight,A.push(`1. **Root Cause** [${e.content.replace(/\n/g," ")}]: ${(100*n).toFixed(0)}% match. ${s} (Weight: ${e.weight})`)}),u.forEach(e=>{let t=y.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,s=t?.explanation||"未找到评分结果";S+=n*e.weight,k+=e.weight,A.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}]: ${(100*n).toFixed(0)}% match. ${s} (Weight: ${e.weight})`)});let $=0;$=k>0?S/k:0;let _=A.map(e=>{let t=e.match(/(\d+)% match/),n=e.match(/\(Weight: ([\d\.]+)\)/);if(t&&n){let e=(parseInt(t[1])/100).toFixed(1),s=parseFloat(n[1]).toFixed(1);return`${e}*${s}`}return null}).filter(e=>e).join(" + "),w=A.map(e=>{let t=e.match(/\(Weight: ([\d\.]+)\)/);return t?parseFloat(t[1]).toFixed(1):null}).filter(e=>e).join(" + "),x=`**Calculation**: (${_}) / (${w}) = ${S.toFixed(2)} / ${k.toFixed(2)} = ${$.toFixed(2)}`;A.push("",x);let N=A.join("\n");return{is_correct:$>=.8,score:$,reason:N}}catch(e){return console.error("LLM Judgment Error:",e),{is_correct:!1,score:0,reason:"Judgment API failed"}}}async function f(t,n,s,i,r,l){console.log("[ItemAttribution] Starting analysis...");let{client:o,model:a}=await u(l);if(!o||!t||!n)return console.warn(`[ItemAttribution] ✗ Early return: client=${o?"present":"absent"}, skillDef=${t?"present":"absent"}, judgmentReason=${n?"present":"absent"}`),[];let g=function(e){let t=[];if(!e)return t;let n=e.split("\n"),s={rc:0,ka:0};for(let e of n){let n=e.match(/\*\*Root Cause\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);if(n){t.push({id:`RC-${s.rc++}`,type:"root_cause",content:n[1].replace(/\.{3}$/,""),match_score:parseInt(n[2])/100,explanation:n[3].trim(),weight:parseFloat(n[4])});continue}let i=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);i&&t.push({id:`KA-${s.ka++}`,type:"key_action",content:i[1].replace(/\.{3}$/,""),match_score:parseInt(i[2])/100,explanation:i[3].trim(),weight:parseFloat(i[4])})}return t}(n);console.log(`[ItemAttribution] Parsed ${g.length} evaluation items from judgment reason`);let f=g.filter(e=>e.match_score<1);if(console.log(`[ItemAttribution] ${f.length} items need analysis (score < 100%)`),0===f.length)return console.log(`[ItemAttribution] ✗ No imperfect items found, returning empty array`),[];let{generateSkillIssuePrompt:d}=e.r(33526),m=[];for(let e of f)try{let n=d(t,e,s,i,r),l=await o.chat.completions.create({messages:[{role:"user",content:n}],model:a}),u=l.choices?.[0]?.message?.content;if(!u){console.error(`
|
|
168
|
-
[SkillAnalysis API Error 🚨] LLM content is empty for item: ${e.id}`),console.error(">>> Full LLM Response:"),console.error(JSON.stringify(l,null,2)),console.error("<<<\n");continue}c("skill_issue_analysis",{item_id:e.id,prompt:n},{raw_output:u});let g=u.trim(),f=g.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(f)g=f[1];else{let e=g.indexOf("{"),t=g.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(g=g.substring(e,t+1))}let h=JSON.parse(g);!0===h.is_skill_issue?(m.push({...e,is_skill_issue:!0,reasoning:h.reasoning??"",improvement_suggestion:h.improvement_suggestion}),console.log(`[SkillAnalysis] ${e.id}: IS Skill Issue - ${h.reasoning?.substring(0,50)}...`)):console.log(`[SkillAnalysis] ${e.id}: NOT Skill Issue - ${h.reasoning?.substring(0,50)}...`)}catch(t){console.error(`[SkillAnalysis] Error analyzing ${e.id}:`,t.message),c("skill_issue_analysis_error",{item_id:e.id},{error:t.message})}return m}async function d(t,n,s,i,r,l,o,a){let g=h(t);if(!g||0===g.length)return{failures:[]};try{let{client:t,model:d}=await u(a);if(!t||!t.apiKey)return console.warn("LLM Analysis disabled. Skipping."),{failures:[],skill_issues:[]};let m="",h=g[g.length-1];(h.requestMessages||[]).forEach(e=>{let t="";"string"==typeof e.content?t=e.content:Array.isArray(e.content)&&(t=JSON.stringify(e.content)),m+=`[${(e.role||"UNKNOWN").toUpperCase()}]: ${t}
|
|
169
|
-
`});let p=h.responseMessage;if(p){let e="";"string"==typeof p.content?e=p.content:Array.isArray(p.content)&&(e=JSON.stringify(p.content)),m+=`[ASSISTANT]: ${e}
|
|
170
|
-
`}else h.debug_raw_stream&&(m+=`[SYSTEM/TOOL OUTPUTS]: (Check raw logs for full details)
|
|
171
|
-
`);let{generateFailureAnalysisPrompt:y}=e.r(44087),S=y(m),k=await t.chat.completions.create({messages:[{role:"user",content:S}],model:d}),A=k.choices?.[0]?.message?.content;if(!A)return console.error("\n[Failure Analysis API Error 🚨] LLM content is empty!"),console.error(">>> Full LLM Response:"),console.error(JSON.stringify(k,null,2)),console.error("<<<\n"),{failures:[]};c("failure_analysis",{prompt:S,history_length:m.length},{raw_output:A});let $=A.trim(),_=$.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(_)$=_[1];else{let e=$.indexOf("{"),t=$.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&($=$.substring(e,t+1))}let w=JSON.parse($).failures||[],x=[];if(console.log(`[SkillAnalysis] Checking: skillName=${n||"none"}, skillDef=${s?"present":"absent"}, failuresCount=${w.length}, answerScore=${i}`),n&&s){console.log(`[SkillAnalysis] ✓ Skill name and definition found`);let e=o||"(见交互历史)",t=l||"(未知)";console.log(`[SkillAnalysis] Conditions check: answerScore=${i}, judgmentReason=${r?"present":"absent"}, history=${m?"present":"absent"}`),void 0!==i&&i<1&&r&&m?(console.log(`[SkillAnalysis] ✓ All conditions met. Score is imperfect (${i}). Analyzing which items are Skill issues...`),console.log(`[SkillAnalysis] Using: query=${t.substring(0,50)}..., answer=${e.substring(0,50)}..., history_len=${m.length}`),x=await f(s,r,t,e,m,a),console.log(`[SkillAnalysis] Analysis complete: ${x.length} items identified as Skill issues`)):void 0!==i&&i>=1?console.log(`[SkillAnalysis] ✗ Skipped: Perfect score (${i}). No Skill analysis needed.`):console.log(`[SkillAnalysis] ✗ Skipped: Conditions not met - answerScore=${i}, judgmentReason=${r?"present":"absent"}, history=${m?"present":"absent"}`)}else console.warn(`[SkillAnalysis] ✗ Skipped: Missing skillName (${n||"none"}) or skillDef (${s?"present":"absent"})`);return{failures:w,skill_issues:x.length>0?x:void 0}}catch(e){return console.error("Failure Analysis Error:",e),{failures:[]}}}function m(e){if(!e||"string"!=typeof e)return!1;try{let t=JSON.parse(e);if(t&&"object"==typeof t)return!0}catch(e){}return!1}function h(e){if(!e||!Array.isArray(e)||0===e.length)return[];if(e.some(e=>e&&(e.requestMessages||e.responseMessage)))return e;let t=[],n=[],s=e=>{if(0===e.length)return;let n=-1;for(let t=e.length-1;t>=0;t--)if("assistant"===e[t].role){n=t;break}-1!==n?t.push({requestMessages:e.slice(0,n),responseMessage:e[n]}):t.push({requestMessages:e,responseMessage:null})};for(let t of e){if(!t)continue;let e=t.role||"unknown";"user"===e&&n.length>0&&(s(n),n=[]),n.push(t)}return s(n),t}function p(e){let t=new Set,n=[],s=/^[a-zA-Z0-9_\-\.]+$/,i=e=>{if(e)for(let i of e.tool_calls||e.toolCalls||[]){let e=(i?.function?.name??i?.name??"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let r=i?.function?.arguments??i?.arguments??"";try{let e="string"==typeof r?JSON.parse(r):r,i=e?.name??e?.skill_name??e?.skillName??e?.skill;if(null!=i&&String(i).trim()){let r=String(i).trim().replace(/^['"]+|['"]+$/g,"");if(s.test(r)&&!t.has(r)){t.add(r);let s=e?.version!=null?Number(e.version):null;n.push({name:r,version:null===s||isNaN(s)?null:s})}}}catch{}}};for(let t of e)for(let e of(i(t.responseMessage),t.requestMessages||[]))"assistant"===e.role&&i(e);return n}function y(e){let t=new Set,n=[],s=e=>{if(e&&Array.isArray(e))for(let s of e){if(s?.type!=="tool_use")continue;let e=(s?.name||"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let i=s.input,r=i?.skill??i?.skill_name??i?.skillName??i?.name;if(null==r||!String(r).trim())continue;let l=String(r).trim().replace(/^['"]+|['"]+$/g,"");if(/^[a-zA-Z0-9_\-\.]+$/.test(l)&&!t.has(l)){t.add(l);let e=i?.version!=null?Number(i.version):null;n.push({name:l,version:null===e||isNaN(e)?null:e})}}};for(let t of e)if(t.responseMessage?.content&&s(t.responseMessage.content),t.requestMessages)for(let e of t.requestMessages)"assistant"===e.role&&e.content&&s(e.content);return n}function S(e){let t=new Set,n=[],s=e=>{if(e&&Array.isArray(e))for(let s of e){if(s?.type!=="toolCall")continue;let e=(s?.name||"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let i=s?.arguments,r=i?.skill??i?.skill_name??i?.skillName??i?.name;if(null==r||!String(r).trim())continue;let l=String(r).trim().replace(/^['"]+|['"]+$/g,"");if(/^[a-zA-Z0-9_\-\.]+$/.test(l)&&!t.has(l)){t.add(l);let e=i?.version!=null?Number(i.version):null;n.push({name:l,version:null===e||isNaN(e)?null:e})}}};for(let t of e)if(t.responseMessage?.content&&s(t.responseMessage.content),t.requestMessages)for(let e of t.requestMessages)"assistant"===e.role&&e.content&&s(e.content);return n}async function k(t,n){let s=h(t);if(!s||0===s.length)return{query:"",skill:"",final_result:""};let i="",r="",l="";for(let e of s){let t=(e.requestMessages||[]).find(e=>"user"===e.role);if(t){let e="";if("string"==typeof t.content)e=t.content;else if(Array.isArray(t.content)){let n=t.content.filter(e=>"text"===e.type&&!e.text.trim().startsWith("<system-reminder>")&&!e.text.includes("[SUGGESTION MODE:"));n.length>0&&(e=n.map(e=>e.text).join("\n").trim())}if(e){let t=(e=e.replace(/<EXTRA_INFO>[\s\S]*?<\/EXTRA_INFO>/g,"")).trim();if("count"===t||"ping"===t||t.startsWith("Please write a 5-10 word title")||"hi"===t||"hello"===t&&s.length>2)continue;if(i||(i=t),i)break}}}for(let e=s.length-1;e>=0;e--){let t=s[e];if((t.requestMessages||[]).some(e=>"string"==typeof e.content?e.content.includes("[SUGGESTION MODE:"):!!Array.isArray(e.content)&&e.content.some(e=>e.text&&e.text.includes("[SUGGESTION MODE:"))))continue;let n=t.responseMessage,i="";if(n&&n.content&&"string"==typeof n.content)i=n.content;else if(n&&Array.isArray(n.content)){let e=n.content.find(e=>"text"===e.type);e&&(i=e.text)}if((!i||""===i.trim())&&t.debug_raw_stream)try{let e="";for(let n of t.debug_raw_stream)n.choices&&n.choices[0]&&n.choices[0].delta&&n.choices[0].delta.content&&(e+=n.choices[0].delta.content),"content_block_delta"===n.type&&n.delta&&"text_delta"===n.delta.type&&(e+=n.delta.text);e&&(i=e)}catch(e){}let l=[];if(t.requestMessages&&t.requestMessages.length>0)for(let e=t.requestMessages.length-1;e>=0;e--){let n=t.requestMessages[e];if("assistant"===n.role){let e="";if("string"==typeof n.content)e=n.content;else if(Array.isArray(n.content)){let t=n.content.find(e=>"text"===e.type);t&&(e=t.text)}if(e&&e.trim()){let t=e.trim();if(!m(t)&&(l.unshift(t),t.startsWith("#")||t.startsWith("##")||t.startsWith("###")))break}else break}else break}if(i&&i.trim()){let e=i.trim();!m(e)&&(l.push(e),e.startsWith("#")||e.startsWith("##")||e.startsWith("###"))}if(l.length>0){r=l.join("\n\n");break}}let o=new Set,a="";for(let e of s){(e.requestMessages||[]).forEach(e=>{"string"==typeof e.content?a+=e.content+"\n":Array.isArray(e.content)&&e.content.forEach(e=>{"text"===e.type&&(a+=e.text+"\n")})});let t=e.responseMessage;t&&("string"==typeof t.content?a+=t.content+"\n":Array.isArray(t.content)&&t.content.forEach(e=>{"text"===e.type&&(a+=e.text+"\n")}),t.tool_calls&&Array.isArray(t.tool_calls)&&t.tool_calls.forEach(e=>{let t=e.function?.name??e.name;if(t)if("skill"===t||"load_skill"===t)try{let t=e.function?.arguments??e.arguments,n="string"==typeof t?JSON.parse(t):t,s=n?.name??n?.skill_name??n?.skillName??n?.skill;s&&o.add(s)}catch(e){}else o.add(t)}),t.function_call&&t.function_call.name&&o.add(t.function_call.name))}let g=a.match(/(?:Loading skill|Load skill)[:\s]+([a-zA-Z0-9_\-\.]+)/i);g&&g[1]&&o.add(g[1].trim());let f=a.match(/Skill\s+([a-zA-Z0-9_\-\.]+)\s+loaded/i);f&&f[1]&&o.add(f[1].trim()),o.size>0&&(l=Array.from(o).join(", ")),console.log(`[Rule-Based Analysis] Query: ${i.substring(0,20)}..., Skill: ${l}, Result Length: ${r.length}`),c("extraction",{messages_summary:`Total ${s.length} interactions`,notes:"Scanned full history"},{query:i,skill:l,final_result:r});let d="";try{let{client:t,model:i}=await u(n);if(t&&t.apiKey){let n="";s.forEach(e=>{(e.requestMessages||[]).forEach(e=>{let t="";if("string"==typeof e.content)t=e.content;else if(Array.isArray(e.content)){let n=e.content.find(e=>"text"===e.type);n&&(t=n.text)}n+=`[${(e.role||"UNKNOWN").toUpperCase()}]: ${t}
|
|
172
|
-
`});let t=e.responseMessage;if(t){let e="";if("string"==typeof t.content)e=t.content;else if(Array.isArray(t.content)){let n=t.content.find(e=>"text"===e.type);n&&(e=n.text)}n+=`[ASSISTANT]: ${e}
|
|
173
|
-
`}});let{generateExtractionPrompt:r}=e.r(18868),l=r(n),o=(await t.chat.completions.create({messages:[{role:"user",content:l}],model:i,temperature:.1})).choices[0].message.content;o&&(d=o.trim(),c("result_extraction_llm",{history_length:n.length},{extracted:d}))}}catch(e){console.error("LLM Extraction Failed",e)}return d&&d.length>20?(console.log(`[Judge] LLM extraction preferred (Length: ${d.length} vs Rule: ${r.length})`),r=d):r&&console.log(`[Judge] Rule-Based extraction used (Length: ${r.length})`),{query:i,skill:l,final_result:r}}e.s(["analyzeFailures",()=>d,"analyzeSession",()=>k,"extractSkillsWithVersionsFromClaudeSession",()=>y,"extractSkillsWithVersionsFromOpenClawSession",()=>S,"extractSkillsWithVersionsFromOpencodeSession",()=>p,"judgeAnswer",()=>g,"normalizeInteractions",()=>h]),n()}catch(e){n(e)}},!1)];
|
|
174
|
-
|
|
175
|
-
//# sourceMappingURL=src_497d2ad2._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[11811,e=>{"use strict";var t=e.i(22734),l=e.i(14747);let i={"claude-opus-4-6":{inputTokenPrice:5,outputTokenPrice:25,cacheReadInputTokenPrice:.5,cacheCreationInputTokenPrice:6.25},"claude-sonnet-4-6":{inputTokenPrice:3,outputTokenPrice:15,cacheReadInputTokenPrice:.3,cacheCreationInputTokenPrice:3.75},"deepseek-chat":{inputTokenPrice:.28,outputTokenPrice:.42,cacheReadInputTokenPrice:.028},"deepseek-reasoner":{inputTokenPrice:.28,outputTokenPrice:.42,cacheReadInputTokenPrice:.028},"minimax-m2.5-free":{inputTokenPrice:0,outputTokenPrice:0}},n={"claude-opus-4-6":1e6,"claude-sonnet-4-6":1e6,"deepseek-chat":128e3,"deepseek-reasoner":128e3,"minimax-m2.5-free":196608},s=l.default.join(process.cwd(),"custom-models.json"),o={},r={},a=-1;function u(){try{let e=t.default.statSync(s).mtimeMs;if(e===a)return{pricing:o,contextWindows:r};let l=JSON.parse(t.default.readFileSync(s,"utf-8")),i={},n={};for(let[e,t]of Object.entries(l))e.startsWith("_")||("number"==typeof t.inputTokenPrice&&"number"==typeof t.outputTokenPrice&&(i[e]=t),"number"==typeof t.contextWindow&&(n[e]=t.contextWindow));o=i,r=n,a=e}catch(e){e instanceof SyntaxError&&console.warn("[model-config] Failed to parse custom-models.json:",e.message),o={},r={},a=-1}return{pricing:o,contextWindows:r}}function c(e,t){if(t[e])return t[e];for(let[l,i]of Object.entries(t).sort((e,t)=>t[0].length-e[0].length))if(e.startsWith(l))return i;return null}function d(e){let{pricing:t}=u(),l=c(e,t);if(l)return{pricing:l,source:"custom"};let n=c(e,i);return n?{pricing:n,source:"default"}:null}function k(e){let{contextWindows:t}=u(),l=c(e,t);if(null!=l)return{contextWindow:l,source:"custom"};let i=c(e,n);return null!=i?{contextWindow:i,source:"default"}:null}function _(e,t,l,i,n){let s=l.cacheReadInputTokenPrice??.1*l.inputTokenPrice,o=l.cacheCreationInputTokenPrice??1.25*l.inputTokenPrice;return(e*l.inputTokenPrice+(i??0)*s+(n??0)*o+t*l.outputTokenPrice)/1e6}e.s(["DEFAULT_CACHE_CREATION_RATIO",0,1.25,"DEFAULT_CACHE_READ_RATIO",0,.1,"calculateCost",()=>_,"getModelContextWindow",()=>k,"getModelPricing",()=>d])},85765,e=>e.a(async(t,l)=>{try{var i=e.i(22734),n=e.i(14747),s=e.i(31390),o=e.i(98043),r=e.i(11811),a=t([s,o]);function u(e){let t=e.trim(),l=[['"','"'],["'","'"],["“","”"],["‘","’"],["`","`"],["《","》"],["(",")"],["(",")"],["【","】"],["[","]"],["{","}"],["<",">"]];for(let e=0;e<6;e++){let e=t;for(let[e,i]of(t=t.trim(),l))t.startsWith(e)&&t.endsWith(i)&&t.length>=e.length+i.length+1&&(t=t.slice(e.length,-i.length));if(t===e)break}return t=(t=(t=t.replace(/[\s"'“”‘’`。.]/g,"")).replace(/^[\s.,,。!?!?;;::、·…]+|[\s.,,。!?!?;;::、·…]+$/g,"")).replace(/\s+/g," ").trim()}function c(e,t){if(!t)return;let l=u(t);if(!l)return;let i=e.filter(e=>e.query&&e.query.trim()).filter(e=>{let t=u(e.query);return!!t&&l.endsWith(t)});if(0!==i.length)return i.reduce((e,t)=>{let l=u(e.query).length;return u(t.query).length>l?t:e})}[s,o]=a.then?(await a)():a;let p=n.default.join(process.cwd(),"data"),f=n.default.join(p,"evaluation_result.json");async function d(e,t){let l={};if(e&&(l.OR=[{user:e},{user:null}]),!t?.query&&t?.taskId){let e=await o.db.findExecutionById(t.taskId);e&&e.query?(l.query=e.query,t.framework&&(l.framework=t.framework)):l.id=t.taskId}else t?.query&&(l.query=t.query,t.framework&&(l.framework=t.framework));t?.skill!==void 0&&(l.skill=t.skill),t?.skillVersion!==void 0&&(l.skillVersion=t.skillVersion);let i=await o.db.findExecutions(l,{timestamp:"desc"}),n=new Map;for(let e of i){let t=e.taskId||null;t&&(n.has(t)||n.set(t,[]),n.get(t).push(e))}let s=new Set;for(let[e,t]of n.entries()){if(1===t.length){s.add(t[0].id);continue}let l=t.find(t=>t.id===e);if(l){s.add(l.id);continue}let i=t.slice().sort((e,t)=>{let l=new Date(e.timestamp).getTime(),i=new Date(t.timestamp).getTime();if(i!==l)return i-l;let n=String(e.finalResult||"").length;return String(t.finalResult||"").length-n});s.add(i[0].id)}let a=i.filter(e=>!e.taskId||s.has(e.id));for(let[e,t]of n.entries())if(!(t.length<=1))for(let e of t)s.has(e.id)||o.db.deleteExecution(e.id).catch(()=>{});return a.map(e=>{let t=e.model??null,l=t?(0,r.getModelPricing)(t):null,i=l?.pricing??null,n=t&&null!=e.maxSingleCallTokens?(0,r.getModelContextWindow)(t):null;return{...e,upload_id:e.id,task_id:e.taskId||void 0,query:e.query||void 0,framework:e.framework||void 0,tokens:e.tokens||void 0,cost:i&&null!=e.inputTokens&&null!=e.outputTokens?(0,r.calculateCost)(e.inputTokens,e.outputTokens,i,e.cacheReadInputTokens??void 0,e.cacheCreationInputTokens??void 0):void 0,latency:e.latency||void 0,timestamp:e.timestamp?.toISOString?.()||e.timestamp,final_result:e.finalResult||void 0,skill:e.skill||void 0,skills:e.skills?JSON.parse(e.skills):void 0,invokedSkills:e.invokedSkills?JSON.parse(e.invokedSkills):void 0,is_skill_correct:e.isSkillCorrect||!1,is_answer_correct:e.isAnswerCorrect||!1,answer_score:void 0!==e.answerScore?e.answerScore:void 0,skill_score:void 0!==e.skillScore?e.skillScore:void 0,judgment_reason:e.judgmentReason||void 0,failures:e.failures?JSON.parse(e.failures):void 0,label:e.label??null,user:e.user??null,skill_issues:e.skillIssues?JSON.parse(e.skillIssues):[],skill_version:e.skillVersion??null,model:t,tool_call_count:e.toolCallCount??void 0,llm_call_count:e.llmCallCount??void 0,input_tokens:e.inputTokens??void 0,output_tokens:e.outputTokens??void 0,tool_call_error_count:e.toolCallErrorCount??void 0,cache_read_input_tokens:e.cacheReadInputTokens??void 0,cache_creation_input_tokens:e.cacheCreationInputTokens??void 0,max_single_call_tokens:e.maxSingleCallTokens??void 0,expected_skill_version:e.expectedSkillVersion??null,skill_recall_rate:e.skillRecallRate??null,context_window_pct:null!=e.maxSingleCallTokens&&n?Math.round(e.maxSingleCallTokens/n.contextWindow*1e3)/10:void 0,context_window_limit:n?.contextWindow,context_window_source:n?.source,cost_pricing:i?{inputTokenPrice:i.inputTokenPrice,outputTokenPrice:i.outputTokenPrice,cacheReadInputTokenPrice:i.cacheReadInputTokenPrice??i.inputTokenPrice*r.DEFAULT_CACHE_READ_RATIO,cacheCreationInputTokenPrice:i.cacheCreationInputTokenPrice??i.inputTokenPrice*r.DEFAULT_CACHE_CREATION_RATIO,source:l?.source??"default"}:null}})}async function k(e){let t={};return e&&(t.OR=[{user:e},{user:null}]),(await o.db.findConfigs(t)).map(e=>{let t=(t,l)=>{if(t)try{return JSON.parse(t)}catch(t){console.error(`[readConfig] Failed to parse ${l} for config ${e.id}:`,t);return}};return{id:e.id,query:e.query,skill:e.skill,skillVersion:e.skillVersion,expectedSkills:t(e.expectedSkills,"expectedSkills"),standard_answer:e.standardAnswer,root_causes:t(e.rootCauses,"rootCauses"),key_actions:t(e.keyActions,"keyActions"),parse_status:e.parseStatus||"completed"}})}async function _(e){let t=e.upload_id||e.task_id||crypto.randomUUID();if(e.task_id)try{let l={taskId:e.task_id};e.framework&&(l.framework=e.framework);let i=await o.db.findExecutions(l,{timestamp:"desc"});if(i&&i.length>0&&i[0]?.id){let l=i.find(t=>t.id===e.task_id),n=l&&l.id?l.id:i[0].id;n!==t&&(t=n)}}catch{}let l=null,n=await o.db.findExecutionById(t);n&&(l={...n,upload_id:n.id,task_id:n.taskId||void 0,query:n.query||void 0,framework:n.framework||void 0,tokens:n.tokens||void 0,cost:n.cost||void 0,latency:n.latency||void 0,timestamp:n.timestamp?.toISOString?.()||n.timestamp,final_result:n.finalResult||void 0,skill:n.skill||void 0,skills:n.skills?JSON.parse(n.skills):void 0,invokedSkills:n.invokedSkills?(()=>{try{return JSON.parse(n.invokedSkills)}catch{return}})():void 0,is_skill_correct:n.isSkillCorrect||!1,is_answer_correct:n.isAnswerCorrect||!1,answer_score:n.answerScore||void 0,skill_score:n.skillScore||void 0,judgment_reason:n.judgmentReason||void 0,failures:n.failures?JSON.parse(n.failures):void 0,skill_issues:n.skillIssues?JSON.parse(n.skillIssues):void 0,label:n.label||void 0,user:n.user||void 0,skill_version:n.skillVersion??void 0,expected_skill_version:n.expectedSkillVersion??null,skill_recall_rate:n.skillRecallRate??null,model:n.model||void 0,tool_call_count:n.toolCallCount??void 0,llm_call_count:n.llmCallCount??void 0,input_tokens:n.inputTokens??void 0,output_tokens:n.outputTokens??void 0,tool_call_error_count:n.toolCallErrorCount??void 0,cache_read_input_tokens:n.cacheReadInputTokens??void 0,cache_creation_input_tokens:n.cacheCreationInputTokens??void 0,max_single_call_tokens:n.maxSingleCallTokens??void 0});let r=l?{...l}:{},a=!!l;a||r.timestamp||e.timestamp?e.timestamp&&(r.timestamp=e.timestamp):r.timestamp=new Date().toISOString();let u=!!e.force_query_update,d="string"==typeof l?.query?l.query.trim():"",_="string"==typeof e.query?e.query.trim():"";if(r={...r,...e},d&&!u?r.query=d:!d&&_?r.query=_:"string"!=typeof r.query||r.query.trim()?"string"==typeof r.query&&(r.query=r.query.trim()):r.query=void 0,!r.upload_id&&r.task_id&&(r.upload_id=r.task_id),!r.task_id&&r.upload_id&&(r.task_id=r.upload_id),r.upload_id=t,(!r.label||!r.model||!r.user)&&r.task_id){let e=await o.db.findSessionByTaskId(r.task_id);e&&(!r.label&&e.label&&(r.label=e.label),!r.model&&e.model&&(r.model=e.model),!r.user&&e.user&&(r.user=e.user))}if(!r.user)try{let e=o.db.getClient();if("query"in e){let t=await e.query('SELECT username FROM "User" LIMIT 1');t.rows[0]&&(r.user=t.rows[0].username,console.log(`[Data-Service] Fallback resolved user for task ${r.task_id} to: ${r.user}`))}}catch(e){console.warn("[Data-Service] Fallback user lookup failed:",e)}let p=e.Token||e.token||e.tokens;void 0!==p&&(r.tokens=Number(p)),void 0!==e.tool_call_count&&(r.tool_call_count=Number(e.tool_call_count)),void 0!==e.llm_call_count&&(r.llm_call_count=Number(e.llm_call_count)),void 0!==e.input_tokens&&(r.input_tokens=Number(e.input_tokens)),void 0!==e.output_tokens&&(r.output_tokens=Number(e.output_tokens)),void 0!==e.tool_call_error_count&&(r.tool_call_error_count=Number(e.tool_call_error_count)),void 0!==e.cache_read_input_tokens&&(r.cache_read_input_tokens=Number(e.cache_read_input_tokens)),void 0!==e.cache_creation_input_tokens&&(r.cache_creation_input_tokens=Number(e.cache_creation_input_tokens)),void 0!==e.max_single_call_tokens&&(r.max_single_call_tokens=Number(e.max_single_call_tokens));let m="未找到匹配的评测配置",v=!1,y=r.is_answer_correct||!1,g=r.judgment_reason||m,w=await k(r.user);if(r.query&&w.length>0){let t=c(w,r.query);if(t){let i=Array.isArray(r.invokedSkills)?r.invokedSkills:[],n=(Array.isArray(r.skills)?r.skills:[]).map(e=>({name:e,version:null})),u=t.expectedSkills||[];if(u.length>0){let e=i.length>0?i:n;if(e.length>0){let t=0,l=u.filter(e=>e.skill?.trim()),i=l.map(e=>e.skill.trim()),n=new Map;if(i.length>0)try{for(let e of(await o.db.findSkills({name:{in:i},user:r.user||null})))n.set(e.name,e)}catch(e){console.error("[Judgment] Error fetching skills for version check:",e)}for(let i of l){let l=i.skill.trim(),s=i.version??null,o=e.find(e=>e.name===l);if(o){let e=!1;if(null===s)e=!0;else if(null!==o.version)e=o.version===s;else{let t=n.get(l);e=!!t&&(t.activeVersion||0)===s}e&&(t++,v||(v=!0))}}l.length>0&&(r.skill_recall_rate=t/l.length)}}if(r.is_skill_correct=v,void 0!==r.final_result){let i=!0;if(a&&!e.force_judgment&&l&&l.query===r.query&&l.final_result===r.final_result&&(i=!1),i&&!r.skip_evaluation){let e,l=(r.skill||t.skill||"").trim();if(l)try{let t=await o.db.findSkill(l,r.user||null);if(t){let l=t.activeVersion||0,i=t.versions?.find(e=>e.version===l);if(i&&i.content)e=i.content,r.skill_version=i.version;else if(t.versions&&t.versions.length>0){let l=t.versions[0];l&&l.content&&(e=l.content,r.skill_version=l.version)}}}catch(e){console.error("[Judgment] Error fetching skill definition:",e)}let i=await (0,s.judgeAnswer)(r.query||"",{standard_answer_example:t.standard_answer,root_causes:t.root_causes,key_actions:t.key_actions,skill_definition:e},r.final_result,r.user);y=i.is_correct,r.answer_score=i.score,g=i.reason||"Judged by Evaluation Model"}}}else a&&!e.force_judgment||r.answer_score||(y=!1,g=m,r.answer_score=null)}else r.query&&(!a||e.force_judgment)&&!r.answer_score&&(y=!1,g=m,r.answer_score=null);e.skip_evaluation&&(r.answer_score=null,g="结果评估中..."),r.is_skill_correct=v,r.is_answer_correct=y,r.judgment_reason=g;let h=Array.isArray(r.skills)&&r.skills.length>0?r.skills[0]:void 0;if(h){let e=function(){if(!i.default.existsSync(f))return{};try{return JSON.parse(i.default.readFileSync(f,"utf-8"))}catch{return{}}}()[h];e&&(r.skill_score=parseFloat(e))}if(r.skill&&void 0!==r.skill_version&&null!==r.skill_version?r.label=`${r.skill}-v${r.skill_version}`:r.skill?r.label=`${r.skill}-v1`:r.label="without-skill",await o.db.upsertExecution({where:{id:t},create:{id:t,taskId:r.task_id,query:r.query,framework:r.framework,tokens:r.tokens,cost:r.cost,latency:r.latency,timestamp:r.timestamp?new Date(r.timestamp):new Date,finalResult:r.final_result,skill:r.skill,skills:r.skills?JSON.stringify(r.skills):null,invokedSkills:r.invokedSkills?JSON.stringify(r.invokedSkills):null,isSkillCorrect:r.is_skill_correct,isAnswerCorrect:r.is_answer_correct,answerScore:r.answer_score,skillScore:r.skill_score,judgmentReason:r.judgment_reason,failures:r.failures?JSON.stringify(r.failures):null,skillIssues:r.skill_issues?JSON.stringify(r.skill_issues):null,label:r.label,user:r.user,skillVersion:r.skill_version,model:r.model,toolCallCount:r.tool_call_count,llmCallCount:r.llm_call_count,inputTokens:r.input_tokens,outputTokens:r.output_tokens,toolCallErrorCount:r.tool_call_error_count,skillRecallRate:r.skill_recall_rate,cacheReadInputTokens:r.cache_read_input_tokens,cacheCreationInputTokens:r.cache_creation_input_tokens,maxSingleCallTokens:r.max_single_call_tokens},update:{taskId:r.task_id,query:r.query,framework:r.framework,tokens:r.tokens,cost:r.cost,latency:r.latency,timestamp:r.timestamp?new Date(r.timestamp):new Date,finalResult:r.final_result,skill:r.skill,skills:r.skills?JSON.stringify(r.skills):null,invokedSkills:r.invokedSkills?JSON.stringify(r.invokedSkills):null,isSkillCorrect:r.is_skill_correct,isAnswerCorrect:r.is_answer_correct,answerScore:r.answer_score,skillScore:r.skill_score,judgmentReason:r.judgment_reason,failures:r.failures?JSON.stringify(r.failures):null,skillIssues:r.skill_issues?JSON.stringify(r.skill_issues):null,label:r.label,user:r.user,skillVersion:r.skill_version,model:r.model,toolCallCount:r.tool_call_count,llmCallCount:r.llm_call_count,inputTokens:r.input_tokens,outputTokens:r.output_tokens,toolCallErrorCount:r.tool_call_error_count,skillRecallRate:r.skill_recall_rate,cacheReadInputTokens:r.cache_read_input_tokens,cacheCreationInputTokens:r.cache_creation_input_tokens,maxSingleCallTokens:r.max_single_call_tokens}}),e.upload_id&&e.task_id&&e.upload_id!==t)try{let t=await o.db.findExecutionById(e.upload_id);t&&t.taskId===e.task_id&&await o.db.deleteExecution(e.upload_id)}catch{}if(r.task_id&&r.interactions){let e="string"==typeof r.interactions?(()=>{try{return JSON.parse(r.interactions)}catch{return[]}})():r.interactions,t=e;try{let l=await o.db.findSessionByTaskId(r.task_id),i=l?.interactions?(()=>{try{return JSON.parse(l.interactions)}catch{return[]}})():[];Array.isArray(i)&&i.length>0&&(t=!Array.isArray(e)||e.length<i.length?i:e.map((e,t)=>{let l=i[t],n=e?.content===""||e?.content==null,s="string"==typeof l?.content&&l.content.length>0;return n&&s&&l?.role===e?.role?{...e,content:l.content}:e}))}catch{}await o.db.upsertSession(r.task_id,{taskId:r.task_id,query:r.query,label:r.label,user:r.user,model:r.model,interactions:JSON.stringify(t)},{query:r.query,label:r.label,user:r.user,model:r.model,interactions:JSON.stringify(t)})}return{success:!0,record:r}}e.s(["findBestMatchConfig",()=>c,"readConfig",()=>k,"readRecords",()=>d,"saveExecutionRecord",()=>_]),l()}catch(e){l(e)}},!1)];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_lib_12408140._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,9665,e=>{"use strict";var s=e.i(43476),t=e.i(18566),n=e.i(71645);function c({skillId:e,skillName:n,version:c,user:a}){let r=(0,t.useRouter)();return e||n?(0,s.jsxs)("span",{onClick:s=>{s.preventDefault();let t=new URLSearchParams;e?t.set("id",e):(t.set("name",n),a&&t.set("user",a)),null!=c&&t.set("version",String(c)),r.push(`/skills?${t.toString()}`)},style:{color:"#60a5fa",cursor:"pointer",textDecoration:"none",transition:"color 0.2s"},onMouseEnter:e=>{e.currentTarget.style.textDecoration="underline",e.currentTarget.style.color="#93c5fd"},onMouseLeave:e=>{e.currentTarget.style.textDecoration="none",e.currentTarget.style.color="#60a5fa"},children:[n,c?` (v${c})`:""]}):(0,s.jsx)("span",{style:{color:"#64748b"},children:"(None)"})}function a({skills:e,skill:t,skillId:a,skillIds:r,skillVersion:l,user:i}){return e?.length||t?e?.length?(0,s.jsx)(s.Fragment,{children:e.map((e,t)=>{let a=r?.[t]||null;return(0,s.jsxs)(n.default.Fragment,{children:[t>0&&(0,s.jsx)("span",{style:{color:"#e2e8f0"},children:", "}),(0,s.jsx)(c,{skillId:a,skillName:e,version:l,user:i})]},t)})}):(0,s.jsx)(c,{skillId:a,skillName:t,version:l,user:i}):(0,s.jsx)("span",{style:{color:"#64748b"},children:"(None)"})}e.s(["SkillLinks",()=>a])},95802,e=>{e.v(s=>Promise.all(["static/chunks/f7a6fed60fb079dd.js","static/chunks/5432ce4a494bc74d.js","static/chunks/b43afe7d924243d9.js","static/chunks/68e4bccbce97556a.js","static/chunks/21105f8885631d60.js","static/chunks/7a95be670a5c981c.js","static/chunks/aa21d65228612e46.js","static/chunks/07668c4577ece2d3.js","static/chunks/78fd227efc628935.js"].map(s=>e.l(s))).then(()=>s(76913)))},34486,e=>{e.v(s=>Promise.all(["static/chunks/6baf949fafec6be3.js","static/chunks/e09d9ee16fe90255.js","static/chunks/ff6357067630b168.js"].map(s=>e.l(s))).then(()=>s(13143)))},14524,e=>{e.v(s=>Promise.all(["static/chunks/fec58f85bfaa3c39.js"].map(s=>e.l(s))).then(()=>s(17847)))}]);
|
|
@@ -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)},9165,e=>{"use strict";async function t(e,t){return fetch(""+e,t)}function r(e){return""+e}e.s(["apiFetch",()=>t,"getApiUrl",()=>r])},94690,e=>{"use strict";var t=e.i(43476),r=e.i(18566),i=e.i(71645),o=e.i(9165);let a=(0,i.createContext)(void 0);function u({children:e}){let[u,s]=(0,i.useState)(null),[n,l]=(0,i.useState)(null),[c,h]=(0,i.useState)(!1),[g,d]=(0,i.useState)(!1),[m,f]=(0,i.useState)(!1),v=(0,r.useRouter)(),p=(0,r.usePathname)();return(0,i.useEffect)(()=>{(0,o.apiFetch)("/api/config/status?check_org=true").then(e=>e.json()).then(e=>h(e.org_mode||!1)).catch(()=>{}).finally(()=>f(!0))},[]),(0,i.useEffect)(()=>{if(!m)return;let e=localStorage.getItem("user_id"),t=localStorage.getItem("api_key");e?(s(e),t&&l(t)):c&&!g?(d(!0),(0,o.apiFetch)("/api/auth/organization").then(async e=>{let t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t?.error||`Organization auth failed: ${e.status}`);return t}).then(e=>{let t=e?.displayName||e?.username,r=e?.apiKey;if(!t)throw Error("Organization auth response missing username");localStorage.setItem("user_id",t),r&&localStorage.setItem("api_key",r),s(t),r&&l(r)}).catch(e=>console.error("Organization auth failed:",e)).finally(()=>d(!1))):"/login"!==p&&v.push("/login")},[p,v,c,g,m]),(0,t.jsx)(a.Provider,{value:{user:u,apiKey:n,login:(e,t)=>{localStorage.setItem("user_id",e),s(e),t&&(localStorage.setItem("api_key",t),l(t)),v.replace("/")},logout:()=>{localStorage.removeItem("user_id"),localStorage.removeItem("api_key"),s(null),l(null),v.push("/login")}},children:e})}function s(){let e=(0,i.useContext)(a);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}e.s(["AuthProvider",()=>u,"useAuth",()=>s])},97703,e=>{"use strict";var t=e.i(43476),r=e.i(71645);let i=(0,r.createContext)(void 0);function o({children:e}){let[o,a]=(0,r.useState)("light"),[u,s]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{s(!0);let e=localStorage.getItem("skill-insight-theme");e&&a(e)},[]),(0,r.useEffect)(()=>{u&&(localStorage.setItem("skill-insight-theme",o),document.documentElement.setAttribute("data-theme",o))},[o,u]),u)?(0,t.jsx)(i.Provider,{value:{theme:o,toggleTheme:()=>{a(e=>"light"===e?"dark":"light")},isDark:"dark"===o},children:e}):null}function a(){let e=(0,r.useContext)(i);if(void 0===e)throw Error("useTheme must be used within a ThemeProvider");return e}e.s(["ThemeProvider",()=>o,"useTheme",()=>a])},1661,e=>{"use strict";var t=e.i(43476),r=e.i(94690),i=e.i(97703);function o({children:e}){return(0,t.jsx)(i.ThemeProvider,{children:(0,t.jsx)(r.AuthProvider,{children:e})})}e.s(["Providers",()=>o])}]);
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return n}});let o=e.r(32061);function n({reason:e,children:r}){if("u"<typeof window)throw Object.defineProperty(new o.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r}},9885,(e,r,t)=>{"use strict";function o(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return o}})},52157,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return s}});let o=e.r(43476),n=e.r(74080),l=e.r(63599),a=e.r(9885),i=e.r(43369);function s({moduleIds:e}){if("u">typeof window)return null;let r=l.workAsyncStorage.getStore();if(void 0===r)return null;let t=[];if(r.reactLoadableManifest&&e){let o=r.reactLoadableManifest;for(let r of e){if(!o[r])continue;let e=o[r].files;t.push(...e)}}if(0===t.length)return null;let s=(0,i.getDeploymentIdQueryOrEmptyString)();return(0,o.jsx)(o.Fragment,{children:t.map(e=>{let t=`${r.assetPrefix}/_next/${(0,a.encodeURIPath)(e)}${s}`;return e.endsWith(".css")?(0,o.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style",nonce:r.nonce},e):((0,n.preload)(t,{as:"script",fetchPriority:"low",nonce:r.nonce}),null)})})}},69093,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let o=e.r(43476),n=e.r(71645),l=e.r(67585),a=e.r(52157);function i(e){return{default:e&&"default"in e?e.default:e}}let s={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},d=function(e){let r={...s,...e},t=(0,n.lazy)(()=>r.loader().then(i)),d=r.loading;function c(e){let i=d?(0,o.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,s=!r.ssr||!!r.loading,c=s?n.Suspense:n.Fragment,p=r.ssr?(0,o.jsxs)(o.Fragment,{children:["u"<typeof window?(0,o.jsx)(a.PreloadChunks,{moduleIds:r.modules}):null,(0,o.jsx)(t,{...e})]}):(0,o.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,o.jsx)(t,{...e})});return(0,o.jsx)(c,{...s?{fallback:i}:{},children:p})}return c.displayName="LoadableComponent",c}},70703,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}});let o=e.r(55682)._(e.r(69093));function n(e,r){let t={};"function"==typeof e&&(t.loader=e);let n={...t,...r};return(0,o.default)({...n,modules:n.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},18819,e=>{"use strict";e.i(18392);var r=e.i(43476),t=e.i(70703),o=e.i(18566),n=e.i(71645),l=e.i(9165);function a({executionId:e,skillId:t,user:o,onStepClick:a}){let[s,d]=(0,n.useState)(!1),[c,p]=(0,n.useState)("compare"),[m,u]=(0,n.useState)(null),[x,f]=(0,n.useState)(""),[g,h]=(0,n.useState)(!0),[b,y]=(0,n.useState)(!1),v=t&&t.trim()?t:null;(0,n.useEffect)(()=>{(0,l.apiFetch)(`/api/executions/${e}/analyze-match`).then(e=>e.json()).then(e=>{e.analyzed&&u(e)}).catch(()=>{})},[e]);let j=async()=>{d(!0),f(""),p("dynamic");try{let r=await (0,l.apiFetch)(`/api/executions/${e}/analyze-match`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:o,mode:"dynamic"})}),t=await r.json();t.success?u({analyzed:!0,mode:"dynamic",dynamicMermaid:t.dynamicMermaid,interactionCount:t.interactionCount,matchedAt:new Date().toISOString()}):f(t.error||"分析失败")}catch(e){f(e instanceof Error?e.message:"网络错误")}finally{d(!1)}},k=async()=>{if(!v)return void f('该执行记录未关联 Skill,无法进行 Skill 对比。请使用"流程解析"功能。');d(!0),f(""),p("compare");try{let r=await (0,l.apiFetch)(`/api/executions/${e}/analyze-match`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:o,mode:"compare"})}),t=await r.json();if(t.success){let e=t.match?.problemSteps||[];u({analyzed:!0,mode:"compare",matchJson:JSON.stringify(t.match),staticMermaid:t.staticMermaid,dynamicMermaid:t.dynamicMermaid,analysisText:JSON.stringify(e),interactionCount:t.interactionCount,currentInteractionCount:t.currentInteractionCount,hasUpdate:t.hasUpdate,matchedAt:new Date().toISOString(),usedSkillName:t.usedSkillName,usedSkillVersion:t.usedSkillVersion})}else f(t.error||"分析失败")}catch(e){f(e instanceof Error?e.message:"网络错误")}finally{d(!1)}};return(0,r.jsxs)("div",{style:{background:"#1e293b",borderRadius:"8px",border:"1px solid #334155",marginBottom:"2rem",overflow:"hidden"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"1rem 1.5rem",borderBottom:b?"1px solid #334155":"none",cursor:"pointer"},onClick:()=>y(!b),children:[(0,r.jsx)("h4",{style:{color:"#38bdf8",margin:0,fontSize:"0.95rem"},children:"📊 执行流程分析"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.8rem",marginRight:"0.5rem"},children:b?"收起":"展开"}),(0,r.jsx)("button",{style:{background:"#334155",border:"none",borderRadius:"4px",color:"#94a3b8",padding:"4px 8px",cursor:"pointer",fontSize:"0.8rem"},children:b?"▲":"▼"})]})]}),b&&(0,r.jsxs)("div",{style:{padding:"1.5rem"},children:[(0,r.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",marginBottom:"1rem"},children:(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:e=>{e.stopPropagation(),j()},disabled:s,style:{padding:"6px 16px",background:s&&"dynamic"===c?"#334155":"#22c55e",color:s&&"dynamic"===c?"#94a3b8":"#0f172a",border:"none",borderRadius:"4px",cursor:s?"not-allowed":"pointer",fontWeight:"bold",fontSize:"0.85rem"},children:s&&"dynamic"===c?"分析中...":"流程解析"}),(0,r.jsx)("button",{onClick:e=>{e.stopPropagation(),k()},disabled:s,style:{padding:"6px 16px",background:s&&"compare"===c?"#334155":"#38bdf8",color:s&&"compare"===c?"#94a3b8":"#0f172a",border:"none",borderRadius:"4px",cursor:s?"not-allowed":"pointer",fontWeight:"bold",fontSize:"0.85rem"},children:s&&"compare"===c?"对比中...":"Skill对比"})]})}),x&&(0,r.jsx)("div",{style:{padding:"0.75rem",background:"rgba(248, 113, 113, 0.1)",borderRadius:"4px",color:"#f87171",marginBottom:"1rem",fontSize:"0.9rem"},children:x}),m&&m.analyzed?(0,r.jsxs)("div",{children:["compare"===m.mode&&m.dynamicMermaid?(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsxs)("h5",{style:{color:"#94a3b8",margin:"0 0 0.5rem 0",fontSize:"0.85rem"},children:["执行流程对比 ",m.usedSkillName&&`(${m.usedSkillName} v${m.usedSkillVersion})`]}),(0,r.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",minHeight:"250px",overflowX:"auto",overflowY:"auto"},children:(0,r.jsx)(i,{code:m.dynamicMermaid||""})})]}):(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsx)("h5",{style:{color:"#94a3b8",margin:"0 0 0.5rem 0",fontSize:"0.85rem"},children:"执行轨迹"}),(0,r.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",minHeight:"180px",overflowX:"auto",overflowY:"auto"},children:(0,r.jsx)(i,{code:m.dynamicMermaid||""})})]}),"compare"===m.mode&&m.matchJson&&(()=>{let e=null;try{e=JSON.parse(m.matchJson)?.summary}catch{}return e?(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1.5rem",padding:"0.75rem",background:"#0f172a",borderRadius:"6px",marginBottom:"1rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",gap:"1.5rem",fontSize:"0.85rem"},children:[(0,r.jsxs)("span",{style:{color:"#4ade80"},children:["✅ 符合预期:",e.matchedSteps||0]}),(0,r.jsxs)("span",{style:{color:"#fbbf24"},children:["⚠️ 部分偏离:",e.partialSteps||0]}),(0,r.jsxs)("span",{style:{color:"#f87171"},children:["❌ 非预期调用:",e.unexpectedSteps||0]}),(0,r.jsxs)("span",{style:{color:"#94a3b8"},children:["⭕ 跳过:",e.skippedSteps||0]})]}),(0,r.jsxs)("div",{style:{marginLeft:"auto",fontSize:"0.8rem",color:"#64748b"},children:["对话轮数: ",m.interactionCount,m.hasUpdate&&(0,r.jsx)("span",{style:{color:"#fbbf24",marginLeft:"0.5rem"},children:"(有更新)"})]})]}):null})(),"compare"===m.mode&&m.analysisText&&(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer",marginBottom:"0.5rem"},onClick:()=>h(!g),children:[(0,r.jsx)("h5",{style:{color:"#94a3b8",margin:0,fontSize:"0.85rem"},children:"问题步骤分析"}),(0,r.jsx)("button",{style:{background:"#334155",border:"none",borderRadius:"4px",color:"#94a3b8",padding:"4px 8px",cursor:"pointer",fontSize:"0.8rem"},children:g?"收起 ▲":"展开 ▼"})]}),g&&(()=>{let e=[];try{e=JSON.parse(m.analysisText)}catch{return(0,r.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,r.jsx)("div",{style:{background:"#0f172a",padding:"1rem",borderRadius:"6px",border:"1px solid #334155",color:"#4ade80",fontSize:"0.9rem"},children:"✅ 执行流程完全符合预期,无问题步骤"});let t={partial:{text:"部分偏离",color:"#fbbf24"},unexpected:{text:"非预期调用",color:"#f87171"},skipped:{text:"跳过",color:"#94a3b8"}};return(0,r.jsx)("div",{style:{background:"#0f172a",borderRadius:"6px",border:"1px solid #334155",overflow:"hidden"},children:(0,r.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.9rem"},children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{style:{background:"#1e293b"},children:[(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"80px"},children:"对话轮数"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"120px"},children:"步骤名称"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155",width:"110px"},children:"状态"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155"},children:"问题描述"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:"#94a3b8",borderBottom:"1px solid #334155"},children:"改进建议"})]})}),(0,r.jsx)("tbody",{children:e.map((e,o)=>(0,r.jsxs)("tr",{style:{background:o%2==0?"#0f172a":"#111827"},children:[(0,r.jsxs)("td",{style:{padding:"0.75rem",color:a?"#38bdf8":"#e2e8f0",borderBottom:"1px solid #334155",cursor:a?"pointer":"default",textDecoration:a?"underline":"none"},onClick:()=>a?.(e.stepIndex),children:["#",e.stepIndex]}),(0,r.jsx)("td",{style:{padding:"0.75rem",color:"#e2e8f0",borderBottom:"1px solid #334155"},children:e.stepName}),(0,r.jsx)("td",{style:{padding:"0.75rem",borderBottom:"1px solid #334155"},children:(0,r.jsx)("span",{style:{padding:"2px 8px",borderRadius:"4px",background:`${t[e.status]?.color||"#94a3b8"}20`,color:t[e.status]?.color||"#94a3b8",fontSize:"0.8rem"},children:t[e.status]?.text||e.status})}),(0,r.jsx)("td",{style:{padding:"0.75rem",color:"#e2e8f0",borderBottom:"1px solid #334155"},children:e.problem}),(0,r.jsx)("td",{style:{padding:"0.75rem",color:"#38bdf8",borderBottom:"1px solid #334155"},children:e.suggestion})]},o))})]})})})()]})]}):(0,r.jsxs)("div",{style:{color:"#64748b",fontSize:"0.9rem",textAlign:"center",padding:"2rem"},children:[(0,r.jsxs)("div",{style:{marginBottom:"0.5rem"},children:[(0,r.jsx)("strong",{children:"执行流程"}),":根据执行数据生成轨迹图,无需关联 Skill"]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("strong",{children:"Skill对比"}),":与已解析的 Skill 流程进行对比分析"]})]})]})]})}function i({code:t}){let[o,l]=(0,n.useState)(""),[a,i]=(0,n.useState)("");return((0,n.useEffect)(()=>{let r=async()=>{try{let r=(await e.A(95802)).default;r.initialize({startOnLoad:!1,theme:"dark",flowchart:{useMaxWidth:!1,curve:"basis"},themeVariables:{fontSize:"16px"}});let{svg:o}=await r.render("mermaid-exec-"+Date.now(),t);l(o),i("")}catch(e){console.error("Mermaid render error:",e),i("渲染失败")}};t&&r()},[t]),a)?(0,r.jsx)("div",{style:{color:"#f87171"},children:a}):o?(0,r.jsx)("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"flex-start",minWidth:"max-content"},dangerouslySetInnerHTML:{__html:o}}):(0,r.jsx)("div",{style:{color:"#64748b"},children:"加载中..."})}var s=e.i(9665),d=e.i(94690),c=e.i(97703);let p=(0,t.default)(()=>e.A(34486).then(e=>e.Line),{loadableGenerated:{modules:[13143]},ssr:!1}),m=(0,t.default)(()=>e.A(34486).then(e=>e.LineChart),{loadableGenerated:{modules:[13143]},ssr:!1}),u=(0,t.default)(()=>e.A(34486).then(e=>e.XAxis),{loadableGenerated:{modules:[13143]},ssr:!1}),x=(0,t.default)(()=>e.A(34486).then(e=>e.YAxis),{loadableGenerated:{modules:[13143]},ssr:!1}),f=(0,t.default)(()=>e.A(34486).then(e=>e.CartesianGrid),{loadableGenerated:{modules:[13143]},ssr:!1}),g=(0,t.default)(()=>e.A(34486).then(e=>e.Tooltip),{loadableGenerated:{modules:[13143]},ssr:!1});(0,t.default)(()=>e.A(34486).then(e=>e.Legend),{loadableGenerated:{modules:[13143]},ssr:!1});let h=(0,t.default)(()=>e.A(34486).then(e=>e.ReferenceLine),{loadableGenerated:{modules:[13143]},ssr:!1}),b=(0,t.default)(()=>e.A(34486).then(e=>e.ResponsiveContainer),{loadableGenerated:{modules:[13143]},ssr:!1}),y=(0,t.default)(()=>e.A(14524),{loadableGenerated:{modules:[17847]},ssr:!1}),v=({content:e})=>{let[t,o]=(0,n.useState)(!1);return(0,r.jsxs)("span",{style:{position:"relative",marginLeft:"4px",cursor:"help",fontSize:"0.8rem",display:"inline-block"},onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:["ⓘ",t&&(0,r.jsxs)("div",{style:{position:"absolute",bottom:"100%",left:"50%",transform:"translateX(-50%)",background:"var(--dropdown-bg)",border:"1px solid var(--border)",color:"var(--foreground)",padding:"6px 10px",borderRadius:"4px",whiteSpace:"pre-line",minWidth:"280px",maxWidth:"400px",zIndex:1e3,marginBottom:"6px",fontSize:"0.75rem",boxShadow:"0 4px 6px -1px var(--shadow-color)",pointerEvents:"none",fontWeight:"normal",lineHeight:"1.4"},children:[e,(0,r.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 var(--border)"}})]})]})},j=({interactions:e,focusedStep:t,onStepClick:o})=>{if(!e||!Array.isArray(e)||0===e.length)return null;let[l,a]=(0,n.useState)("default"),[i,s]=(0,n.useState)(!0),[d,c]=(0,n.useState)(0),p=(0,n.useMemo)(()=>(e=>{if(!e||0===e.length)return[];let r=e[0];if(r.type&&("user"===r.type||"assistant"===r.type)&&r.message){let r=new Map;return e.forEach((e,t)=>{let o=e.message;if(!o||!Array.isArray(o.content))return;let n=o.content.some(e=>"toolCall"===e.type)?"toolCall":"tool_use";o.content.filter(e=>e.type===n).forEach(t=>{r.set(t.id,{name:t.name,arguments:t.arguments||t.input,messageId:e.id,timestamp:o.timestamp||Date.parse(e.timestamp)})})}),e.map((t,o)=>{let n=t.message;if(!n)return null;let l=Date.parse(t.timestamp),a=n.timestamp||(isNaN(l)?0:l),i={role:n.role,timestamp:a,timeInfo:{created:a}};if(t.latency)i.latency=t.latency;else if("assistant"===n.role){let r=e[o-1];if(r&&r.message?.role==="user"){let e=Date.parse(r.timestamp),o=Date.parse(t.timestamp);isNaN(e)||isNaN(o)||!(o>e)||(i.latency=o-e)}}if(n.content){if("string"==typeof n.content)i.content=n.content;else if(Array.isArray(n.content)){let o=n.content.filter(e=>"text"===e.type);o.length>0&&(i.content=o.map(e=>e.text).join("\n"));let l=n.content.some(e=>"toolCall"===e.type)?"toolCall":"tool_use",a=n.content.filter(e=>e.type===l);a.length>0&&(i.tool_calls=a.map(o=>{let n=r.get(o.id),l=((e,r,t)=>{let o=t,n=new Set,l=100;for(;o&&l>0&&!n.has(o);){n.add(o);let t=r.filter(e=>e.parentId===o);for(let r of t){let t=r.message;if(t&&Array.isArray(t.content)){for(let o of t.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:t.timestamp||Date.parse(r.timestamp)}}}if(t.length>0)o=t[0].id,l--;else break}return null})(o.id,e,t.id),a=0;if(n&&l){let e=n.timestamp,r=l.timestamp;e&&r&&r>e&&(a=r-e)}return{function:{name:o.name},arguments:o.arguments||o.input,output:l?l.content:null,timing:{duration_ms:a}}}))}}if(n.usage){let e=n.usage.totalTokens||n.usage.total_tokens||(n.usage.input_tokens||0)+(n.usage.output_tokens||0);i.usage={total:e,total_tokens:e,input:n.usage.input||n.usage.input_tokens||0,output:n.usage.output||n.usage.output_tokens||0}}return i}).filter(e=>e&&("user"===e.role||"assistant"===e.role))}return e})(e),[e]),m=(0,n.useMemo)(()=>{let e=[],r=e=>{if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let r=e.trim();if(!r)return null;if(/^\d+$/.test(r)){let e=Number(r);return Number.isFinite(e)?e:null}let t=Date.parse(r);return Number.isFinite(t)?t:null}return null};return p.forEach((t,o)=>{let n=t.latency||0;!n&&t.timeInfo&&t.timeInfo.completed&&t.timeInfo.created&&(n=t.timeInfo.completed-t.timeInfo.created);let l=t.usage||t.responseMessage?.usage,a=l?.total_tokens||0;!a&&l?.total&&(a=l.total),!a&&(l?.input||l?.output)&&(a=(l.input||0)+(l.output||0)),e.push({kind:"llm",id:`llm-${o}`,order:e.length,original:t,parentIndex:o,toolIndex:null,latency:n,tokens:a});let i=t.tool_calls||t.toolCalls||[];Array.isArray(i)&&i.length>0&&i.forEach((t,n)=>{let l=0,a=t.timing||t.timeInfo||{};if("number"==typeof a.duration_ms)l=a.duration_ms;else if(a.started_at&&a.completed_at){let e=r(a.started_at),t=r(a.completed_at);null!=e&&null!=t&&t>=e&&t-e<36e5&&(l=t-e)}e.push({kind:"tool",id:`tool-${o}-${n}`,order:e.length,original:t,parentIndex:o,toolIndex:n,latency:l,tokens:0})})}),e},[e]),u=(0,n.useMemo)(()=>new Set([...m.filter(e=>"llm"===e.kind)].sort((e,r)=>r.latency-e.latency).slice(0,5).filter(e=>e.latency>0).map(e=>e.id)),[m]),x=(0,n.useMemo)(()=>new Set([...m.filter(e=>"llm"===e.kind)].sort((e,r)=>r.tokens-e.tokens).slice(0,5).filter(e=>e.tokens>0).map(e=>e.id)),[m]),f=m.filter(e=>"llm"===e.kind),g=(0,n.useMemo)(()=>{let e=[...f];return"latency_desc"===l?e.sort((e,r)=>r.latency-e.latency):"tokens_desc"===l?e.sort((e,r)=>r.tokens-e.tokens):e.sort((e,r)=>e.order-r.order),e},[f,l]),h=Math.ceil(g.length/5),b=(0,n.useMemo)(()=>{let e=5*d;return g.slice(e,e+5)},[g,d,5]),y=(0,n.useMemo)(()=>{let e=[];return b.forEach(r=>{e.push(r);let t=m.filter(e=>"tool"===e.kind&&e.parentIndex===r.parentIndex);e.push(...t)}),e},[b,m]);return(0,n.useEffect)(()=>{c(0)},[l]),(0,r.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem",borderBottom:"1px solid #334155",paddingBottom:"4px",minHeight:"34px"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("button",{onClick:()=>s(!i),style:{background:"transparent",border:"none",color:"#38bdf8",cursor:"pointer",padding:0},children:i?"▼":"▶"}),(0,r.jsx)("h4",{style:{color:"#38bdf8",fontSize:"0.95rem",margin:0},children:"执行步骤(Trace)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("span",{style:{fontSize:"0.8rem",color:"var(--foreground-muted)"},children:"Sort by:"}),(0,r.jsxs)("select",{value:l,onChange:e=>a(e.target.value),style:{background:"var(--input-bg)",color:"var(--foreground)",border:"1px solid var(--border)",borderRadius:"4px",padding:"2px 8px",fontSize:"0.8rem",outline:"none"},children:[(0,r.jsx)("option",{value:"default",children:"执行顺序"}),(0,r.jsx)("option",{value:"latency_desc",children:"时延"}),(0,r.jsx)("option",{value:"tokens_desc",children:"Tokens"})]})]})]}),i&&(0,r.jsxs)("div",{style:{maxHeight:"600px",overflowY:"auto",paddingRight:"8px"},children:[(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:y.map(e=>{let{original:n,kind:l,parentIndex:a,toolIndex:i,latency:s,tokens:d}=e,c=u.has(e.id),p=x.has(e.id),m=t===a,f="tool"===l,g=s<1e3?`${s.toFixed(0)}ms`:`${(s/1e3).toFixed(2)}s`,h="unknown",b="";if("tool"===l){h=`tool:${n.function?.name||n.name||"unknown"}`;let e=n.output??(n.state&&n.state.output);b="string"==typeof e?e:null!=e?JSON.stringify(e):""}else{if(n.responseMessage){h=n.responseMessage.role||"assistant";let e=n.responseMessage.content;"string"==typeof e?b=e:e&&(b=JSON.stringify(e))}if(!b&&n.content){let e=n.content;b="string"==typeof e?e:JSON.stringify(e)}n.role&&"unknown"===h&&(h=n.role)}let y=f?"#fbbf24":"user"===h?"#a78bfa":"assistant"===h?"#38bdf8":"opencode"===h?"#ef4444":"subagent"===h?"#22c55e":"#e2e8f0",v=c?"#fb923c":"#fbbf24",j="0 0 0 2px rgba(96, 165, 250, 0.3)",k=`inset 3px 0 0 ${v}`,S=f?m?`${j}, ${k}`:k:m?j:"none";return b.length>150&&(b=b.slice(0,150)+"..."),(0,r.jsxs)("div",{onClick:()=>o(a),style:{background:m?f?"rgba(124, 58, 237, 0.2)":"rgba(37, 99, 235, 0.2)":f?"var(--background-secondary)":"var(--card-bg)",border:m?"1px solid var(--primary)":"1px solid var(--border)",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:S},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("span",{style:{background:"var(--background-secondary)",color:"var(--foreground-secondary)",padding:"2px 6px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold"},children:"tool"===l?`#${a}.${i}`:`#${a}`}),(0,r.jsx)("span",{style:{fontWeight:"bold",color:y,textTransform:"capitalize"},children:h}),f&&(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"#ffffff",background:"var(--warning)",borderRadius:"999px",padding:"1px 8px",fontWeight:"bold"},children:"TOOL"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"1rem",fontSize:"0.85rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,r.jsx)("span",{style:{color:"var(--foreground-muted)"},children:"Latency:"}),(0,r.jsx)("span",{style:{color:c?"var(--warning)":"var(--foreground)",fontWeight:c?"bold":"normal",borderBottom:c?"1px dashed var(--warning)":"none"},children:g}),c&&(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--warning)",border:"1px solid var(--warning)",borderRadius:"4px",padding:"0 4px"},children:"TOP 5"})]}),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,r.jsx)("span",{style:{color:"var(--foreground-muted)"},children:"Tokens:"}),(0,r.jsx)("span",{style:{color:p?"var(--accent)":"var(--foreground)",fontWeight:p?"bold":"normal",borderBottom:p?"1px dashed var(--accent)":"none"},children:d}),p&&(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--accent)",border:"1px solid var(--accent)",borderRadius:"4px",padding:"0 4px"},children:"TOP 5"})]})]})]}),(0,r.jsx)("div",{style:{color:"var(--foreground)",fontFamily:"monospace",opacity:.9,wordBreak:"break-all"},children:b||(0,r.jsx)("span",{style:{color:"var(--foreground-muted)",fontStyle:"italic"},children:"(No Content)"})})]},e.id)})}),h>1&&(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"1rem",marginTop:"1rem"},children:[(0,r.jsx)("button",{onClick:()=>c(e=>Math.max(0,e-1)),disabled:0===d,style:{padding:"4px 12px",background:0===d?"var(--border)":"var(--primary)",color:0===d?"var(--foreground-muted)":"#ffffff",border:"none",borderRadius:"4px",cursor:0===d?"not-allowed":"pointer"},children:"Prev"}),(0,r.jsxs)("span",{style:{color:"var(--foreground-muted)",fontSize:"0.9rem"},children:["Page ",d+1," of ",h]}),(0,r.jsx)("button",{onClick:()=>c(e=>Math.min(h-1,e+1)),disabled:d===h-1,style:{padding:"4px 12px",background:d===h-1?"var(--border)":"var(--primary)",color:d===h-1?"var(--foreground-muted)":"#ffffff",border:"none",borderRadius:"4px",cursor:d===h-1?"not-allowed":"pointer"},children:"Next"})]})]})]})};function k(){return(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)("div",{className:"p-8 text-white",children:"Loading..."}),children:(0,r.jsx)(S,{})})}function S(){let e,t=(0,o.useRouter)(),i=(0,o.useSearchParams)(),{user:k}=(0,d.useAuth)(),{theme:S,toggleTheme:B,isDark:T}=(0,c.useTheme)(),R=i.get("query")||"",I=i.get("framework")||"",A=i.get("expandTaskId"),[L,M]=(0,n.useState)([]),[$,N]=(0,n.useState)(!0),[W,D]=(0,n.useState)({}),[F,O]=(0,n.useState)("all"),[P,E]=(0,n.useState)(null),[K,H]=(0,n.useState)(""),[q,U]=(0,n.useState)(null),[J,G]=(0,n.useState)(null),[Y,V]=(0,n.useState)(""),[X,Q]=(0,n.useState)(null),[Z,ee]=(0,n.useState)(null),[er,et]=(0,n.useState)(!1),[eo,en]=(0,n.useState)("all"),[el,ea]=(0,n.useState)("type"),[ei,es]=(0,n.useState)(null),[ed,ec]=(0,n.useState)(!0),[ep,em]=(0,n.useState)(!0),[eu,ex]=(0,n.useState)(!0);(0,n.useEffect)(()=>{let e=ei?ei.task_id||ei.upload_id||`temp-${ei.timestamp}`:null;if(!e||W[e])return;let r=[e];/^ses_/.test(e)&&/-\d+$/.test(e)&&r.push(e.replace(/-\d+$/,""));let t=e=>(0,l.apiFetch)(`/api/session?taskId=${encodeURIComponent(e)}`).then(e=>e.ok?e.json():{error:"Error"}).then(e=>{if(e&&!e.error)return e;throw Error(e?.error||"Error")});(async()=>{for(let o of r)try{let r=await t(o);D(t=>({...t,[e]:r}));return}catch{}D(r=>({...r,[e]:{error:"Fetch failed"}}))})()},[ei]),(0,n.useEffect)(()=>{let e=new URLSearchParams;k&&e.append("user",k),R&&e.append("query",R),I&&e.append("framework",I),A&&e.append("taskId",A),(0,l.apiFetch)("/api/data?"+e.toString(),{cache:"no-store"}).then(e=>e.json()).then(e=>{let r=R,t=I;if(!r&&A){let o=e.find(e=>e.task_id===A||e.upload_id===A);o&&(r=o.query,t||(t=o.framework),es(o))}else if(A){let r=e.find(e=>e.task_id===A||e.upload_id===A);r&&es(r)}let o=e.filter(e=>e.query===r&&(!t||e.framework===t)).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,r)=>new Date(e.timestamp).getTime()-new Date(r.timestamp).getTime()),M(o),N(!1)})},[R,I,A,k]);let[ef,eg]=(0,n.useState)(new Set),[eh,eb]=(0,n.useState)(new Set),[ey,ev]=(0,n.useState)(!1),[ej,ek]=(0,n.useState)(!1),[eS,ew]=(0,n.useState)("label"),e_="__no_label__",eC=(0,n.useMemo)(()=>{let e=new Set,r=!1;L.forEach(t=>{t.label?e.add(t.label):r=!0});let t=Array.from(e).sort();return r&&t.unshift(e_),t},[L]),ez=(0,n.useMemo)(()=>{let e=new Set,r=!1;L.forEach(t=>{t.model?e.add(t.model):r=!0});let t=Array.from(e).sort();return r&&t.unshift(e_),t},[L]),eB=(0,n.useMemo)(()=>{let e=L;if("all"!==F){let r=Date.now()-(({"1h":36e5,"12h":432e5,"24h":864e5})[F]||0);e=e.filter(e=>new Date(e.timestamp).getTime()>r)}ef.size>0&&(e=e.filter(e=>e.label?ef.has(e.label):ef.has(e_))),eh.size>0&&(e=e.filter(e=>e.model?eh.has(e.model):eh.has(e_)));let r=new Map;for(let t of e){let e=t.task_id||t.upload_id||"";if(!e)continue;let o=r.get(e);if(!o){r.set(e,t);continue}let n=new Date(o.timestamp).getTime(),l=new Date(t.timestamp).getTime();if(l>n){r.set(e,t);continue}if(l===n){let n=String(o.final_result||"").length;String(t.final_result||"").length>n&&r.set(e,t)}}return Array.from(r.values())},[L,F,ef,eh]),eT=(0,n.useMemo)(()=>{let e="label"===eS?"label":"model",r=[...new Set(eB.map(r=>r[e]).filter(e=>e))];return r.sort((e,r)=>{let t=e=>{let r=String(e).match(/(\d+)$/);return r?parseInt(r[0],10):null},o=t(String(e)),n=t(String(r));return null!==o&&null!==n?o-n:String(e).localeCompare(String(r))}),{latency:r.map(r=>{let t=eB.filter(t=>t[e]===r);return{name:r,latency:t.reduce((e,r)=>e+(r.latency||0),0)/t.length}}),tokens:r.map(r=>{let t=eB.filter(t=>t[e]===r);return{name:r,tokens:t.reduce((e,r)=>e+(r.tokens||0),0)/t.length}}),accuracy:r.map(r=>{let t=eB.filter(t=>t[e]===r);return{name:r,answer_score:t.reduce((e,r)=>e+(r.answer_score||0),0)/t.length}}),skillRecallRate:r.map(r=>{let t=eB.filter(t=>t[e]===r).filter(e=>null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate),o=t.length,n=t.reduce((e,r)=>e+(r.skill_recall_rate||0),0);return{name:r,skill_recall_rate:o>0?n/o:0}}),contextWindow:r.map(r=>{let t=eB.filter(t=>t[e]===r&&null!=t.context_window_pct);return{name:r,context_window_pct:t.length>0?t.reduce((e,r)=>e+(r.context_window_pct||0),0)/t.length:void 0}}).filter(e=>null!=e.context_window_pct)}},[eB,eS]),eR=(0,n.useMemo)(()=>{if(0===eB.length)return[];let e=[...eB].sort((e,r)=>new Date(e.timestamp).getTime()-new Date(r.timestamp).getTime()).filter(e=>null!=e.cost);if(0===e.length)return[];let r=[],t=0,o=0;return e.forEach((e,n)=>{t+=e.cost||0,e.is_answer_correct&&o++;let l=n+1,a=t/l,i=o/l,s=i>0?a/i:null;null!==s&&r.push({timestamp:e.timestamp,cpsr:s,avgCost:a,successRate:i,totalRuns:l})}),r},[eB]),eI=async(e,r)=>{let o=K.trim();if(o){U({id:e,status:"saving"});try{let n=await (0,l.apiFetch)("/api/data",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:e,upload_id:r||void 0,query:o})}),a=await n.json();if(!n.ok)return void U({id:e,status:"error",msg:a.error||"保存失败"});let i=(a.record?.judgment_reason||"").includes("未找到匹配的评测配置")?"已保存,但未找到匹配的评测配置,Score 已归零。请在「数据集管理」中为该 query 添加完全一致的条目。":a.message||"已保存";if(U({id:e,status:"ok",msg:i}),E(null),H(""),o!==R){let r=new URLSearchParams;r.set("query",o),I&&r.set("framework",I),r.set("expandTaskId",e),t.push(`/details?${r.toString()}`)}else{let e=k?`/api/data?user=${encodeURIComponent(k)}`:"/api/data",r=await (0,l.apiFetch)(e),t=(await r.json()).filter(e=>e.query===R&&(!I||e.framework===I)).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}));t.sort((e,r)=>new Date(e.timestamp).getTime()-new Date(r.timestamp).getTime()),M(t)}}catch(r){U({id:e,status:"error",msg:"网络错误"})}}},eA=async(e,r)=>{let t=Y.trim();if(t){Q({id:e,status:"saving"});try{let o=await (0,l.apiFetch)("/api/data",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:e,upload_id:r||void 0,final_result:t})}),n=await o.json();if(!o.ok)return void Q({id:e,status:"error",msg:n.error||"保存失败"});let a=n.message||"已保存,正在后台重新评估";Q({id:e,status:"ok",msg:a}),G(null),V("");try{M(r=>r.map(r=>(r.task_id||r.upload_id)===e?{...r,final_result:t,judgment_reason:"结果评估中..."}:r))}catch(e){console.error("Error updating local data:",e)}}catch(r){Q({id:e,status:"error",msg:"网络错误"})}}},eL=async e=>{let r=e.target.files?.[0];if(!r)return;let t=new FormData;t.append("document",r);try{let e=await (0,l.apiFetch)("/api/parse-document",{method:"POST",body:t}),r=await e.json();e.ok?V(r.content||""):alert("解析文档失败: "+(r.error||"Unknown error"))}catch(e){alert("解析文档异常: "+e.message)}},eM=e=>new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),e$=e=>{if(!e)return"-";let r=new Date(e);return r.getFullYear()+"/"+String(r.getMonth()+1).padStart(2,"0")+"/"+String(r.getDate()).padStart(2,"0")+" "+String(r.getHours()).padStart(2,"0")+":"+String(r.getMinutes()).padStart(2,"0")+":"+String(r.getSeconds()).padStart(2,"0")},eN=e=>{if(!e&&0!==e)return"-";let r=new Date(e);return r.getFullYear()+"/"+String(r.getMonth()+1).padStart(2,"0")+"/"+String(r.getDate()).padStart(2,"0")+" "+String(r.getHours()).padStart(2,"0")+":"+String(r.getMinutes()).padStart(2,"0")+":"+String(r.getSeconds()).padStart(2,"0")+"."+String(r.getMilliseconds()).padStart(3,"0")};if($)return(0,r.jsx)("div",{style:{padding:"2rem",color:"#1e293b"},children:"Loading..."});if(!A)return(0,r.jsx)("div",{style:{minHeight:"100vh",background:"#ffffff",color:"#1e293b",padding:"2rem"},children:(0,r.jsxs)("div",{style:{maxWidth:"600px",margin:"4rem auto",textAlign:"center",background:"#f8fafc",border:"1px solid #e2e8f0",borderRadius:"8px",padding:"3rem"},children:[(0,r.jsx)("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"⚠️"}),(0,r.jsx)("h2",{style:{color:"#d97706",marginBottom:"1rem"},children:"缺少必要参数"}),(0,r.jsxs)("p",{style:{color:"#64748b",marginBottom:"1.5rem"},children:["请通过 ",(0,r.jsx)("code",{style:{background:"#f1f5f9",padding:"2px 8px",borderRadius:"4px"},children:"expandTaskId"})," 参数访问此页面"]}),(0,r.jsx)("button",{onClick:()=>t.push("/"),style:{padding:"10px 24px",background:"#2563eb",color:"#ffffff",border:"none",borderRadius:"6px",fontWeight:"bold",cursor:"pointer"},children:"返回首页"})]})});if(!ei)return(0,r.jsx)("div",{style:{minHeight:"100vh",background:"#ffffff",color:"#1e293b",padding:"2rem"},children:(0,r.jsxs)("div",{style:{maxWidth:"600px",margin:"4rem auto",textAlign:"center",background:"#f8fafc",border:"1px solid #e2e8f0",borderRadius:"8px",padding:"3rem"},children:[(0,r.jsx)("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"🔍"}),(0,r.jsx)("h2",{style:{color:"#dc2626",marginBottom:"1rem"},children:"未找到记录"}),(0,r.jsxs)("p",{style:{color:"#64748b",marginBottom:"1.5rem"},children:["未找到 ID 为 ",(0,r.jsx)("code",{style:{background:"#f1f5f9",padding:"2px 8px",borderRadius:"4px"},children:A})," 的记录"]}),(0,r.jsx)("button",{onClick:()=>t.push("/"),style:{padding:"10px 24px",background:"#2563eb",color:"#ffffff",border:"none",borderRadius:"6px",fontWeight:"bold",cursor:"pointer"},children:"返回首页"})]})});let eW=ei.task_id||ei.upload_id||`temp-${ei.timestamp}`,eD=W[eW];return(0,r.jsxs)("div",{style:{minHeight:"100vh",background:"var(--background)",color:"var(--foreground)",padding:"2rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem",borderBottom:"1px solid var(--border)",paddingBottom:"0.5rem"},children:[(0,r.jsxs)("h1",{style:{fontSize:"1.5rem",margin:0,display:"flex",alignItems:"center",gap:"8px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:R,children:[(0,r.jsx)("span",{id:"home-link",style:{flexShrink:0,cursor:"pointer",color:"var(--primary)",transition:"color 0.2s"},onClick:()=>t.push("/"),onMouseOver:e=>e.currentTarget.style.color="var(--primary-hover)",onMouseOut:e=>e.currentTarget.style.color="var(--primary)",children:"skill-insight"}),(0,r.jsx)("span",{style:{flexShrink:0,color:"var(--border-dark)"},children:"|"}),(0,r.jsx)("span",{style:{color:"var(--foreground-secondary)",overflow:"hidden",textOverflow:"ellipsis"},children:R})]}),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("button",{className:"theme-toggle-btn",onClick:B,title:T?"切换到浅色主题":"切换到深色主题",children:T?"☀️":"🌙"}),(0,r.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 r=`
|
|
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
|
-
`,t=new Blob([`<!DOCTYPE html>
|
|
109
|
-
${e.outerHTML}${r}`],{type:"text/html"}),o=URL.createObjectURL(t),n=document.createElement("a");n.href=o,n.download=`detail_export_${R||"all"}_${new Date().toISOString().slice(0,10)}.html`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(o)},style:{padding:"8px 16px",background:"var(--primary)",color:"#ffffff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("span",{children:"📤"})," 导出"]})]})]}),(0,r.jsxs)("div",{style:{marginBottom:"2rem",color:"var(--foreground-secondary)"},children:["框架: ",(0,r.jsx)("strong",{style:{color:"var(--foreground)"},children:I||"All"})," | 任务 ID: ",(0,r.jsx)("strong",{style:{color:"var(--foreground)"},children:eW})]}),(0,r.jsxs)("div",{style:{background:"linear-gradient(135deg, var(--background-secondary) 0%, var(--background) 100%)",border:"2px solid var(--primary)",borderRadius:"12px",padding:"2rem",marginBottom:"2rem",boxShadow:"0 0 20px var(--shadow-color)"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:ed?"1.5rem":"0"},children:[(0,r.jsxs)("h2",{style:{fontSize:"1.5rem",margin:0,color:"var(--primary)",display:"flex",alignItems:"center",gap:"8px"},children:["📋 本次执行记录详情",(0,r.jsx)("span",{style:{fontSize:"0.85rem",background:"var(--primary)",color:"#ffffff",padding:"2px 12px",borderRadius:"999px",fontWeight:"bold"},children:e$(ei.timestamp)})]}),(0,r.jsx)("button",{onClick:()=>ec(!ed),style:{background:"transparent",border:"1px solid var(--primary)",color:"var(--primary)",padding:"4px 12px",borderRadius:"6px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem"},children:ed?"▼ 折叠":"▶ 展开"})]}),ed&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{style:{background:"var(--background)",border:"1px solid var(--border)",borderRadius:"8px",padding:"1.5rem",marginBottom:"1.5rem"},children:[(0,r.jsx)("h3",{style:{fontSize:"1.2rem",marginBottom:"1rem",color:"var(--warning)",borderBottom:"1px solid var(--border)",paddingBottom:"0.5rem"},children:"📊 原始采集数据"}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem",marginBottom:"1.5rem",minHeight:"400px"},children:[(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1.5rem"},children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:C,children:"用户输入"}),P===eW?(0,r.jsxs)("div",{children:[(0,r.jsx)("textarea",{value:K,onChange:e=>H(e.target.value),rows:3,style:{width:"100%",padding:"0.75rem",background:"var(--input-bg)",border:"1px solid var(--input-border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"monospace",fontSize:"0.9rem",resize:"vertical"},placeholder:"输入 query"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("button",{onClick:()=>eI(eW,ei.upload_id),disabled:q?.id===eW&&q?.status==="saving",style:{padding:"6px 14px",background:"var(--primary)",color:"#ffffff",border:"none",borderRadius:"4px",cursor:q?.id===eW&&q?.status==="saving"?"not-allowed":"pointer",fontWeight:"bold"},children:q?.id===eW&&q?.status==="saving"?"保存中...":"保存"}),(0,r.jsx)("button",{onClick:()=>{E(null),H(""),U(null)},style:{padding:"6px 14px",background:"var(--border)",color:"var(--foreground-secondary)",border:"none",borderRadius:"4px",cursor:"pointer"},children:"取消"}),q?.id===eW&&q?.status==="ok"&&(0,r.jsx)("span",{style:{color:"var(--success)",fontSize:"0.9rem"},children:q.msg}),q?.id===eW&&q?.status==="error"&&(0,r.jsx)("span",{style:{color:"var(--error)",fontSize:"0.9rem"},children:q.msg})]})]}):(0,r.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.5rem"},children:[(0,r.jsx)("div",{style:z,children:ei.query||"(空)"}),(0,r.jsx)("button",{onClick:e=>{var r;e.stopPropagation(),r=ei.query||"",E(eW),H(r||""),U(null)},style:{padding:"4px 10px",background:"transparent",color:"var(--primary)",border:"1px solid var(--primary)",borderRadius:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontSize:"0.8rem",whiteSpace:"nowrap"},children:"✏️ 编辑"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:C,children:"使用 Skills"}),(0,r.jsx)("div",{style:{...z,padding:"0.5rem"},children:(0,r.jsx)(s.SkillLinks,{skills:ei.skills,skill:ei.skill,skillVersion:ei.skill_version,user:ei.user})})]}),(null!=ei.llm_call_count||null!=ei.tool_call_count||null!=ei.input_tokens||null!=ei.output_tokens||null!=ei.tool_call_error_count)&&(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:C,children:"运行时指标"}),(0,r.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(120px, 1fr))",gap:"0.75rem",marginTop:"0.5rem"},children:[{label:"大模型调用次数",value:ei.llm_call_count,color:"var(--primary)"},{label:"工具调用次数",value:ei.tool_call_count,color:"var(--primary)"},{label:"工具报错次数",value:ei.tool_call_error_count??0,color:ei.tool_call_error_count?"var(--error)":"var(--success)"},{label:"输入 Tokens",value:ei.input_tokens,color:"var(--primary)"},{label:"输出 Tokens",value:ei.output_tokens,color:"var(--primary)"},{label:"上下文窗口 %",value:ei.context_window_pct,color:null!=ei.context_window_pct?ei.context_window_pct>90?"var(--error)":"var(--success)":"var(--primary)",format:e=>`${e.toFixed(1)}%`,fallback:null==ei.context_window_pct&&null!=ei.max_single_call_tokens?"N/A":void 0,tooltip:null!=ei.context_window_pct?`max_single_call_tokens (${ei.max_single_call_tokens?.toLocaleString()}) / context_window_limit (${ei.context_window_limit?.toLocaleString()}) \xd7 100`+(ei.model?` (${ei.model})`:"")+`. Source: ${ei.context_window_source||"default"}.`:ei.model?`此模型未配置: ${ei.model}.`:"Model unknown. Context window % cannot be calculated."},{label:"预估成本",value:ei.cost,color:"var(--primary)",format:e=>`$${0===e?"0.00":e<.01?e.toFixed(4):e<1?e.toFixed(3):e.toFixed(2)}`,fallback:null==ei.cost&&null!=ei.input_tokens?"N/A":void 0,tooltip:ei.cost_pricing?(ei.cache_read_input_tokens||ei.cache_creation_input_tokens?`Cost = base_input \xd7 $${ei.cost_pricing.inputTokenPrice}/M + cache_read \xd7 $${ei.cost_pricing.cacheReadInputTokenPrice}/M + cache_create \xd7 $${ei.cost_pricing.cacheCreationInputTokenPrice}/M + output \xd7 $${ei.cost_pricing.outputTokenPrice}/M`:`Cost = input_tokens \xd7 $${ei.cost_pricing.inputTokenPrice}/M + output_tokens \xd7 $${ei.cost_pricing.outputTokenPrice}/M`)+(ei.model?` (${ei.model})`:"")+`. Estimated from ${"custom"===ei.cost_pricing.source?"custom":"default"} pricing.`:ei.model?`Pricing not available for model: ${ei.model}.`:"Model unknown. Cost cannot be estimated."}].map((e,t)=>(0,r.jsxs)("div",{style:{background:"var(--background-secondary)",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.75rem",textAlign:"center"},children:[(0,r.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,r.jsxs)("div",{style:{fontSize:"0.75rem",color:"var(--foreground-muted)",marginTop:"4px"},children:[e.label,"tooltip"in e&&e.tooltip&&(0,r.jsx)(v,{content:e.tooltip})]})]},t))})]})]}),(0,r.jsx)("div",{style:{position:"relative"},children:(0,r.jsxs)("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column"},children:[(0,r.jsx)("h4",{style:{...C,marginBottom:"0.5rem"},children:"最终结果"}),J===eW?(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[(0,r.jsx)("textarea",{value:Y,onChange:e=>V(e.target.value),style:{flex:1,width:"100%",padding:"0.75rem",background:"var(--input-bg)",border:"1px solid var(--input-border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"monospace",fontSize:"0.9rem",resize:"none",marginBottom:"0.5rem"},placeholder:"输入或上传 最终结果"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center",flexShrink:0},children:[(0,r.jsx)("button",{onClick:()=>eA(eW,ei.upload_id),disabled:X?.id===eW&&X?.status==="saving",style:{padding:"6px 14px",background:"var(--primary)",color:"#ffffff",border:"none",borderRadius:"4px",cursor:X?.id===eW&&X?.status==="saving"?"not-allowed":"pointer",fontWeight:"bold"},children:X?.id===eW&&X?.status==="saving"?"保存中...":"保存并重评"}),(0,r.jsx)("button",{onClick:()=>{G(null),V(""),Q(null)},style:{padding:"6px 14px",background:"var(--border)",color:"var(--foreground-secondary)",border:"none",borderRadius:"4px",cursor:"pointer"},children:"取消"}),(0,r.jsxs)("label",{style:{padding:"6px 14px",background:"var(--background-secondary)",color:"var(--warning)",border:"1px solid var(--warning)",borderRadius:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontSize:"0.85rem"},children:["📄 上传报告",(0,r.jsx)("input",{type:"file",accept:".md,.txt,.pdf,.markdown",style:{display:"none"},onChange:eL})]}),X?.id===eW&&X?.status==="ok"&&(0,r.jsx)("span",{style:{color:"var(--success)",fontSize:"0.9rem"},children:X.msg}),X?.id===eW&&X?.status==="error"&&(0,r.jsx)("span",{style:{color:"var(--error)",fontSize:"0.9rem"},children:X.msg})]})]}):(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[(0,r.jsx)("div",{style:{...z,flex:1,overflowY:"auto",padding:"1rem"},children:ei.final_result||"(No Result)"}),(0,r.jsx)("div",{style:{marginTop:"0.5rem",flexShrink:0},children:(0,r.jsx)("button",{onClick:e=>{var r;e.stopPropagation(),r=ei.final_result||"",G(eW),V(r||""),Q(null)},style:{padding:"4px 10px",background:"transparent",color:"var(--primary)",border:"1px solid var(--primary)",borderRadius:"4px",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"0.8rem"},children:"✏️ 编辑 / 替换结果"})})]})]})})]}),eD?eD.error?(0,r.jsx)("div",{style:{color:"var(--foreground-muted)",fontStyle:"italic"},children:eD.error}):(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"2rem"},children:[(0,r.jsxs)("div",{style:{minWidth:0},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"flex-start",alignItems:"center",gap:"8px",marginBottom:"0.5rem",borderBottom:"1px solid var(--border)",paddingBottom:"4px",minHeight:"34px"},children:[(0,r.jsx)("button",{onClick:()=>em(!ep),style:{background:"transparent",border:"none",color:"var(--primary)",cursor:"pointer",padding:0},children:ep?"▼":"▶"}),(0,r.jsx)("h4",{style:C,children:"会话数据(原始JSON)"})]}),ep&&(0,r.jsx)("div",{style:{background:"var(--code-block-bg)",padding:"1rem",borderRadius:"8px",overflowY:"auto",maxHeight:"600px",border:"1px solid var(--border)"},children:(0,r.jsx)(y,{src:(e=>{if(!e)return e;let r=JSON.parse(JSON.stringify(e));return r.startTime&&(r.startTime=eN(r.startTime)),Array.isArray(r.interactions)&&(r.interactions=r.interactions.map(e=>{let r={...e};return r.timestamp&&(r.timestamp=eN(r.timestamp)),r.message?.timestamp&&(r.message.timestamp=eN(r.message.timestamp)),r.timeInfo?.created&&(r.timeInfo.created=eN(r.timeInfo.created)),r})),r})(eD),theme:T?"monokai":"rjv-default",shouldCollapse:e=>{let r=[...e.namespace||[],e.name].filter(e=>null!=e&&""!==String(e).trim()).map(String);if(null===Z)return"interactions"===r[0]&&!!(r.length>=2);if("interactions"===r[0]){let e=r[1];if(void 0!==e){let r=Number(e);if(!isNaN(r)&&r!==Z)return!0}}return!1},displayDataTypes:!1,name:null,style:{backgroundColor:"transparent",fontSize:"0.85rem"},enableClipboard:!0},`json-${null!==Z?Z:"default"}`)})]}),(0,r.jsx)("div",{style:{minWidth:0},children:(0,r.jsx)(j,{interactions:eD.interactions,focusedStep:Z,onStepClick:ee})})]}):(0,r.jsx)("div",{style:{color:"var(--primary)"},children:"Loading session log..."})]}),(0,r.jsxs)("div",{style:{background:"var(--background-secondary)",border:"1px solid var(--border)",borderRadius:"8px",padding:"1.5rem",marginTop:"1.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:eu?"1rem":"0",borderBottom:eu?"1px solid var(--border)":"none",paddingBottom:eu?"0.5rem":"0"},children:[(0,r.jsx)("h3",{style:{fontSize:"1.2rem",margin:0,color:"var(--secondary)"},children:"🔍 分析结果"}),(0,r.jsx)("button",{onClick:()=>ex(!eu),style:{background:"transparent",border:"1px solid var(--secondary)",color:"var(--secondary)",padding:"4px 12px",borderRadius:"6px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem"},children:eu?"▼ 折叠":"▶ 展开"})]}),eu&&(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"2rem",marginBottom:"2rem"},children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:{...C,marginBottom:"1rem"},children:"评分详情与分析"}),0===(e=function(e){let r=[];if(!e)return r;let t=e.split("\n"),o={rc:0,ka:0};for(let e of t){let t=e.match(/\*\*Root Cause\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);if(t){r.push({id:`RC-${o.rc++}`,type:"root_cause",content:t[1].replace(/\.{3}$/,""),match_score:parseInt(t[2])/100,explanation:t[3].trim(),weight:parseFloat(t[4])});continue}let n=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);n&&r.push({id:`KA-${o.ka++}`,type:"key_action",content:n[1].replace(/\.{3}$/,""),match_score:parseInt(n[2])/100,explanation:n[3].trim(),weight:parseFloat(n[4])})}return r}(ei.judgment_reason||"")).length?(0,r.jsx)("div",{style:{...z,background:"var(--code-block-bg)",padding:"1rem",borderRadius:"6px",border:"1px solid var(--border)"},children:ei.judgment_reason||"-"}):(0,r.jsx)("div",{style:{background:"var(--card-bg)",borderRadius:"6px",border:"1px solid var(--border)",overflowX:"visible"},children:(0,r.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",minWidth:"950px"},children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{style:{background:"var(--background-secondary)"},children:[(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"60px",whiteSpace:"nowrap"},children:"ID"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"180px"},children:"评分标准"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"60px",whiteSpace:"nowrap"},children:"得分"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"50px",whiteSpace:"nowrap"},children:"权重"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"60px",whiteSpace:"nowrap"},children:"扣分"}),(0,r.jsxs)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"50px",whiteSpace:"nowrap"},children:["关联",(0,r.jsx)(v,{content:"表示扣分来源。若与skill相关,则体现在“分析依据”和“改进建议”"})]}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"150px"},children:"扣分原因"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"150px"},children:"分析依据"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"150px"},children:"改进建议"})]})}),(0,r.jsx)("tbody",{children:e.map((e,t)=>{let o=ei.skill_issues?.find(r=>{if(r.id===e.id)return!0;let t=(r.content||"").trim().toLowerCase(),o=(e.content||"").trim().toLowerCase();return t&&o&&(t===o||o.includes(t))}),n=(1-e.match_score)*e.weight;return(0,r.jsxs)("tr",{id:`eval-item-${eW}-${e.id}`,style:{background:t%2==0?"var(--card-bg)":"var(--background-secondary)",transition:"background 0.2s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(56, 189, 248, 0.05)"},onMouseLeave:e=>{e.currentTarget.style.background=t%2==0?"var(--card-bg)":"var(--background-secondary)"},children:[(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:(0,r.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,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--foreground)"},children:(0,r.jsx)("div",{style:{fontWeight:500,marginBottom:"4px",wordBreak:"break-word"},children:o?.content||e.content})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:(0,r.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,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center",color:"var(--foreground-secondary)"},children:e.weight.toFixed(1)}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:(0,r.jsxs)("span",{style:{color:n>0?"#f87171":"#4ade80",fontWeight:"bold",whiteSpace:"nowrap"},children:["-",n.toFixed(2)]})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:o&&(0,r.jsx)("span",{style:{background:"#ef4444",color:"#fff",padding:"2px 6px",borderRadius:"4px",fontSize:"0.7rem",whiteSpace:"nowrap"},children:"Skill"})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--foreground)",fontSize:"0.85rem"},children:o?.explanation||e.explanation||"-"}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--warning)",fontSize:"0.85rem",fontStyle:"italic"},children:o?.reasoning||"-"}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--success)",fontSize:"0.85rem"},children:o?.improvement_suggestion?(0,r.jsx)("div",{style:{background:"rgba(74, 222, 128, 0.1)",padding:"4px 8px",borderRadius:"4px"},children:o.improvement_suggestion}):"-"})]},t)})})]})})]}),ei.failures&&ei.failures.length>0?(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.75rem"},children:[(0,r.jsx)("h4",{style:{...C,color:"#f87171",borderLeft:"3px solid #f87171",paddingLeft:"8px",borderBottom:"none",margin:0},children:" 执行异常 "}),(0,r.jsx)("div",{style:{display:"flex",gap:"8px"},children:(0,r.jsxs)("select",{value:eo,onChange:e=>en(e.target.value),style:{background:"var(--input-bg)",border:"1px solid var(--input-border)",color:"var(--foreground)",borderRadius:"4px",padding:"4px 8px",fontSize:"0.8rem"},children:[(0,r.jsx)("option",{value:"all",children:"全部"}),(0,r.jsx)("option",{value:"failure",children:"失败"}),(0,r.jsx)("option",{value:"anomaly",children:"异常"})]})})]}),(0,r.jsx)("div",{style:{background:"var(--card-bg)",borderRadius:"6px",border:"1px solid var(--border)",overflow:"hidden"},children:(0,r.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem"},children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{style:{background:"var(--background-secondary)"},children:[(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"100px"},children:"类型"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"auto"},children:"描述"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"500px"},children:"恢复措施"})]})}),(0,r.jsx)("tbody",{children:ei.failures.filter(e=>{if("all"===eo)return!0;let r=e.failure_type.toLowerCase();return"failure"===eo?r.includes("fail")||r.includes("error"):"anomaly"!==eo||r.includes("anomaly")||r.includes("warn")}).map((e,t)=>(0,r.jsxs)("tr",{style:{background:t%2==0?"var(--card-bg)":"var(--background-secondary)"},children:[(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:(0,r.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,r.jsxs)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:[(0,r.jsx)("div",{style:{color:"#fca5a5",fontWeight:500,marginBottom:"4px"},children:e.description}),e.context&&(0,r.jsx)("div",{style:{fontSize:"0.8rem",color:"var(--foreground-secondary)",fontFamily:"monospace",background:"var(--code-block-bg)",padding:"6px 8px",borderRadius:"4px",marginTop:"4px",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:e.context})]}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid #334155",color:"#86efac",fontSize:"0.8rem"},children:e.recovery||"-"})]},t))})]})})]}):(0,r.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,r.jsx)(a,{executionId:eW,skillId:ei.skill&&ei.skill.trim()||(Array.isArray(ei.skills)&&ei.skills.length>0?ei.skills[0]:void 0),user:ei.user,onStepClick:ee})]})]})]})]}),(0,r.jsxs)("div",{style:{marginBottom:"2rem",display:"flex",gap:"1rem",alignItems:"center",flexWrap:"wrap"},children:[["all","24h","12h","1h"].map(e=>(0,r.jsx)("button",{className:"filter-time-btn","data-tf":e,onClick:()=>O(e),style:{padding:"6px 16px",background:F===e?"#38bdf8":"#1e293b",color:F===e?"#0f172a":"#94a3b8",border:"1px solid #334155",borderRadius:"4px",cursor:"pointer"},children:e.toUpperCase()},e)),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.8rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,r.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:"比较维度:"}),(0,r.jsxs)("div",{style:{display:"flex",background:"#1e293b",padding:"2px",borderRadius:"6px",border:"1px solid #334155"},children:[(0,r.jsx)("button",{onClick:()=>ew("label"),style:{padding:"4px 12px",borderRadius:"4px",fontSize:"0.85rem",background:"label"===eS?"#38bdf8":"transparent",color:"label"===eS?"#0f172a":"#94a3b8",border:"none",cursor:"pointer",transition:"all 0.2s",fontWeight:"label"===eS?"bold":"normal"},children:"标签 (Label)"}),(0,r.jsx)("button",{onClick:()=>ew("model"),style:{padding:"4px 12px",borderRadius:"4px",fontSize:"0.85rem",background:"model"===eS?"#38bdf8":"transparent",color:"model"===eS?"#0f172a":"#94a3b8",border:"none",cursor:"pointer",transition:"all 0.2s",fontWeight:"model"===eS?"bold":"normal"},children:"模型 (Model)"})]})]}),eC.length>0&&(0,r.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:"0.5rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,r.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:"Label:"}),(0,r.jsxs)("div",{style:{position:"relative"},children:[(0,r.jsxs)("button",{id:"label-menu-trigger",onClick:()=>ev(!ey),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,r.jsx)("span",{id:"label-trigger-text",children:0===ef.size?"All Filter":`${ef.size} Selected`}),(0,r.jsx)("span",{style:{fontSize:"0.7rem"},children:"▼"})]}),(0,r.jsxs)("div",{id:"label-menu-dropdown",style:{display:ey?"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,r.jsx)("div",{id:"filter-label-clear",onClick:()=>{eg(new Set),ev(!1)},style:{cursor:"pointer",padding:"4px 8px",fontSize:"0.9rem",color:0===ef.size?"#38bdf8":"#94a3b8",borderBottom:"1px solid #334155",marginBottom:"4px"},children:"Show All (Clear Filter)"}),eC.map(e=>{let t=ef.has(e),o=e===e_?"(None)":String(e),n=e===e_?"__no_label__":String(e);return(0,r.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontSize:"0.9rem",padding:"2px 8px"},children:[(0,r.jsx)("input",{type:"checkbox",className:"filter-label-checkbox",value:n,checked:t,onChange:()=>{let r=new Set(ef);r.has(e)?r.delete(e):r.add(e),eg(r)}}),(0,r.jsx)("span",{style:{color:t?"#fff":"#cbd5e1"},children:o})]},String(e))})]}),ey&&(0,r.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:40},onClick:()=>ev(!1)})]})]}),ez.length>0&&(0,r.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:"0.5rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,r.jsx)("span",{style:{color:"#94a3b8",fontSize:"0.9rem"},children:"Model:"}),(0,r.jsxs)("div",{style:{position:"relative"},children:[(0,r.jsxs)("button",{onClick:()=>ek(!ej),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,r.jsx)("span",{children:0===eh.size?"All Models":`${eh.size} Selected`}),(0,r.jsx)("span",{style:{fontSize:"0.7rem"},children:"▼"})]}),(0,r.jsxs)("div",{style:{display:ej?"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,r.jsx)("div",{onClick:()=>{eb(new Set),ek(!1)},style:{cursor:"pointer",padding:"4px 8px",fontSize:"0.9rem",color:0===eh.size?"#38bdf8":"#94a3b8",borderBottom:"1px solid #334155",marginBottom:"4px"},children:"Show All (Clear Filter)"}),ez.map(e=>{let t=eh.has(e),o=e===e_?"(None)":String(e);return(0,r.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontSize:"0.9rem",padding:"2px 8px"},children:[(0,r.jsx)("input",{type:"checkbox",checked:t,onChange:()=>{let r=new Set(eh);r.has(e)?r.delete(e):r.add(e),eb(r)}}),(0,r.jsx)("span",{style:{color:t?"#fff":"#cbd5e1"},children:o})]},String(e))})]}),ej&&(0,r.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:40},onClick:()=>ek(!1)})]})]})]}),eB.some(e=>null!=e.context_window_pct)&&(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsxs)("button",{onClick:()=>et(!er),style:{background:"transparent",border:"1px solid var(--border)",color:"var(--foreground-secondary)",padding:"6px 14px",borderRadius:"4px",cursor:"pointer",fontSize:"0.9rem",display:"flex",alignItems:"center",gap:"6px",marginBottom:"0.5rem"},children:[(0,r.jsx)("span",{style:{fontSize:"0.7rem"},children:er?"▲":"▼"}),"上下文窗口利用率趋势 (%)"]}),er&&(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["上下文窗口利用率趋势 (%)",(0,r.jsx)(v,{content:"单次 LLM 调用中最大 token 数 / 模型上下文窗口限制 × 100。超过 90% 时推理质量可能下降。"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eB.filter(e=>null!=e.context_window_pct),children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(u,{dataKey:"timestamp",tickFormatter:eM,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,domain:[0,100]}),(0,r.jsx)(g,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),(0,r.jsx)(h,{y:90,stroke:"var(--error)",strokeDasharray:"4 4",label:{value:"90%",fill:"var(--error)",fontSize:11}}),ei&&null!=ei.context_window_pct&&(0,r.jsx)(h,{x:ei.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"context_window_pct",stroke:"#a78bfa",dot:!0,strokeWidth:2})]})})]})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"1rem",marginBottom:"2rem"},children:[(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["时延趋势 (秒)",(0,r.jsx)(v,{content:"从请求发出到收到最终完整回复的总耗时"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eB,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(u,{dataKey:"timestamp",tickFormatter:eM,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(g,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),ei&&(0,r.jsx)(h,{x:ei.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"latency",stroke:"#38bdf8",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["Token 消耗趋势",(0,r.jsx)(v,{content:"输入 Prompt 与输出 Completion 的 Token 总和"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eB,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(u,{dataKey:"timestamp",tickFormatter:eM,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(g,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),ei&&(0,r.jsx)(h,{x:ei.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"tokens",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["准确率趋势 (0-1)",(0,r.jsx)(v,{content:"基于 AI 裁判 (LLM) 对执行结果的自动评分 (1.0=通过, 0.0=失败)"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eB,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(u,{dataKey:"timestamp",tickFormatter:eM,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,domain:[0,1]}),(0,r.jsx)(g,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),ei&&(0,r.jsx)(h,{x:ei.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"answer_score",stroke:"#4ade80",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["技能召回率趋势",(0,r.jsx)(v,{content:"基于执行结果是否使用了预期技能计算出的值 (0-1),表示正确调用技能的比例"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eB,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(u,{dataKey:"timestamp",tickFormatter:eM,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,domain:[0,1]}),(0,r.jsx)(g,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),ei&&(0,r.jsx)(h,{x:ei.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"skill_recall_rate",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),eR.length>0&&(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["CPSR 趋势",(0,r.jsx)(v,{content:"Cost Per Successful Resolution: Average cost per successful task resolution.\nFormula: (total cost) / (number of runs with successful resolutions)"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eR,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(u,{dataKey:"timestamp",tickFormatter:eM,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,tickFormatter:e=>`$${e.toFixed(3)}`}),(0,r.jsx)(g,{formatter:(e,r)=>"CPSR"===r?[`$${e?.toFixed(4)||"N/A"}`,"CPSR"]:[e,String(r)],contentStyle:{backgroundColor:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),ei&&null!=ei.cost&&(0,r.jsx)(h,{x:ei.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"cpsr",name:"CPSR",stroke:"#a78bfa",strokeWidth:2,dot:!0})]})})]})]}),eT.latency.length>0&&(0,r.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,r.jsxs)("h2",{style:{fontSize:"1.25rem",marginBottom:"1rem"},children:["按 ","label"===eS?"标签 (Label)":"模型 (Model)"," 对比 (平均值)"]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem"},children:[(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["平均时延 - ","label"===eS?"标签":"模型",(0,r.jsx)(v,{content:"平均延迟时间"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eT.latency,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(u,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,r.jsx)(g,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"latency",stroke:"#38bdf8",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["平均 Token - ","label"===eS?"标签":"模型",(0,r.jsx)(v,{content:"平均 Token 使用量"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eT.tokens,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(u,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,r.jsx)(g,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"tokens",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["平均准确率 - ","label"===eS?"标签":"模型",(0,r.jsx)(v,{content:"平均准确率 (0-1)"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eT.accuracy,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(u,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,r.jsx)(g,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"answer_score",stroke:"#4ade80",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["技能召回率 - ","label"===eS?"标签":"模型",(0,r.jsx)(v,{content:"基于执行结果是否使用了预期技能计算出的值 (0-1),表示正确调用技能的比例"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(m,{data:eT.skillRecallRate,children:[(0,r.jsx)(f,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(u,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,r.jsx)(g,{contentStyle:{background:"#1e292b",borderColor:"#334155"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"skill_recall_rate",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]})]})]}),(0,r.jsxs)("div",{className:"list-container",children:[(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsx)("h2",{style:{fontSize:"1.25rem",marginBottom:"0.5rem"},children:"同问题执行记录"}),(0,r.jsx)("p",{style:{fontSize:"0.9rem",color:"#94a3b8"},children:"点击记录可查看详细信息"})]}),(0,r.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,r.jsx)("div",{children:"时间 / ID"}),(0,r.jsx)("div",{children:"标签"}),(0,r.jsx)("div",{children:"时延"}),(0,r.jsx)("div",{children:"消耗"}),(0,r.jsx)("div",{children:"技能召回率"}),(0,r.jsx)("div",{children:"窗口%"}),(0,r.jsx)("div",{children:"评分"})]}),eB.slice().reverse().map(e=>{let t=e.task_id||e.upload_id||`temp-${e.timestamp}`,o=t===eW;return(0,r.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 r=new URLSearchParams;r.set("query",e.query),e.framework&&r.set("framework",e.framework),r.set("expandTaskId",t),window.open(`/details?${r.toString()}`,"_blank")}},onMouseOver:e=>{o||(e.currentTarget.style.background="#334155")},onMouseOut:e=>{o||(e.currentTarget.style.background="#1e293b")},children:(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr 1fr 1fr",padding:"1rem",alignItems:"center"},children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{style:{fontWeight:"bold",fontSize:"0.95rem",display:"flex",alignItems:"center",gap:"8px"},children:[e$(e.timestamp),o&&(0,r.jsx)("span",{style:{background:"#38bdf8",color:"#0f172a",padding:"2px 8px",borderRadius:"4px",fontSize:"0.7rem",fontWeight:"bold"},children:"当前"})]}),(0,r.jsx)("div",{style:{fontSize:"0.8rem",color:"#64748b"},children:t})]}),(0,r.jsx)("div",{style:{fontSize:"0.9rem",color:"#cbd5e1"},children:e.label||"-"}),(0,r.jsx)("div",{children:e.latency?e.latency<1?(1e3*e.latency).toFixed(0)+"ms":e.latency.toFixed(2)+"s":"-"}),(0,r.jsx)("div",{children:e.tokens}),(0,r.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,r.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,r.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)})]})},e.upload_id||t)})]})]})}let w={background:"var(--card-bg)",border:"1px solid var(--border)",borderRadius:"8px",padding:"1rem",display:"flex",flexDirection:"column"},_={margin:"0 0 1rem 0",fontSize:"0.9rem",color:"var(--foreground-secondary)",fontWeight:"normal"},C={color:"var(--primary)",margin:0,fontSize:"0.95rem"},z={fontFamily:"monospace",fontSize:"0.9rem",lineHeight:"1.5",whiteSpace:"pre-wrap",color:"var(--foreground)",background:"var(--code-block-bg)",padding:"0.75rem",borderRadius:"6px",border:"1px solid var(--border)"};e.s(["default",()=>k],18819)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94542,e=>{"use strict";var t=e.i(43476),r=e.i(94690),i=e.i(18566),a=e.i(71645),n=e.i(9165);function o(){let[e,o]=(0,a.useState)(""),[s,l]=(0,a.useState)(""),[c,d]=(0,a.useState)(!1),[m,u]=(0,a.useState)(""),{login:p}=(0,r.useAuth)(),h=(0,i.useRouter)();(0,a.useEffect)(()=>{(0,n.apiFetch)("/api/config/status?check_org=true").then(e=>e.json()).then(e=>{d(e.org_mode||!1),u(e.org_login_redirect_url||"")}).catch(()=>{})},[]),(0,a.useEffect)(()=>{if(!c||!m)return;let e=!1;return(async()=>{try{let t=await (0,n.apiFetch)("/api/auth/organization",{cache:"no-store"});if(!t.ok){e||401!==t.status&&403!==t.status||(window.location.href=m);return}let r=await t.json();!e&&r?.username&&(p(r.username,r.apiKey),h.replace("/"))}catch(t){e||(window.location.href=m)}})(),()=>{e=!0}},[c,m,p,h]);let g=async t=>{if(t.preventDefault(),l(""),!e.trim())return void l("请输入邮箱地址");try{let t=await (0,n.apiFetch)("/api/auth/apikey",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.trim()})}),r=await t.json();t.ok?p(r.username,r.apiKey):l(r.error||"登录失败,请重试")}catch(e){console.error(e),l("网络错误,请检查连接")}};return c?(0,t.jsx)("div",{className:"login-container",children:(0,t.jsx)("div",{className:"login-box",children:(0,t.jsx)("p",{style:{color:"#94a3b8",textAlign:"center"},children:"正在跳转到企业登录页..."})})}):(0,t.jsx)("div",{className:"login-container",children:(0,t.jsxs)("div",{className:"login-box",children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"1.5rem",marginBottom:"2.5rem"},children:[(0,t.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,t.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,t.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,t.jsx)("span",{style:{fontSize:"1rem",color:"#94a3b8",letterSpacing:"0.1em",textTransform:"uppercase",marginTop:"0.25rem"},children:"智能体技能评估、分析与优化"})]})]}),(0,t.jsxs)("form",{className:"login-form",children:[(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsx)("label",{className:"login-label",htmlFor:"username",children:"邮箱地址"}),(0,t.jsx)("input",{className:"login-input",id:"username",type:"email",placeholder:"your.email@example.com",value:e,onChange:e=>{o(e.target.value),l("")},style:s?{borderColor:"#ef4444"}:{}}),s&&(0,t.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:["⚠️ ",s]})]}),(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:(0,t.jsx)("button",{className:"login-btn",type:"button",onClick:g,children:"Sign In"})})]})]})})}e.s(["default",()=>o])}]);
|