agent-insight 0.2.0-beta → 0.2.2-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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/(main)/accessconfig/install/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/dataset/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/eval/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/eval/run/[runId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/eval/trajectory/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/eval/trajectory/[taskId]/trace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/eval/trajectory/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/fault/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/metrics/evaluators/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/metrics/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/modelconfig/registry/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/modelconfig/web-search/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/quality/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-eval/grayscale/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-eval/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-generator/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-opt/[name]/[version]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-opt/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/trace/page_client-reference-manifest.js +1 -1
- 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.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig/channels/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig/channels.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig/health/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig/health.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig/install/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig/install.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig/webhooks/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig/webhooks.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p/accessconfig/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.html +1 -1
- package/.next/standalone/.next/server/app/agents.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/agent/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/batch-tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/execute/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/grayscale-tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/terminate-all/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/results/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/run/route.js +6 -6
- package/.next/standalone/.next/server/app/api/eval/trajectory/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/runs/route.js +1 -1
- package/.next/standalone/.next/server/app/api/fault/diagnosis/stream/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/agent-debug/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/attachments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/user-evaluators/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/dashboard.html +1 -1
- package/.next/standalone/.next/server/app/dashboard.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p/dashboard/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.html +1 -1
- package/.next/standalone/.next/server/app/dataset.rsc +2 -2
- package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p/dataset/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p/dataset.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dataset.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.html +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.rsc +2 -2
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval/trajectory/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval/trajectory.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.html +1 -1
- package/.next/standalone/.next/server/app/eval.rsc +2 -2
- package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p/eval/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p/eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.html +1 -1
- package/.next/standalone/.next/server/app/fault.rsc +2 -2
- package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p/fault/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p/fault.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/fault.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.html +1 -1
- package/.next/standalone/.next/server/app/memory.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p/memory/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p/memory.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.html +1 -1
- package/.next/standalone/.next/server/app/metrics.rsc +2 -2
- package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p/metrics/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p/metrics.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/metrics.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig/registry/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig/registry.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig/web-search/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig/web-search.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p/modelconfig/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.html +1 -1
- package/.next/standalone/.next/server/app/optapi.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p/optapi/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p/optapi.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.html +1 -1
- package/.next/standalone/.next/server/app/quality.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p/quality/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p/quality.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.html +1 -1
- package/.next/standalone/.next/server/app/security.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/!KG1haW4p/security/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/!KG1haW4p/security.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.html +1 -1
- package/.next/standalone/.next/server/app/skill-detail.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/skill-detail/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/skill-detail.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.html +2 -2
- package/.next/standalone/.next/server/app/skill-eval/grayscale.rsc +3 -3
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval/grayscale/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval/grayscale.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.html +1 -1
- package/.next/standalone/.next/server/app/skill-eval.rsc +4 -4
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/skill-eval.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.html +1 -1
- package/.next/standalone/.next/server/app/skill-generator.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p/skill-generator/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p/skill-generator.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-generator.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.html +1 -1
- package/.next/standalone/.next/server/app/skill-history.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.html +1 -1
- package/.next/standalone/.next/server/app/skill-opt.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p/skill-opt/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p/skill-opt.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-opt.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.html +1 -1
- package/.next/standalone/.next/server/app/skill-release.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p/skill-release/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p/skill-release.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.html +1 -1
- package/.next/standalone/.next/server/app/skills.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.html +1 -1
- package/.next/standalone/.next/server/app/trace.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p/trace/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p/trace.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__29b88539._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__571e2dc5._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aeca73e7._.js +1 -1
- package/.next/standalone/.next/server/chunks/_5041b697._.js +1 -1
- package/.next/standalone/.next/server/chunks/_73cb0d03._.js +7 -7
- package/.next/standalone/.next/server/chunks/_7ecc72d5._.js +1 -1
- package/.next/standalone/.next/server/chunks/_b2cfd29b._.js +1 -1
- package/.next/standalone/.next/server/chunks/_d36858e9._.js +3 -3
- package/.next/standalone/.next/server/chunks/src_lib_69eb724e._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_2e8ebb20._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_8e76c6f5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_da30fab4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_ddf088e7._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_243b92c2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_(main)_eval_trajectory_page_tsx_052751f5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_(main)_skill-eval_page_tsx_d6828614._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_f0e17888._.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/static/chunks/046dc786e7e13cc4.js +1 -0
- package/.next/standalone/.next/static/chunks/4812c235bebb18ff.js +1 -0
- package/.next/standalone/.next/static/chunks/49bb7f20fbab9dac.js +1 -0
- package/.next/standalone/.next/static/chunks/{150c66f334898c1b.js → 6f9e84819ba4f450.js} +1 -1
- package/.next/{static/chunks/9ce93159d07d77fc.js → standalone/.next/static/chunks/781813e2aa38a20f.js} +1 -1
- package/.next/{static/chunks/d12348f4045911d6.js → standalone/.next/static/chunks/84b0f0dc8be9bc7e.js} +1 -1
- package/.next/standalone/.next/static/chunks/8871e04c4e1fd6c4.js +1 -0
- package/.next/standalone/.next/static/chunks/e33bd5306b9b9d64.js +1 -0
- package/.next/standalone/package.json +1 -3
- package/.next/standalone/scripts/install.js +11 -0
- package/.next/standalone/scripts/postinstall.js +20 -6
- package/.next/standalone/scripts/start.js +8 -0
- package/.next/static/chunks/046dc786e7e13cc4.js +1 -0
- package/.next/static/chunks/4812c235bebb18ff.js +1 -0
- package/.next/static/chunks/49bb7f20fbab9dac.js +1 -0
- package/.next/static/chunks/{150c66f334898c1b.js → 6f9e84819ba4f450.js} +1 -1
- package/.next/{standalone/.next/static/chunks/9ce93159d07d77fc.js → static/chunks/781813e2aa38a20f.js} +1 -1
- package/.next/{standalone/.next/static/chunks/d12348f4045911d6.js → static/chunks/84b0f0dc8be9bc7e.js} +1 -1
- package/.next/static/chunks/8871e04c4e1fd6c4.js +1 -0
- package/.next/static/chunks/e33bd5306b9b9d64.js +1 -0
- package/package.json +1 -3
- package/scripts/install.js +11 -0
- package/scripts/postinstall.js +20 -6
- package/scripts/start.js +8 -0
- package/.next/standalone/.next/static/chunks/63fd190c8d8ebf18.js +0 -1
- package/.next/standalone/.next/static/chunks/7100361dbae12246.js +0 -1
- package/.next/standalone/.next/static/chunks/a9d1c1054358afe7.js +0 -1
- package/.next/standalone/.next/static/chunks/bc8ee6907cb73517.js +0 -1
- package/.next/standalone/.next/static/chunks/d2f0f5c92132648a.js +0 -1
- package/.next/static/chunks/63fd190c8d8ebf18.js +0 -1
- package/.next/static/chunks/7100361dbae12246.js +0 -1
- package/.next/static/chunks/a9d1c1054358afe7.js +0 -1
- package/.next/static/chunks/bc8ee6907cb73517.js +0 -1
- package/.next/static/chunks/d2f0f5c92132648a.js +0 -1
- /package/.next/standalone/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_ssgManifest.js +0 -0
- /package/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_buildManifest.js +0 -0
- /package/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_ssgManifest.js +0 -0
|
@@ -365,6 +365,6 @@ ${t}
|
|
|
365
365
|
${e}
|
|
366
366
|
|
|
367
367
|
**请提取最终结果:**
|
|
368
|
-
`}e.s(["EXTRACTION_PROMPT",0,t,"generateExtractionPrompt",()=>A])},191878,e=>e.a(async(t,A)=>{try{var r=e.i(522734);e.i(210954);var s=e.i(184599),n=e.i(814747),i=e.i(256451),o=e.i(401682);e.i(419961),e.i(598905);var a=t([o]);[o]=a.then?(await a)():a;let u=n.default.join(process.cwd(),"data","model_debug.jsonl"),E={temperature:0,top_p:1,seed:42};function l(e,t,A){try{let s=n.default.dirname(u);r.default.existsSync(s)||r.default.mkdirSync(s,{recursive:!0});let i={timestamp:new Date().toISOString(),stage:e,input:t,output:A};r.default.appendFileSync(u,JSON.stringify(i)+"\n")}catch(e){console.error("Log error",e)}}async function g(e){let t=await (0,o.getActiveConfig)(e);if(!t)return{client:null,model:null};let A=t.apiKey||"no-api-key-required",r=t.baseUrl||"https://api.deepseek.com",{customFetch:n}=(0,i.getProxyConfig)();return{client:new s.OpenAI({apiKey:A,baseURL:r,fetch:n}),model:t.model||"deepseek-chat"}}async function h(e,t){let A,r=(A=Number(process.env.JUDGMENT_TIMEOUT_MS||3e5),!Number.isFinite(A)||A<=0?3e5:A),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await e({signal:s.signal,timeout:r})}catch(e){if(s.signal.aborted)throw Error(`${t} timeout after ${r}ms`);throw e}finally{clearTimeout(n)}}async function c(t,A,r,s,n){let{client:i,model:o}=await g(s);if(!i||!i.apiKey)return console.warn("LLM Evaluation disabled or missing config. Skipping."),{is_correct:!1,score:0,reason:"请在首页左上角的设置中配置 LLM"};try{let s=A.root_causes||[],a=A.key_actions||[],g=s.map((e,t)=>({id:`RC-${t}`,...e})),c=a.map((e,t)=>({id:`KA-${t}`,...e})),{generateJudgePrompt:u}=e.r(610234),Q=[];if(g.length>0){let e=u(t,r,g,[],A.skill_definition,"root_causes"),s=await h(t=>i.chat.completions.create({messages:[{role:"user",content:e}],model:o,...E},t),"RC Judgment API");console.log(`[Judge API Debug] RC Model: ${o}. Received response choices:`,s?.choices?.length);let n=s.choices?.[0]?.message?.content;if(l("rc_evaluation",{prompt:e},{raw_output:n}),n){let e=n.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(t)e=t[1];else{let t=e.indexOf("{"),A=e.lastIndexOf("}");-1!==t&&-1!==A&&A>=t&&(e=e.substring(t,A+1))}try{let t=JSON.parse(e);Q.push(...t.evaluations||[])}catch(e){console.warn("[Judge] Failed to parse RC result:",e)}}}if(c.length>0){let e=n&&n.length>0?n.map((e,t)=>`步骤${t+1}: [${e.type}] ${e.name} - ${e.description}`).join("\n"):null,s=u(t,e||r,[],c,A.skill_definition,"key_actions",e||null),a=await h(e=>i.chat.completions.create({messages:[{role:"user",content:s}],model:o,...E},e),"KA Judgment API");console.log(`[Judge API Debug] KA Model: ${o}. Received response choices:`,a?.choices?.length);let g=a.choices?.[0]?.message?.content;if(l("ka_evaluation",{prompt:s},{raw_output:g}),g){let e=g.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(t)e=t[1];else{let t=e.indexOf("{"),A=e.lastIndexOf("}");-1!==t&&-1!==A&&A>=t&&(e=e.substring(t,A+1))}try{let t=JSON.parse(e);Q.push(...t.evaluations||[])}catch(e){console.warn("[Judge] Failed to parse KA result:",e)}}}let I=0,d=0,B=[];g.forEach(e=>{let t=Q.find(t=>t.id===e.id),A=t?Math.max(0,Math.min(1,Number(t.match_score))):0,r=t?.explanation||"未找到评分结果";I+=A*e.weight,d+=e.weight,B.push(`1. **Root Cause** [${e.content.replace(/\n/g," ")}]: ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight})`)});let C=new Map,f=[];for(let e of c){let t=e.groupId,A=e.controlFlowType||"required";"conditional"===A&&t?(C.has(t)||C.set(t,[]),C.get(t).push(e)):f.push(e)}for(let[e,t]of C){let e=t.map(e=>{let t=Q.find(t=>t.id===e.id),A=t?Math.max(0,Math.min(1,Number(t.match_score))):0,r=t?.explanation||"未找到评分结果";return{ka:e,ev:t,match:A,explanation:r}}),A=e.find(e=>e.match>0||!e.explanation.includes("此分支未触发"));if(A){let{ka:t,ev:r,match:s,explanation:n}=A,i=t.branchLabel||"";for(let r of(I+=s*t.weight,d+=t.weight,B.push(`2. **Key Action** [${t.content.replace(/\n/g," ")}] (条件分支${i?" - "+i:""}): ${(100*s).toFixed(0)}% match. ${n} (Weight: ${t.weight})`),e))r.ka.id!==A.ka.id&&B.push(`2. **Key Action** [${r.ka.content.replace(/\n/g," ")}] (条件分支${r.ka.branchLabel?" - "+r.ka.branchLabel:""}): ${(100*r.match).toFixed(0)}% match. ${r.explanation} (该分支未触发,不计入总分)`)}else{let{ka:t,ev:A,match:r,explanation:s}=e[0],n=t.branchLabel||"";I+=0*t.weight,d+=t.weight,B.push(`2. **Key Action** [${t.content.replace(/\n/g," ")}] (条件分支${n?" - "+n:""}): ${(100*r).toFixed(0)}% match. ${s} (所有分支均未触发,Weight: ${t.weight})`);for(let t=1;t<e.length;t++){let A=e[t];B.push(`2. **Key Action** [${A.ka.content.replace(/\n/g," ")}] (条件分支${A.ka.branchLabel?" - "+A.ka.branchLabel:""}): ${(100*A.match).toFixed(0)}% match. ${A.explanation} (该分支未触发,不计入总分)`)}}}f.forEach(e=>{let t=Q.find(t=>t.id===e.id),A=t?Math.max(0,Math.min(1,Number(t.match_score))):0,r=t?.explanation||"未找到评分结果",s=e.controlFlowType||"required";if("optional"===s)return void B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (可选): ${(100*A).toFixed(0)}% match. ${r} (Weight: 0, 不扣分)`);if("handoff"===s){I+=A*e.weight,d+=e.weight,B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (衔接): ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight})`);return}if("loop"===s){let t=e.loopCondition||"",s=e.expectedMinCount,n=e.expectedMaxCount;I+=A*e.weight,d+=e.weight,B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (循环${t?" - "+t:""}): ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight}, 预期次数: ${s??"?"}~${n??"?"})`);return}I+=A*e.weight,d+=e.weight,B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}]: ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight})`)});let p=0;p=d>0?I/d:0;let y=B.map(e=>{let t=e.match(/(\d+)% match/),A=e.match(/\(Weight: ([\d\.]+)\)/);if(t&&A){let e=(parseInt(t[1])/100).toFixed(1),r=parseFloat(A[1]).toFixed(1);return`${e}*${r}`}return null}).filter(e=>e).join(" + "),m=B.map(e=>{let t=e.match(/\(Weight: ([\d\.]+)\)/);return t?parseFloat(t[1]).toFixed(1):null}).filter(e=>e).join(" + "),w=`**Calculation**: (${y}) / (${m}) = ${I.toFixed(2)} / ${d.toFixed(2)} = ${p.toFixed(2)}`;B.push("",w);let D=B.join("\n");return{is_correct:p>=.8,score:p,reason:D}}catch(e){if(console.error("LLM Judgment Error:",e),String(e?.message||"").includes("timeout"))return{is_correct:!1,score:0,reason:"Judgment API failed: timeout"};return{is_correct:!1,score:0,reason:"Judgment API failed"}}}e.s(["judgeAnswer",()=>c]),A()}catch(e){A(e)}},!1),723039,e=>{"use strict";e.i(522734),e.i(814747).default.join(process.cwd(),"custom-models.json"),e.s([])},852628,e=>{"use strict";function t(e){return"routing"===e||"outcome"===e||"combined"===e?e:"combined"}function A(e,A){let r=t(e);return"combined"===r||r===A}function r(e,A){let r=t(e);return"any"===A?"combined"===r?1:2:r===A?3:2*("combined"===r)}function s(e){return Array.isArray(e)?e.map(e=>{if("string"==typeof e){let t=e.trim();return t?{skill:t,version:null}:null}if(!e||"object"!=typeof e)return null;let t="skill"in e?e.skill:null,A="string"==typeof t?t.trim():"";if(!A)return null;let r="version"in e?e.version:null,s=null;if("number"==typeof r&&Number.isInteger(r)&&r>=0)s=r;else if("string"==typeof r&&r.trim()){let e=parseInt(r,10);s=Number.isNaN(e)||e<0?null:e}return{skill:A,version:s}}).filter(e=>!!e):[]}e.s(["configSupportsDatasetType",()=>A,"getDatasetTypePriority",()=>r,"normalizeConfigDatasetType",()=>t,"normalizeExpectedSkills",()=>s])},997078,e=>{"use strict";function t(e){return"string"!=typeof e?null:e.trim()||null}function A(e){return"string"!=typeof e?"":e.trim()}function r(e,s="Skill benchmark"){var n,i;let o;return t(e.query)||(n=e.skill,i=e.skillVersion,(o=A(n))?null!=i?`${o} (v${i})`:o:null)||s}e.s(["getConfigSubjectLabel",()=>r,"normalizeConfigQuery",()=>t,"normalizeConfigSkillName",()=>A])},583701,e=>e.a(async(t,A)=>{try{e.i(210954),e.i(256451);var r=e.i(401682),s=t([r]);function n(e){return e.trim().toLowerCase().replace(/[`"'“”‘’]/g,"").replace(/[.,,。!?!?;;::、·…()[\]{}<>]/g," ").replace(/\s+/g," ").trim().replace(/\s/g,"")}function i(e,t){let A=n(e),r=n(t.intent),s=t.anchors.filter(e=>{let t=n(e);return!!t&&A.includes(t)});return{intentMatched:!!(A&&r&&(A===r||A.includes(r)||r.includes(A))),matchedAnchors:s,anchorCoverage:t.anchors.length>0?s.length/t.anchors.length:0}}[r]=s.then?(await s)():s,e.s(["matchQueryToStoredRoutingSignature",()=>i]),A()}catch(e){A(e)}},!1),864778,e=>{"use strict";function t(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let A=Date.parse(t);return Number.isFinite(A)?A:null}return null}function A(e){let A=0,r=0,s="",n="",i="",o=0,a=0,l=0,g=0,h=0,c=0,u=0,E=0,Q=0,I=Number.MAX_SAFE_INTEGER,d=0;for(let r of e||[]){if(!r)continue;let e=r.role,B="assistant"===e||"subagent"===e;if("assistant"===e){let e="string"==typeof r.content?r.content:"";e&&e.trim()&&(n=e),"string"==typeof r.model&&r.model?s=r.model:"string"==typeof r.modelID&&r.modelID&&(s=r.modelID)}r.agent&&"string"==typeof r.agent&&!i&&(i=r.agent);let C=t(r.timeInfo?.created),f=t(r.timeInfo?.completed),p=t(r.timestamp);if(C&&(I=Math.min(I,C),d=Math.max(d,C)),f&&(d=Math.max(d,f)),p&&(I=Math.min(I,p),d=Math.max(d,p)),!B)continue;c++;let y=r.usage;if(y){let e=function(e){let t=Number(e?.input_tokens??e?.input??0)||0,A=Number(e?.output_tokens??e?.output??0)||0,r=Number(e?.cache?.read??e?.cache_read_input_tokens??0)||0,s=Number(e?.cache?.write??e?.cache_creation_input_tokens??0)||0,n=Number(e?.reasoning??e?.reasoning_tokens??e?.completion_tokens_details?.reasoning_tokens??0)||0,i=e?.reasoning!==void 0&&n>0&&A<n?A+n:A;return{total:e?.total!==void 0?Number(e.total)||0:t+i+r+s,input:t,output:i,cacheRead:r,cacheWrite:s,reasoning:n,maxSingleCallTokens:t+i+r+s}}(y);A+=e.total,o+=e.input,a+=e.output,l+=e.cacheRead,g+=e.cacheWrite,h+=e.reasoning,e.maxSingleCallTokens>Q&&(Q=e.maxSingleCallTokens)}if(Array.isArray(r.tool_calls))for(let e of(u+=r.tool_calls.length,r.tool_calls))(e?.state==="error"||e?.state==="failed")&&E++}return I!==Number.MAX_SAFE_INTEGER&&d>I&&(r=d-I),{model:s||void 0,agentName:i||void 0,final_result:n||void 0,tokens:Math.round(A),latency:r/1e3,input_tokens:Math.round(o),output_tokens:Math.round(a),tool_call_count:u,tool_call_error_count:E,llm_call_count:c,cache_read_input_tokens:Math.round(l),cache_creation_input_tokens:Math.round(g),max_single_call_tokens:Math.round(Q),reasoning_tokens:Math.round(h)}}e.s(["deriveOpencodeExecutionFields",()=>A])},656709,e=>{"use strict";e.s([])},475670,e=>{"use strict";function t(e){return"string"==typeof e?e.trim():""}function A(e,A){let r=[],s=new Set,n=t(A),i=(e,A)=>{let n=t(e);if(!n)return;let i=`${A}:${n}`;s.has(i)||(s.add(i),r.push({name:n,agentType:A}))};for(let A of(n&&i(n,"main"),e||[])){if(!A||"object"!=typeof A)continue;let e=t(A.role).toLowerCase(),r=t(A.subagent_name),s=t(A.agent);if(r){i(r,"subagent");continue}("subagent"===e||"opencode"===e)&&s&&s!==n?i(s,"subagent"):!n&&s&&i(s,"main")}return r}function r(e){return A(e).map(e=>e.name)}e.i(656709),e.s(["extractObservedAgentNames",()=>r,"extractObservedAgentRegistrations",()=>A])},39759,e=>{"use strict";function t(e){let t="string"==typeof e.incomingLabel?e.incomingLabel.trim():void 0;if(void 0!==t){if(!t)return;return t}let A="string"==typeof e.existingLabel?e.existingLabel.trim():"",r="string"==typeof e.skill?e.skill.trim():"",s=e.skillVersion??null;if(A&&!(A&&"without-skill"===A))return A;if(r){let e="number"==typeof s&&Number.isFinite(s)?s:0;return`${r}-v${e}`}return"without-skill"}e.s(["chooseExecutionLabel",()=>t])},799880,e=>{"use strict";function t(e){let t="string"==typeof e?e.trim():"";if(!t||"without-skill"===t)return null;let A=t.match(/^(.+)-v(\d+)$/);if(!A)return null;let r=(A[1]||"").trim(),s=Number(A[2]);return r&&Number.isFinite(s)&&!(s<0)?{skill:r,skill_version:s,skills:[r],invokedSkills:[{name:r,version:s}]}:null}e.s(["parseLabelSkillVersionBinding",()=>t])},925658,e=>{"use strict";e.s([])},761620,e=>e.a(async(t,A)=>{try{e.i(210954),e.i(256451);var r=e.i(401682),s=e.i(309418);e.i(925658),e.i(308229),e.i(522734);var n=e.i(814747),i=t([r,s]);function o(e){let t=[],A=new Map;if(e.conditionalGroups)for(let t of e.conditionalGroups)for(let e of t.branches)for(let r of e.stepIds)A.set(r,{type:"conditional",group:t});if(e.loopGroups)for(let t of e.loopGroups)for(let e of t.bodyStepIds)A.set(e,{type:"loop",group:t});let r=new Set(e.steps.map(e=>e.id));if(e.conditionalGroups)for(let t of e.conditionalGroups)for(let e of t.branches)for(let s of e.stepIds)r.has(s)||(console.warn(`[FlowParse] ConditionalGroup ${t.id} references invalid stepId ${s}, degrading to required`),A.delete(s));if(e.loopGroups)for(let t of e.loopGroups)for(let e of t.bodyStepIds)r.has(e)||(console.warn(`[FlowParse] LoopGroup ${t.id} references invalid stepId ${e}, degrading to required`),A.delete(e));let s=new Map;if(e.conditionalGroups)for(let t of e.conditionalGroups)s.set(t.id,t.branches.length);for(let r of e.steps){let e=A.get(r.id);if(r.isOptional&&!e){t.push({id:r.id,content:r.name,weight:0,controlFlowType:"optional"});continue}if(e?.type==="conditional"){let A=e.group,n=A.branches.find(e=>e.stepIds.includes(r.id)),i=s.get(A.id)||1;t.push({id:r.id,content:r.name,weight:1/i,controlFlowType:"conditional",condition:A.condition,branchLabel:n?.label,groupId:A.id});continue}if(e?.type==="loop"){let A=e.group;t.push({id:r.id,content:r.name,weight:1,controlFlowType:"loop",loopCondition:A.loopCondition,expectedMinCount:A.expectedMinCount,expectedMaxCount:A.expectedMaxCount,groupId:A.id});continue}if(r.isOptional){t.push({id:r.id,content:r.name,weight:0,controlFlowType:"optional"});continue}t.push({id:r.id,content:r.name,weight:1,controlFlowType:"required"})}return t}function a(e){let t=[];for(let A=0;A<e.length;A++){let{name:r,actions:s}=e[A];for(let e of s)t.push({...e,id:`${r}-${e.id}`,skillSource:r});if(A<e.length-1){let s=e[A+1].name;t.push({id:`handoff-${r}-to-${s}`,content:`从 ${r} 输出衔接至 ${s} 输入`,weight:1,controlFlowType:"handoff",skillSource:`${r}->${s}`})}}return t}[r,s]=i.then?(await i)():i,n.default.join(process.cwd(),"data","flow_debug.jsonl"),e.s(["extractKeyActionsFromFlow",()=>o,"mergeKeyActionsFromMultipleSkills",()=>a]),A()}catch(e){A(e)}},!1),6325,e=>{"use strict";function t(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let A=Date.parse(t);return Number.isFinite(A)?A:null}return null}function A(e){let A=e.id??e.message_id??e.messageID;if("string"==typeof A&&A.trim())return`id:${A.trim()}`;let r="string"==typeof e.role?e.role:"unknown",s=t(e.timestamp)??t(e.timeInfo?.created)??t(e.timeInfo?.completed)??0,n="string"==typeof e.subagent_session_id?e.subagent_session_id:"";return`k:${n}:${s}:${r}`}function r(e,r){let s=Array.isArray(e)?e:[],n=Array.isArray(r)?r:[],i=new Map,o=new Map,a=0;for(let e of s){if(!e)continue;let t=A(e);i.has(t)||(i.set(t,e),o.set(t,a++))}for(let e of n){if(!e)continue;let t=A(e),r=i.get(t);r?i.set(t,function(e,t){let A={...e,...t},r="string"==typeof e.content?e.content:"",s="string"==typeof t.content?t.content:"";return r&&!s?A.content=r:r&&s&&s.length<r.length&&(A.content=r),e.subagent_name&&!t.subagent_name&&(A.subagent_name=e.subagent_name),e.agent&&!t.agent&&(A.agent=e.agent),e.subagent_session_id&&!t.subagent_session_id&&(A.subagent_session_id=e.subagent_session_id),A.tool_calls=function(e,t){let A=Array.isArray(e)?e:[],r=Array.isArray(t)?t:[];if(0===A.length)return r;if(0===r.length)return A;let s=new Set,n=[];for(let e of[...A,...r]){let t=function(e){let t=e?.id??e?.callID??e?.callId??e?.call_id;if("string"==typeof t&&t.trim())return`id:${t.trim()}`;let A=e?.function?.name??e?.name??"",r=e?.function?.arguments??e?.arguments??"";return`sig:${A}:${function(e){let t=5381;for(let A=0;A<e.length;A++)t=(t<<5)+t^e.charCodeAt(A);return(t>>>0).toString(16)}(function(e){if(null==e)return"";if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(r))}`}(e);s.has(t)||(s.add(t),n.push(e))}return n}(e.tool_calls,t.tool_calls),e.usage&&!t.usage&&(A.usage=e.usage),e.timeInfo&&!t.timeInfo&&(A.timeInfo=e.timeInfo),A}(r,e)):(i.set(t,e),o.set(t,a++))}let l=Array.from(i.entries()).map(([e,A])=>({k:e,v:A,ts:t(A.timestamp)??t(A.timeInfo?.created)??t(A.timeInfo?.completed)??0,order:o.get(e)??0}));return l.sort((e,t)=>e.ts-t.ts||e.order-t.order),l.map(e=>e.v)}e.s(["mergeSessionInteractionsMonotonic",()=>r])},418918,e=>{"use strict";var t=e.i(308033),A=e.i(598905);let r={descriptor:{id:"claude",aliases:["claudecode"],label:"Claude Code",onboard:"watcher",platform:"claude"},normalizeForStorage:t.normalizeClaudeCodeInteractionsForStorage,extractSkills:A.extractSkillsWithVersionsFromClaudeSession},s={descriptor:{id:"openclaw",label:"OpenClaw",onboard:"plugin",platform:"openclaw"},extractSkills:A.extractSkillsWithVersionsFromOpenClawSession},n={descriptor:{id:"opencode",label:"OpenCode",onboard:"plugin",platform:"opencode"},extractSkills:A.extractSkillsWithVersionsFromOpencodeSession},i={descriptor:{id:"unknown",label:"Unknown",onboard:"env"}},o=new Map;for(let e of[n,r,s,{descriptor:{id:"hermes",label:"Hermes",onboard:"env",platform:"hermes"}}])for(let t of(o.set(e.descriptor.id.toLowerCase(),e),e.descriptor.aliases??[]))o.set(t.toLowerCase(),e);function a(e){return o.get(String(e??"").trim().toLowerCase())??i}e.s(["getAdapter",()=>a],418918)},904239,e=>e.a(async(t,A)=>{try{var r=e.i(522734),s=e.i(814747),n=e.i(191878),i=e.i(309418);e.i(723039);var o=e.i(852628),a=e.i(997078),l=e.i(583701),g=e.i(864778),h=e.i(475670),c=e.i(39759),u=e.i(799880),E=e.i(761620),Q=e.i(6325),I=e.i(308229);e.i(656709);var d=e.i(418918),B=e.i(598905),C=t([n,i,l,E]);[n,i,l,E]=C.then?(await C)():C;let _=!process.env.DB_HOST,L=/^[a-zA-Z0-9_\-\.]+$/;function f(e){let t=new Set,A=[];for(let r of e.events||[]){if("skill"!==r.kind)continue;let e=r.args&&"object"==typeof r.args?r.args:{},s=e.name??e.skill_name??e.skillName??e.skill;if(null==s||!String(s).trim())continue;let n=String(s).trim().replace(/^['"]+|['"]+$/g,"");if(!L.test(n)||t.has(n))continue;t.add(n);let i=null!=e.version?Number(e.version):null;A.push({name:n,version:null===i||isNaN(i)?null:i})}return A}async function p(e,t){let A=Array.from(new Set(e.filter(e=>null==e.version).map(e=>e.name))),r=new Map;if(A.length>0)try{for(let e of(await i.prisma.skill.findMany({where:{name:{in:A},...t?{OR:[{user:t},{user:null}]}:{}},select:{name:!0,activeVersion:!0}})))"number"==typeof e.activeVersion&&r.set(e.name,e.activeVersion)}catch(e){console.warn("[Data-Service] snapshotSkillVersions lookup failed:",e)}return e.map(e=>null!=e.version?e:{name:e.name,version:r.get(e.name)??null})}async function y(e,t,A={}){if(_&&e)try{if(await i.prismaRaw.executionSkill.deleteMany({where:{executionId:e}}),!t.length)return;let r=new Set,s=[];for(let n of t){if(!n?.name)continue;let t=`${n.name}@@${n.version??""}`;r.has(t)||(r.add(t),s.push({executionId:e,skillName:n.name,skillVersion:n.version??null,isPrimary:null!=A.primaryName&&n.name===A.primaryName,user:A.user??null}))}s.length&&await i.prismaRaw.executionSkill.createMany({data:s})}catch(t){console.warn(`[Data-Service] persistExecutionSkills failed for ${e}:`,t)}}[...(process.env.TRACE_SERVICE_OWNERS||"admin,anonymous").split(",").map(e=>e.trim()).filter(Boolean)];let v="未找到匹配的效果评测配置";async function m(e,t,A){let r=(0,a.normalizeConfigQuery)(t);if(!r)return;let s=e.filter(e=>(0,o.configSupportsDatasetType)(e.dataset_type,"routing")),n=[];for(let e of s){let t=function(e){let t=Array.isArray(e.routing_anchors)?e.routing_anchors.filter(e=>"string"==typeof e&&e.trim()):[];return e.routing_intent?.trim()&&t.length>0?{intent:e.routing_intent.trim(),anchors:t}:null}(e);if(!t)continue;let A=(0,l.matchQueryToStoredRoutingSignature)(r,t);(0!==A.matchedAnchors.length||A.intentMatched)&&n.push({config:e,signature:t,matchedAnchors:A.matchedAnchors,anchorCoverage:A.anchorCoverage,intentMatched:A.intentMatched})}if(0===n.length)return;n.sort((e,t)=>{if(t.matchedAnchors.length!==e.matchedAnchors.length)return t.matchedAnchors.length-e.matchedAnchors.length;if(t.anchorCoverage!==e.anchorCoverage)return t.anchorCoverage-e.anchorCoverage;if(Number(t.intentMatched)!==Number(e.intentMatched))return Number(t.intentMatched)-Number(e.intentMatched);let A=(0,o.getDatasetTypePriority)(e.config.dataset_type,"routing"),r=(0,o.getDatasetTypePriority)(t.config.dataset_type,"routing");if(r!==A)return r-A;let s=e.signature.anchors.join("").length;return t.signature.anchors.join("").length-s});let i=n[0];return i.config.routing_intent=i.signature.intent,i.config.routing_anchors=i.signature.anchors,i.config}function w(e,t){let A=function(e){let t=(0,a.normalizeConfigSkillName)(e.skill);if(t)return{skill:t,version:e.skill_version??null};let A=S(e),r=Array.from(new Map(A.filter(e=>e.name?.trim()).map(e=>[`${e.name.trim()}::${e.version??"any"}`,e])).values());if(1===r.length)return{skill:r[0].name.trim(),version:r[0].version??null}}(t);if(!A)return;let r=(0,a.normalizeConfigQuery)(t.query),s=e.filter(e=>(0,o.configSupportsDatasetType)(e.dataset_type,"outcome")).filter(e=>(0,a.normalizeConfigSkillName)(e.skill)===A.skill).filter(e=>{let t=e.skillVersion??null;return null===t||t===A.version}).filter(e=>{let t=(0,a.normalizeConfigQuery)(e.query);return!t||t===r});if(0!==s.length)return s.reduce((e,t)=>{let s=(e.skillVersion??null)!==null&&e.skillVersion===A.version,n=(t.skillVersion??null)!==null&&t.skillVersion===A.version;if(s!==n)return n?t:e;let i=(0,a.normalizeConfigQuery)(e.query)===r,l=(0,a.normalizeConfigQuery)(t.query)===r;if(i!==l)return l?t:e;let g=!(0,a.normalizeConfigQuery)(e.query),h=!(0,a.normalizeConfigQuery)(t.query);if(g!==h)return h?t:e;let c=(0,o.getDatasetTypePriority)(e.dataset_type,"outcome");return(0,o.getDatasetTypePriority)(t.dataset_type,"outcome")>c?t:e})}function D(e){if(!e)return[];let t=(0,o.normalizeExpectedSkills)(e.expectedSkills);return t.length>0?t:e.skill?.trim()?[{skill:e.skill.trim(),version:e.skillVersion??null}]:[]}function S(e){return Array.isArray(e.invokedSkills)&&e.invokedSkills.length>0?e.invokedSkills.filter(e=>e?.name?.trim()).map(e=>({name:e.name.trim(),version:e.version??null})):Array.isArray(e.skills)&&e.skills.length>0?e.skills.filter(e=>"string"==typeof e&&e.trim()).map(e=>({name:e.trim(),version:null})):[]}function b(e,t,A){let r=new Map,s=(e,t)=>{let A=e?.trim();if(!A)return;let s=r.get(A)||{skill:A,expected_version:null,invoked_version:null,primary_version:null,is_expected:!1,is_invoked:!1,is_primary:!1,is_outcome_anchor:!1};r.set(A,{...s,...t,expected_version:void 0!==t.expected_version?t.expected_version:s.expected_version,invoked_version:void 0!==t.invoked_version?t.invoked_version:s.invoked_version,primary_version:void 0!==t.primary_version?t.primary_version:s.primary_version,is_expected:t.is_expected??s.is_expected,is_invoked:t.is_invoked??s.is_invoked,is_primary:t.is_primary??s.is_primary,is_outcome_anchor:t.is_outcome_anchor??s.is_outcome_anchor})};for(let A of(s(e.skill,{is_primary:!0,primary_version:e.skill_version??null}),D(t)))s(A.skill,{is_expected:!0,expected_version:A.version??null});for(let t of S(e))s(t.name,{is_invoked:!0,invoked_version:t.version??null});return A?.skill?.trim()&&s(A.skill,{is_outcome_anchor:!0}),Array.from(r.values()).sort((e,t)=>{let A=4*Number(e.is_primary)+2*Number(e.is_invoked)+Number(e.is_expected),r=4*Number(t.is_primary)+2*Number(t.is_invoked)+Number(t.is_expected);return A!==r?r-A:e.skill.localeCompare(t.skill)})}async function N(e,t){if(!e||Array.isArray(e.key_actions)&&e.key_actions.length>0)return;let A=function(e){let t=new Map,A=(e,A)=>{let r=(0,a.normalizeConfigSkillName)(e);if(!r)return;let s=A??null;t.set(`${r}::${s??"any"}`,{skill:r,version:s})};for(let t of(A(e.skill,e.skillVersion??null),(0,o.normalizeExpectedSkills)(e.expectedSkills)))A(t.skill,t.version??null);return Array.from(t.values())}(e);if(0===A.length)return;let r=[];for(let e of A){let A=await i.db.findSkill(e.skill,t||null);if(!A)continue;let s=e.version??A.activeVersion??A.versions?.[0]?.version??null;if(null==s)continue;let n=await i.db.findParsedFlow(A.id,s,t||null);if(!n?.flowJson)continue;let o=JSON.parse(n.flowJson),a=(0,E.extractKeyActionsFromFlow)(o).map(t=>({...t,skillSource:t.skillSource||e.skill}));a.length>0&&r.push({name:e.skill,actions:a})}if(0===r.length)return;let s=1===r.length?r[0].actions:(0,E.mergeKeyActionsFromMultipleSkills)(r);e.key_actions=s.map(e=>({content:e.content,weight:e.weight,..."required"!==e.controlFlowType?{controlFlowType:e.controlFlowType}:{},...e.condition?{condition:e.condition}:{},...e.branchLabel?{branchLabel:e.branchLabel}:{},...e.loopCondition?{loopCondition:e.loopCondition}:{},...void 0!==e.expectedMinCount?{expectedMinCount:e.expectedMinCount}:{},...void 0!==e.expectedMaxCount?{expectedMaxCount:e.expectedMaxCount}:{},...e.groupId?{groupId:e.groupId}:{}})),e.extractedKeyActions=s;try{await i.db.updateConfig(e.id,{keyActions:JSON.stringify(e.key_actions),extractedKeyActions:JSON.stringify(s)}),console.log(`[AutoExtract] Auto-filled key_actions for config ${e.id} from ${A.map(e=>e.skill).join(", ")}`)}catch(e){console.error("[AutoExtract] Error updating config with extracted key_actions:",e)}}async function R(e,t,A){let r=S(e),s=b(e,t);if(!t)return{status:"missing",expected_skills:[],invoked_skills:r,matched_skills:[],matched_anchors:[],expected_count:0,matched_count:0,is_correct:!1,trigger_rate:null,skill_breakdown:s.map(e=>({skill:e.skill,expected:e.is_expected,invoked:e.is_invoked,matched:!1,status:e.is_invoked?"unexpected":"not_applicable",expected_version:e.expected_version,invoked_version:e.invoked_version}))};let n=D(t),l=[],g=0,h=new Map,c=n.filter(e=>null!==e.version&&!r.some(t=>t.name===e.skill&&null!==t.version)).map(e=>e.skill);if(c.length>0)try{for(let e of(await i.db.findSkills({name:{in:c},user:A||null})))h.set(e.name,e)}catch(e){console.error("[RoutingEvaluation] Error fetching skills for version check:",e)}for(let e of n){let t=r.find(t=>t.name===e.skill);if(!t)continue;let A=!1;if(null===e.version)A=!0;else if(null!==t.version)A=t.version===e.version;else{let t=h.get(e.skill);A=(t?t.activeVersion||0:null)===e.version}A&&(g+=1,l.push({skill:e.skill,expected_version:e.version,invoked_version:t.version??null}))}let u=s.map(e=>{let t=l.some(t=>t.skill===e.skill),A="not_applicable";return e.is_expected?A=t?"matched":"missed":e.is_invoked&&(A="unexpected"),{skill:e.skill,expected:e.is_expected,invoked:e.is_invoked,matched:t,status:A,expected_version:e.expected_version,invoked_version:e.invoked_version}});return{status:"available",matched_config_id:t.id,matched_query:(0,a.normalizeConfigQuery)(t.query)||void 0,matched_intent:t.routing_intent||void 0,matched_anchors:t.routing_anchors||[],dataset_type:(0,o.normalizeConfigDatasetType)(t.dataset_type),expected_skills:n,invoked_skills:r,matched_skills:l,expected_count:n.length,matched_count:g,is_correct:g>0,trigger_rate:n.length>0?g/n.length:null,skill_breakdown:u}}async function k(e,t,A){let r=e.query?await m(t,e.query,A??e.user??null):void 0,s=w(t,e),n=await R(e,r,A??e.user??null),l=e.task_id||e.upload_id||"",g=null;if(l)try{let e=await i.db.findExecutionMatch(l);e&&(g={matchJson:e.matchJson??null,matchedAt:e.matchedAt??null,mode:e.mode??null})}catch{g=null}return{...e,routing_evaluation:n,outcome_evaluation:function(e,t,A,r){let s=b(e,A,t),n=(e,t)=>s.map(A=>{let s="context_only";A.is_primary?s="primary":A.is_invoked?s="invoked":A.is_expected&&(s="expected_only");let n=r?.status==="available"?r.skill_breakdown.find(e=>e.skill===A.skill)?.status||"not_applicable":"missing_dataset";return{skill:A.skill,version:A.invoked_version??A.primary_version??A.expected_version??null,role:s,is_primary:A.is_primary,is_invoked:A.is_invoked,is_expected:A.is_expected,routing_status:n,shares_execution_outcome:!0,score:e,is_correct:t}});if(!t)return{status:"missing",is_correct:null,score:null,reason:e.judgment_reason||v,standard_answer_present:!1,root_cause_count:0,key_action_count:0,skill_breakdown:n(null,null)};let i="结果评估中..."===e.judgment_reason?"pending":"available",l="pending"===i?null:e.answer_score??null,g="pending"===i?null:e.is_answer_correct??null;return{status:i,matched_config_id:t.id,matched_query:(0,a.normalizeConfigQuery)(t.query)||void 0,matched_skill:(0,a.normalizeConfigSkillName)(t.skill)||void 0,matched_skill_version:t.skillVersion??null,dataset_type:(0,o.normalizeConfigDatasetType)(t.dataset_type),is_correct:g,score:l,reason:e.judgment_reason||void 0,standard_answer_present:!!t.standard_answer,root_cause_count:t.root_causes?.length??0,key_action_count:t.key_actions?.length??0,skill_breakdown:n(l,g)}}(e,s,r,n),execution_match:g}}let x=s.default.join(process.cwd(),"data"),Y=s.default.join(x,"evaluation_result.json"),H="1"===process.env.AUDIT_DATA_MUTATIONS||"true"===process.env.AUDIT_DATA_MUTATIONS;async function F(e,t="any"){let A={};e&&(A.OR=[{user:e},{user:null}]);let r=(await i.db.findConfigs(A)).map(e=>{let t=(t,A)=>{if(t)try{return JSON.parse(t)}catch(t){console.error(`[readConfig] Failed to parse ${A} for config ${e.id}:`,t);return}};return{id:e.id,query:e.query??null,dataset_type:(0,o.normalizeConfigDatasetType)(e.datasetType),skill:e.skill,skillVersion:e.skillVersion,routing_intent:e.routingIntent||void 0,routing_anchors:t(e.routingAnchors,"routingAnchors"),expectedSkills:(0,o.normalizeExpectedSkills)(t(e.expectedSkills,"expectedSkills")),standard_answer:e.standardAnswer||"",root_causes:t(e.rootCauses,"rootCauses"),key_actions:t(e.keyActions,"keyActions"),extractedKeyActions:t(e.extractedKeyActions,"extractedKeyActions"),parse_status:e.parseStatus||"completed"}});return"any"===t?r:r.filter(e=>(0,o.configSupportsDatasetType)(e.dataset_type,t))}async function U(e){let t,A=e.upload_id||e.task_id||crypto.randomUUID();if(e.task_id)try{let t={taskId:e.task_id};e.framework&&(t.framework=e.framework);let r=await i.db.findExecutions(t,{timestamp:"desc"});if(r&&r.length>0&&r[0]?.id){let t=r.find(t=>t.id===e.task_id),s=t&&t.id?t.id:r[0].id;s!==A&&(A=s)}}catch{}let s=null,o=await i.db.findExecutionById(A);o&&(s={...o,upload_id:o.id,task_id:o.taskId||void 0,query:o.query||void 0,framework:o.framework||void 0,tokens:o.tokens??void 0,cost:o.cost??void 0,latency:o.latency??void 0,timestamp:o.timestamp?.toISOString?.()||o.timestamp,final_result:o.finalResult||void 0,skill:o.skill||void 0,skills:o.skills?JSON.parse(o.skills):void 0,invokedSkills:o.invokedSkills?(()=>{try{return JSON.parse(o.invokedSkills)}catch{return}})():void 0,is_skill_correct:o.isSkillCorrect??!1,is_answer_correct:o.isAnswerCorrect??null,answer_score:o.answerScore??void 0,skill_score:o.skillScore??void 0,judgment_reason:o.judgmentReason||void 0,failures:o.failures?JSON.parse(o.failures):void 0,skill_issues:o.skillIssues?JSON.parse(o.skillIssues):void 0,label:o.label||void 0,user:o.user||void 0,skill_version:o.skillVersion??void 0,expected_skill_version:o.expectedSkillVersion??null,skill_trigger_rate:o.skillTriggerRate??null,model:o.model||void 0,tool_call_count:o.toolCallCount??void 0,llm_call_count:o.llmCallCount??void 0,input_tokens:o.inputTokens??void 0,output_tokens:o.outputTokens??void 0,tool_call_error_count:o.toolCallErrorCount??void 0,cache_read_input_tokens:o.cacheReadInputTokens??void 0,cache_creation_input_tokens:o.cacheCreationInputTokens??void 0,max_single_call_tokens:o.maxSingleCallTokens??void 0});let l=s?{...s}:{},E=!!s;E||l.timestamp||e.timestamp?e.timestamp&&(l.timestamp=e.timestamp):l.timestamp=new Date().toISOString();let C=!!e.force_query_update,S="string"==typeof s?.query?s.query.trim():"",b="string"==typeof e.query?e.query.trim():"",R=!1;if("string"==typeof e.label){let t=(0,u.parseLabelSkillVersionBinding)(e.label);t&&(e.skill=t.skill,e.skill_version=t.skill_version,e.skills=t.skills,e.invokedSkills=t.invokedSkills,R=!0)}l={...l,...e};let U=function(e){let{isUpdate:t,existingSkillVersion:A,incomingSkillVersion:r,explicitRewrite:s}=e;return!t||null==A||s?{resolved:r,blocked:!1}:r===A?{resolved:A,blocked:!1}:{resolved:A,blocked:!0}}({isUpdate:E,existingSkillVersion:s?.skill_version??null,incomingSkillVersion:l.skill_version??null,explicitRewrite:R});if(U.blocked&&console.warn(`[Data-Service] Preserving existing skill_version for execution ${A}: existing=${s?.skill_version}, incoming=${l.skill_version} blocked. Skill version is immutable history; only NULL → value or explicit label-binding rewrite is allowed.`),l.skill_version=U.resolved??void 0,!l.agentName&&l.agent&&(l.agentName=l.agent),S&&!C?l.query=S:!S&&b?l.query=b:"string"!=typeof l.query||l.query.trim()?"string"==typeof l.query&&(l.query=l.query.trim()):l.query=void 0,!l.upload_id&&l.task_id&&(l.upload_id=l.task_id),!l.task_id&&l.upload_id&&(l.task_id=l.upload_id),l.upload_id=A,(!l.label||!l.model||!l.user)&&l.task_id){let e=await i.db.findSessionByTaskId(l.task_id);e&&(!l.label&&e.label&&(l.label=e.label),!l.model&&e.model&&(l.model=e.model),!l.user&&e.user&&(l.user=e.user))}if(!l.user)try{let e=i.db.getClient();if("query"in e){let t=await e.query('SELECT username FROM "User" LIMIT 1');t.rows[0]&&(l.user=t.rows[0].username,console.log(`[Data-Service] Fallback resolved user for task ${l.task_id} to: ${l.user}`))}}catch(e){console.warn("[Data-Service] Fallback user lookup failed:",e)}let T=e.Token||e.token||e.tokens;void 0!==T&&(l.tokens=Number(T)),void 0!==e.tool_call_count&&(l.tool_call_count=Number(e.tool_call_count)),void 0!==e.llm_call_count&&(l.llm_call_count=Number(e.llm_call_count)),void 0!==e.input_tokens&&(l.input_tokens=Number(e.input_tokens)),void 0!==e.output_tokens&&(l.output_tokens=Number(e.output_tokens)),void 0!==e.tool_call_error_count&&(l.tool_call_error_count=Number(e.tool_call_error_count)),void 0!==e.cache_read_input_tokens&&(l.cache_read_input_tokens=Number(e.cache_read_input_tokens)),void 0!==e.cache_creation_input_tokens&&(l.cache_creation_input_tokens=Number(e.cache_creation_input_tokens)),void 0!==e.max_single_call_tokens&&(l.max_single_call_tokens=Number(e.max_single_call_tokens)),void 0!==e.reasoning_tokens&&(l.reasoning_tokens=Number(e.reasoning_tokens));let L=null;if(l.task_id&&l.interactions){let e=(0,d.getAdapter)(l.framework),t=t=>e.normalizeForStorage?.(t)??t,A="string"==typeof l.interactions?(()=>{try{return JSON.parse(l.interactions)}catch{return[]}})():l.interactions;L=A=t(A);try{let e=await i.db.findSessionByTaskId(l.task_id),r=e?.interactions?(()=>{try{return JSON.parse(e.interactions)}catch{return[]}})():[];r=t(r),Array.isArray(r)&&r.length>0&&(L=(0,Q.mergeSessionInteractionsMonotonic)(r,A))}catch{}if(L=t(L),l.interactions=L,"opencode"===l.framework&&Array.isArray(L)){let e=(0,g.deriveOpencodeExecutionFields)(L);e.model&&(l.model=e.model),e.final_result&&(l.final_result=e.final_result),e.agentName&&!l.agentName&&(l.agentName=e.agentName),l.tokens=e.tokens,l.latency=e.latency,l.input_tokens=e.input_tokens,l.output_tokens=e.output_tokens,l.tool_call_count=e.tool_call_count,l.tool_call_error_count=e.tool_call_error_count,l.llm_call_count=e.llm_call_count,l.cache_read_input_tokens=e.cache_read_input_tokens,l.cache_creation_input_tokens=e.cache_creation_input_tokens,l.max_single_call_tokens=e.max_single_call_tokens,l.reasoning_tokens=e.reasoning_tokens}}let x=!1,G=l.is_answer_correct||!1,O=l.judgment_reason||v;l.skill_trigger_rate=null;let V=await F(l.user);if(V.length>0){let t=await m(V,l.query,l.user),A=w(V,l);if(t){let e=Array.isArray(l.invokedSkills)?l.invokedSkills:[],A=(Array.isArray(l.skills)?l.skills:[]).map(e=>({name:e,version:null})),r=D(t);if(r.length>0){let t=e.length>0?e:A;if(t.length>0){let e=0,A=r.filter(e=>e.skill?.trim()),s=A.map(e=>e.skill.trim()),n=new Map;if(s.length>0)try{for(let e of(await i.db.findSkills({name:{in:s},user:l.user||null})))n.set(e.name,e)}catch(e){console.error("[Judgment] Error fetching skills for version check:",e)}for(let r of A){let A=r.skill.trim(),s=r.version??null,i=t.find(e=>e.name===A);if(i){let t=!1;if(null===s)t=!0;else if(null!==i.version)t=i.version===s;else{let e=n.get(A);t=!!e&&(e.activeVersion||0)===s}t&&(e++,x||(x=!0))}}A.length>0&&(l.skill_trigger_rate=e/A.length)}}l.is_skill_correct=x}if(A){if(await N(A,l.user),void 0!==l.final_result){let r=!0;if(E&&!e.force_judgment&&s&&s.query===l.query&&s.final_result===l.final_result&&(r=!1),e.skip_internal_judgment&&(r=!1),r&&!l.skip_evaluation){var J;let e,r=(l.skill||A.skill||t?.skill||"").trim();if(r)try{let t=await i.db.findSkill(r,l.user||null);if(t){let r=A.skillVersion??l.skill_version??t.activeVersion??0,s=t.versions?.find(e=>e.version===r);if(s&&s.content)e=s.content,(void 0===l.skill_version||null===l.skill_version)&&(l.skill_version=s.version);else if(t.versions&&t.versions.length>0){let A=t.versions[0];A&&A.content&&(e=A.content,(void 0===l.skill_version||null===l.skill_version)&&(l.skill_version=A.version))}}}catch(e){console.error("[Judgment] Error fetching skill definition:",e)}let s=null;try{let e=await i.db.findExecutionMatch(l.task_id||l.upload_id||"");e?.extractedSteps&&(s="string"==typeof e.extractedSteps?JSON.parse(e.extractedSteps):e.extractedSteps)}catch(e){console.warn("[Judgment] Failed to load execution steps for KA evaluation:",e)}let o=await (0,n.judgeAnswer)((J=l,(0,a.getConfigSubjectLabel)({query:J.query,skill:J.skill||A?.skill||null,skillVersion:J.skill_version??A?.skillVersion??null},"Skill execution benchmark")),{standard_answer_example:A.standard_answer,root_causes:A.root_causes,key_actions:A.key_actions,skill_definition:e},l.final_result,l.user,s);G=o.is_correct,l.answer_score=o.score,O=o.reason||"Judged by Evaluation Model"}}}else(!E||e.force_judgment)&&(G=!1,O=v,l.answer_score=null)}e.skip_evaluation&&(l.answer_score=null,G=!1,O="结果评估中..."),l.is_skill_correct=x,l.is_answer_correct=G,l.judgment_reason=O,l=await k(l,V,l.user);let P=Array.isArray(l.skills)&&l.skills.length>0?l.skills[0]:void 0;if(P){let e=function(){if(!r.default.existsSync(Y))return{};try{return JSON.parse(r.default.readFileSync(Y,"utf-8"))}catch{return{}}}()[P];e&&(l.skill_score=parseFloat(e))}if(l.label=(0,c.chooseExecutionLabel)({existingLabel:s?.label,incomingLabel:e.label,skill:l.skill,skillVersion:l.skill_version??null}),l.framework){let e=l.framework,A=l.user||null,r=(0,h.extractObservedAgentRegistrations)(L,l.agentName);try{for(let s of r){let r=await i.prisma.registeredAgent.findFirst({where:{platform:e,name:s.name,user:A}});r||(r=await i.prisma.registeredAgent.create({data:{platform:e,name:s.name,user:A,agentOwnership:"user",agentType:"main"===s.agentType?l.agentType||"main":"subagent"}})),"main"===s.agentType&&s.name===l.agentName&&(t=r.id)}}catch(e){console.error("[Data-Service] Failed to query or create RegisteredAgent:",e)}}let W=Array.isArray(L)&&L.length>0?JSON.stringify((0,h.extractObservedAgentNames)(L)):null;if(await i.db.upsertExecution({where:{id:A},create:{id:A,taskId:l.task_id,query:l.query,framework:l.framework,tokens:l.tokens,cost:l.cost,latency:l.latency,timestamp:l.timestamp?new Date(l.timestamp):new Date,finalResult:l.final_result,skill:l.skill,skills:l.skills?JSON.stringify(l.skills):null,invokedSkills:l.invokedSkills?JSON.stringify(l.invokedSkills):null,isSkillCorrect:l.is_skill_correct,isAnswerCorrect:l.is_answer_correct,answerScore:l.answer_score,skillScore:l.skill_score,judgmentReason:l.judgment_reason,failures:l.failures?JSON.stringify(l.failures):null,skillIssues:l.skill_issues?JSON.stringify(l.skill_issues):null,label:l.label,user:l.user,agentName:l.agentName,agentId:t,skillVersion:l.skill_version,model:l.model,toolCallCount:l.tool_call_count,llmCallCount:l.llm_call_count,inputTokens:l.input_tokens,outputTokens:l.output_tokens,toolCallErrorCount:l.tool_call_error_count,skillTriggerRate:l.skill_trigger_rate,cacheReadInputTokens:l.cache_read_input_tokens,cacheCreationInputTokens:l.cache_creation_input_tokens,maxSingleCallTokens:l.max_single_call_tokens,reasoningTokens:l.reasoning_tokens,observedAgents:W},update:{taskId:l.task_id,query:l.query,framework:l.framework,tokens:l.tokens,cost:l.cost,latency:l.latency,timestamp:l.timestamp?new Date(l.timestamp):new Date,finalResult:l.final_result,skill:l.skill,skills:l.skills?JSON.stringify(l.skills):null,invokedSkills:l.invokedSkills?JSON.stringify(l.invokedSkills):null,isSkillCorrect:l.is_skill_correct,isAnswerCorrect:l.is_answer_correct,answerScore:l.answer_score,skillScore:l.skill_score,judgmentReason:l.judgment_reason,failures:l.failures?JSON.stringify(l.failures):null,skillIssues:l.skill_issues?JSON.stringify(l.skill_issues):null,label:l.label,user:l.user,agentName:l.agentName,agentId:t,skillVersion:l.skill_version,model:l.model,toolCallCount:l.tool_call_count,llmCallCount:l.llm_call_count,inputTokens:l.input_tokens,outputTokens:l.output_tokens,toolCallErrorCount:l.tool_call_error_count,skillTriggerRate:l.skill_trigger_rate,cacheReadInputTokens:l.cache_read_input_tokens,cacheCreationInputTokens:l.cache_creation_input_tokens,maxSingleCallTokens:l.max_single_call_tokens,reasoningTokens:l.reasoning_tokens,observedAgents:W}}),e.upload_id&&e.task_id&&e.upload_id!==A)try{let t=await i.db.findExecutionById(e.upload_id);t&&t.taskId===e.task_id&&(H&&console.warn(`[Data-Audit] deleteExecution (dedup on save): upload_id=${e.upload_id} task_id=${e.task_id} recordId=${A}`),await i.db.deleteExecution(e.upload_id))}catch{}if(_)try{let e,t=Array.isArray(L)&&L.length>0;e=R?Array.isArray(l.invokedSkills)?l.invokedSkills:[]:t?function(e,t){if(!Array.isArray(t)||0===t.length)return[];if("opencode"===e){let e=(0,I.buildAgentCallTree)(t);return e?f(e):[]}return function(e,t){if(!Array.isArray(t))return null;let A=(0,B.normalizeInteractions)(t);return(0,d.getAdapter)(e).extractSkills?.(A)??null}(e,t)??[]}(l.framework,L):Array.isArray(l.invokedSkills)?l.invokedSkills:[];let r=await p(e,l.user);await y(A,r,{user:l.user,primaryName:l.skill??null})}catch(e){console.warn(`[Data-Service] root ExecutionSkill persist failed for ${A}:`,e)}if("opencode"===l.framework&&l.task_id&&Array.isArray(L))try{await M({parentExecutionId:A,parentTaskId:l.task_id,parentFramework:l.framework,parentUser:l.user,interactions:L})}catch(e){console.warn(`[Data-Service] deriveSubagentExecutions failed for parent=${A}:`,e)}return l.task_id&&L&&(await i.db.upsertSession(l.task_id,{taskId:l.task_id,query:l.query,label:l.label,user:l.user,model:l.model,interactions:JSON.stringify(L)},{query:l.query,label:l.label,user:l.user,model:l.model,interactions:JSON.stringify(L)}),"opencode"===l.framework&&!0===l.opencode_cli_completed&&await i.db.updateSession(l.task_id,{endTime:new Date})),{success:!0,record:l}}async function M(e){let{parentExecutionId:t,parentTaskId:A,parentFramework:r,parentUser:s,interactions:n}=e;if(!Array.isArray(n)||0===n.length)return;let o=(0,I.buildAgentCallTree)(n);if(!o)return void await T(t,new Set);let a=[],l=new Set;if((0,I.walkTree)(o,e=>{if(!e||0===e.depth)return;let t="string"==typeof e.sessionId?e.sessionId.trim():"";!t||t===A||l.has(t)||(l.add(t),a.push({node:e,sessionId:t,parentNodeId:e.parentId}))}),0===a.length)return;a.sort((e,t)=>e.node.depth-t.node.depth);let g=new Map;g.set(o.id,t);let c=new Set;for(let e of a){let{node:A,sessionId:o,parentNodeId:a}=e,l=g.get(a)??t,u=`${l}__sub__${o}`;g.set(A.id,u),c.add(u);let E=new Set,Q=[],I=e=>{for(let t of e.interactionIndices||[])E.add(t);for(let t of(Array.isArray(e.systemPrompts)&&e.systemPrompts.length>0&&e.sessionId&&Q.push({sessionId:e.sessionId,entries:e.systemPrompts}),e.children||[]))I(t)};I(A);let d=[...E].sort((e,t)=>e-t).map(e=>n[e]).filter(Boolean),B=[];for(let e of Q)for(let t of e.entries)B.push({role:"system",content:t.text,subagent_session_id:e.sessionId,system_prompt_sha256:t.sha256,system_prompt_length:t.length,system_prompt_modelID:t.modelID,system_prompt_providerID:t.providerID});let C=[...B,...d],m=(()=>{for(let e of d){let t="string"==typeof e?.content?e.content.trim():"";if(t)return t.slice(0,500)}return A.agentName||o})(),w=A.startedAt?new Date(A.startedAt):new Date,D={taskId:o,framework:r,timestamp:w,agentName:A.agentName??null,user:s??null,query:m,parentExecutionId:l,rootExecutionId:t,agentSessionId:o,subagentType:A.subagentType??null,subagentName:A.agentName??null,isSubagent:!0,observedAgents:JSON.stringify((0,h.extractObservedAgentNames)(C))};try{await i.db.upsertExecution({where:{id:u},create:{id:u,...D},update:{...D}})}catch(e){console.warn(`[Data-Service] upsertExecution(sub) failed sub=${o}:`,e);continue}if(_)try{let e=await p(f(A),s);await y(u,e,{user:s??null})}catch(e){console.warn(`[Data-Service] sub ExecutionSkill persist failed sub=${o}:`,e)}try{await i.db.upsertSession(o,{taskId:o,label:A.agentName??null,user:s??null,query:m,interactions:JSON.stringify(C)},{label:A.agentName??null,user:s??null,query:m,interactions:JSON.stringify(C)})}catch(e){console.warn(`[Data-Service] upsertSession(sub) failed sub=${o}:`,e)}}await T(t,c)}async function T(e,t){try{for(let A of(await i.db.findExecutions({rootExecutionId:e,isSubagent:!0},{timestamp:"desc"})))if(!(!A?.id||t.has(A.id)))try{await i.db.deleteExecution(A.id)}catch(e){console.warn(`[Data-Service] sweepStaleSubagents: deleteExecution(${A.id}) failed:`,e)}}catch(t){console.warn(`[Data-Service] sweepStaleSubagents query failed root=${e}:`,t)}}process.env.READ_RECORDS_HYDRATE_BATCH_SIZE,e.s(["saveExecutionRecord",()=>U]),A()}catch(e){A(e)}},!1)];
|
|
368
|
+
`}e.s(["EXTRACTION_PROMPT",0,t,"generateExtractionPrompt",()=>A])},191878,e=>e.a(async(t,A)=>{try{var r=e.i(522734);e.i(210954);var s=e.i(184599),n=e.i(814747),i=e.i(256451),o=e.i(401682);e.i(419961),e.i(598905);var a=t([o]);[o]=a.then?(await a)():a;let u=n.default.join(process.cwd(),"data","model_debug.jsonl"),E={temperature:0,top_p:1,seed:42};function l(e,t,A){try{let s=n.default.dirname(u);r.default.existsSync(s)||r.default.mkdirSync(s,{recursive:!0});let i={timestamp:new Date().toISOString(),stage:e,input:t,output:A};r.default.appendFileSync(u,JSON.stringify(i)+"\n")}catch(e){console.error("Log error",e)}}async function g(e){let t=await (0,o.getActiveConfig)(e);if(!t)return{client:null,model:null};let A=t.apiKey||"no-api-key-required",r=t.baseUrl||"https://api.deepseek.com",{customFetch:n}=(0,i.getProxyConfig)();return{client:new s.OpenAI({apiKey:A,baseURL:r,fetch:n}),model:t.model||"deepseek-chat"}}async function h(e,t){let A,r=(A=Number(process.env.JUDGMENT_TIMEOUT_MS||3e5),!Number.isFinite(A)||A<=0?3e5:A),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await e({signal:s.signal,timeout:r})}catch(e){if(s.signal.aborted)throw Error(`${t} timeout after ${r}ms`);throw e}finally{clearTimeout(n)}}async function c(t,A,r,s,n){let{client:i,model:o}=await g(s);if(!i||!i.apiKey)return console.warn("LLM Evaluation disabled or missing config. Skipping."),{is_correct:!1,score:0,reason:"请在首页左上角的设置中配置 LLM"};try{let s=A.root_causes||[],a=A.key_actions||[],g=s.map((e,t)=>({id:`RC-${t}`,...e})),c=a.map((e,t)=>({id:`KA-${t}`,...e})),{generateJudgePrompt:u}=e.r(610234),Q=[];if(g.length>0){let e=u(t,r,g,[],A.skill_definition,"root_causes"),s=await h(t=>i.chat.completions.create({messages:[{role:"user",content:e}],model:o,...E},t),"RC Judgment API");console.log(`[Judge API Debug] RC Model: ${o}. Received response choices:`,s?.choices?.length);let n=s.choices?.[0]?.message?.content;if(l("rc_evaluation",{prompt:e},{raw_output:n}),n){let e=n.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(t)e=t[1];else{let t=e.indexOf("{"),A=e.lastIndexOf("}");-1!==t&&-1!==A&&A>=t&&(e=e.substring(t,A+1))}try{let t=JSON.parse(e);Q.push(...t.evaluations||[])}catch(e){console.warn("[Judge] Failed to parse RC result:",e)}}}if(c.length>0){let e=n&&n.length>0?n.map((e,t)=>`步骤${t+1}: [${e.type}] ${e.name} - ${e.description}`).join("\n"):null,s=u(t,e||r,[],c,A.skill_definition,"key_actions",e||null),a=await h(e=>i.chat.completions.create({messages:[{role:"user",content:s}],model:o,...E},e),"KA Judgment API");console.log(`[Judge API Debug] KA Model: ${o}. Received response choices:`,a?.choices?.length);let g=a.choices?.[0]?.message?.content;if(l("ka_evaluation",{prompt:s},{raw_output:g}),g){let e=g.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(t)e=t[1];else{let t=e.indexOf("{"),A=e.lastIndexOf("}");-1!==t&&-1!==A&&A>=t&&(e=e.substring(t,A+1))}try{let t=JSON.parse(e);Q.push(...t.evaluations||[])}catch(e){console.warn("[Judge] Failed to parse KA result:",e)}}}let I=0,d=0,B=[];g.forEach(e=>{let t=Q.find(t=>t.id===e.id),A=t?Math.max(0,Math.min(1,Number(t.match_score))):0,r=t?.explanation||"未找到评分结果";I+=A*e.weight,d+=e.weight,B.push(`1. **Root Cause** [${e.content.replace(/\n/g," ")}]: ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight})`)});let C=new Map,f=[];for(let e of c){let t=e.groupId,A=e.controlFlowType||"required";"conditional"===A&&t?(C.has(t)||C.set(t,[]),C.get(t).push(e)):f.push(e)}for(let[e,t]of C){let e=t.map(e=>{let t=Q.find(t=>t.id===e.id),A=t?Math.max(0,Math.min(1,Number(t.match_score))):0,r=t?.explanation||"未找到评分结果";return{ka:e,ev:t,match:A,explanation:r}}),A=e.find(e=>e.match>0||!e.explanation.includes("此分支未触发"));if(A){let{ka:t,ev:r,match:s,explanation:n}=A,i=t.branchLabel||"";for(let r of(I+=s*t.weight,d+=t.weight,B.push(`2. **Key Action** [${t.content.replace(/\n/g," ")}] (条件分支${i?" - "+i:""}): ${(100*s).toFixed(0)}% match. ${n} (Weight: ${t.weight})`),e))r.ka.id!==A.ka.id&&B.push(`2. **Key Action** [${r.ka.content.replace(/\n/g," ")}] (条件分支${r.ka.branchLabel?" - "+r.ka.branchLabel:""}): ${(100*r.match).toFixed(0)}% match. ${r.explanation} (该分支未触发,不计入总分)`)}else{let{ka:t,ev:A,match:r,explanation:s}=e[0],n=t.branchLabel||"";I+=0*t.weight,d+=t.weight,B.push(`2. **Key Action** [${t.content.replace(/\n/g," ")}] (条件分支${n?" - "+n:""}): ${(100*r).toFixed(0)}% match. ${s} (所有分支均未触发,Weight: ${t.weight})`);for(let t=1;t<e.length;t++){let A=e[t];B.push(`2. **Key Action** [${A.ka.content.replace(/\n/g," ")}] (条件分支${A.ka.branchLabel?" - "+A.ka.branchLabel:""}): ${(100*A.match).toFixed(0)}% match. ${A.explanation} (该分支未触发,不计入总分)`)}}}f.forEach(e=>{let t=Q.find(t=>t.id===e.id),A=t?Math.max(0,Math.min(1,Number(t.match_score))):0,r=t?.explanation||"未找到评分结果",s=e.controlFlowType||"required";if("optional"===s)return void B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (可选): ${(100*A).toFixed(0)}% match. ${r} (Weight: 0, 不扣分)`);if("handoff"===s){I+=A*e.weight,d+=e.weight,B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (衔接): ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight})`);return}if("loop"===s){let t=e.loopCondition||"",s=e.expectedMinCount,n=e.expectedMaxCount;I+=A*e.weight,d+=e.weight,B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (循环${t?" - "+t:""}): ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight}, 预期次数: ${s??"?"}~${n??"?"})`);return}I+=A*e.weight,d+=e.weight,B.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}]: ${(100*A).toFixed(0)}% match. ${r} (Weight: ${e.weight})`)});let p=0;p=d>0?I/d:0;let y=B.map(e=>{let t=e.match(/(\d+)% match/),A=e.match(/\(Weight: ([\d\.]+)\)/);if(t&&A){let e=(parseInt(t[1])/100).toFixed(1),r=parseFloat(A[1]).toFixed(1);return`${e}*${r}`}return null}).filter(e=>e).join(" + "),m=B.map(e=>{let t=e.match(/\(Weight: ([\d\.]+)\)/);return t?parseFloat(t[1]).toFixed(1):null}).filter(e=>e).join(" + "),w=`**Calculation**: (${y}) / (${m}) = ${I.toFixed(2)} / ${d.toFixed(2)} = ${p.toFixed(2)}`;B.push("",w);let D=B.join("\n");return{is_correct:p>=.8,score:p,reason:D}}catch(e){if(console.error("LLM Judgment Error:",e),String(e?.message||"").includes("timeout"))return{is_correct:!1,score:0,reason:"Judgment API failed: timeout"};return{is_correct:!1,score:0,reason:"Judgment API failed"}}}e.s(["judgeAnswer",()=>c]),A()}catch(e){A(e)}},!1),723039,e=>{"use strict";e.i(522734),e.i(814747).default.join(process.cwd(),"custom-models.json"),e.s([])},852628,e=>{"use strict";function t(e){return"routing"===e||"outcome"===e||"combined"===e?e:"combined"}function A(e,A){let r=t(e);return"combined"===r||r===A}function r(e,A){let r=t(e);return"any"===A?"combined"===r?1:2:r===A?3:2*("combined"===r)}function s(e){return Array.isArray(e)?e.map(e=>{if("string"==typeof e){let t=e.trim();return t?{skill:t,version:null}:null}if(!e||"object"!=typeof e)return null;let t="skill"in e?e.skill:null,A="string"==typeof t?t.trim():"";if(!A)return null;let r="version"in e?e.version:null,s=null;if("number"==typeof r&&Number.isInteger(r)&&r>=0)s=r;else if("string"==typeof r&&r.trim()){let e=parseInt(r,10);s=Number.isNaN(e)||e<0?null:e}return{skill:A,version:s}}).filter(e=>!!e):[]}e.s(["configSupportsDatasetType",()=>A,"getDatasetTypePriority",()=>r,"normalizeConfigDatasetType",()=>t,"normalizeExpectedSkills",()=>s])},997078,e=>{"use strict";function t(e){return"string"!=typeof e?null:e.trim()||null}function A(e){return"string"!=typeof e?"":e.trim()}function r(e,s="Skill benchmark"){var n,i;let o;return t(e.query)||(n=e.skill,i=e.skillVersion,(o=A(n))?null!=i?`${o} (v${i})`:o:null)||s}e.s(["getConfigSubjectLabel",()=>r,"normalizeConfigQuery",()=>t,"normalizeConfigSkillName",()=>A])},583701,e=>e.a(async(t,A)=>{try{e.i(210954),e.i(256451);var r=e.i(401682),s=t([r]);function n(e){return e.trim().toLowerCase().replace(/[`"'“”‘’]/g,"").replace(/[.,,。!?!?;;::、·…()[\]{}<>]/g," ").replace(/\s+/g," ").trim().replace(/\s/g,"")}function i(e,t){let A=n(e),r=n(t.intent),s=t.anchors.filter(e=>{let t=n(e);return!!t&&A.includes(t)});return{intentMatched:!!(A&&r&&(A===r||A.includes(r)||r.includes(A))),matchedAnchors:s,anchorCoverage:t.anchors.length>0?s.length/t.anchors.length:0}}[r]=s.then?(await s)():s,e.s(["matchQueryToStoredRoutingSignature",()=>i]),A()}catch(e){A(e)}},!1),864778,e=>{"use strict";function t(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let A=Date.parse(t);return Number.isFinite(A)?A:null}return null}function A(e){let A=0,r=0,s="",n="",i="",o=0,a=0,l=0,g=0,h=0,c=0,u=0,E=0,Q=0,I=Number.MAX_SAFE_INTEGER,d=0;for(let r of e||[]){if(!r)continue;let e=r.role,B="assistant"===e||"subagent"===e;if("assistant"===e){let e="string"==typeof r.content?r.content:"";e&&e.trim()&&(n=e),"string"==typeof r.model&&r.model?s=r.model:"string"==typeof r.modelID&&r.modelID&&(s=r.modelID)}r.agent&&"string"==typeof r.agent&&!i&&(i=r.agent);let C=t(r.timeInfo?.created),f=t(r.timeInfo?.completed),p=t(r.timestamp);if(C&&(I=Math.min(I,C),d=Math.max(d,C)),f&&(d=Math.max(d,f)),p&&(I=Math.min(I,p),d=Math.max(d,p)),!B)continue;c++;let y=r.usage;if(y){let e=function(e){let t=Number(e?.input_tokens??e?.input??0)||0,A=Number(e?.output_tokens??e?.output??0)||0,r=Number(e?.cache?.read??e?.cache_read_input_tokens??0)||0,s=Number(e?.cache?.write??e?.cache_creation_input_tokens??0)||0,n=Number(e?.reasoning??e?.reasoning_tokens??e?.completion_tokens_details?.reasoning_tokens??0)||0,i=e?.reasoning!==void 0&&n>0&&A<n?A+n:A;return{total:e?.total!==void 0?Number(e.total)||0:t+i+r+s,input:t,output:i,cacheRead:r,cacheWrite:s,reasoning:n,maxSingleCallTokens:t+i+r+s}}(y);A+=e.total,o+=e.input,a+=e.output,l+=e.cacheRead,g+=e.cacheWrite,h+=e.reasoning,e.maxSingleCallTokens>Q&&(Q=e.maxSingleCallTokens)}if(Array.isArray(r.tool_calls))for(let e of(u+=r.tool_calls.length,r.tool_calls))(e?.state==="error"||e?.state==="failed")&&E++}return I!==Number.MAX_SAFE_INTEGER&&d>I&&(r=d-I),{model:s||void 0,agentName:i||void 0,final_result:n||void 0,tokens:Math.round(A),latency:r/1e3,input_tokens:Math.round(o),output_tokens:Math.round(a),tool_call_count:u,tool_call_error_count:E,llm_call_count:c,cache_read_input_tokens:Math.round(l),cache_creation_input_tokens:Math.round(g),max_single_call_tokens:Math.round(Q),reasoning_tokens:Math.round(h)}}e.s(["deriveOpencodeExecutionFields",()=>A])},656709,e=>{"use strict";e.s([])},475670,e=>{"use strict";function t(e){return"string"==typeof e?e.trim():""}function A(e,A){let r=[],s=new Set,n=t(A),i=(e,A)=>{let n=t(e);if(!n)return;let i=`${A}:${n}`;s.has(i)||(s.add(i),r.push({name:n,agentType:A}))};for(let A of(n&&i(n,"main"),e||[])){if(!A||"object"!=typeof A)continue;let e=t(A.role).toLowerCase(),r=t(A.subagent_name),s=t(A.agent);if(r){i(r,"subagent");continue}("subagent"===e||"opencode"===e)&&s&&s!==n?i(s,"subagent"):!n&&s&&i(s,"main")}return r}function r(e){return A(e).map(e=>e.name)}e.i(656709),e.s(["extractObservedAgentNames",()=>r,"extractObservedAgentRegistrations",()=>A])},39759,e=>{"use strict";function t(e){let t="string"==typeof e.incomingLabel?e.incomingLabel.trim():void 0;if(void 0!==t){if(!t)return;return t}let A="string"==typeof e.existingLabel?e.existingLabel.trim():"",r="string"==typeof e.skill?e.skill.trim():"",s=e.skillVersion??null;if(A&&!(A&&"without-skill"===A))return A;if(r){let e="number"==typeof s&&Number.isFinite(s)?s:0;return`${r}-v${e}`}return"without-skill"}e.s(["chooseExecutionLabel",()=>t])},799880,e=>{"use strict";function t(e){let t="string"==typeof e?e.trim():"";if(!t||"without-skill"===t)return null;let A=t.match(/^(.+)-v(\d+)$/);if(!A)return null;let r=(A[1]||"").trim(),s=Number(A[2]);return r&&Number.isFinite(s)&&!(s<0)?{skill:r,skill_version:s,skills:[r],invokedSkills:[{name:r,version:s}]}:null}e.s(["parseLabelSkillVersionBinding",()=>t])},925658,e=>{"use strict";e.s([])},761620,e=>e.a(async(t,A)=>{try{e.i(210954),e.i(256451);var r=e.i(401682),s=e.i(309418);e.i(925658),e.i(308229),e.i(522734);var n=e.i(814747),i=t([r,s]);function o(e){let t=[],A=new Map;if(e.conditionalGroups)for(let t of e.conditionalGroups)for(let e of t.branches)for(let r of e.stepIds)A.set(r,{type:"conditional",group:t});if(e.loopGroups)for(let t of e.loopGroups)for(let e of t.bodyStepIds)A.set(e,{type:"loop",group:t});let r=new Set(e.steps.map(e=>e.id));if(e.conditionalGroups)for(let t of e.conditionalGroups)for(let e of t.branches)for(let s of e.stepIds)r.has(s)||(console.warn(`[FlowParse] ConditionalGroup ${t.id} references invalid stepId ${s}, degrading to required`),A.delete(s));if(e.loopGroups)for(let t of e.loopGroups)for(let e of t.bodyStepIds)r.has(e)||(console.warn(`[FlowParse] LoopGroup ${t.id} references invalid stepId ${e}, degrading to required`),A.delete(e));let s=new Map;if(e.conditionalGroups)for(let t of e.conditionalGroups)s.set(t.id,t.branches.length);for(let r of e.steps){let e=A.get(r.id);if(r.isOptional&&!e){t.push({id:r.id,content:r.name,weight:0,controlFlowType:"optional"});continue}if(e?.type==="conditional"){let A=e.group,n=A.branches.find(e=>e.stepIds.includes(r.id)),i=s.get(A.id)||1;t.push({id:r.id,content:r.name,weight:1/i,controlFlowType:"conditional",condition:A.condition,branchLabel:n?.label,groupId:A.id});continue}if(e?.type==="loop"){let A=e.group;t.push({id:r.id,content:r.name,weight:1,controlFlowType:"loop",loopCondition:A.loopCondition,expectedMinCount:A.expectedMinCount,expectedMaxCount:A.expectedMaxCount,groupId:A.id});continue}if(r.isOptional){t.push({id:r.id,content:r.name,weight:0,controlFlowType:"optional"});continue}t.push({id:r.id,content:r.name,weight:1,controlFlowType:"required"})}return t}function a(e){let t=[];for(let A=0;A<e.length;A++){let{name:r,actions:s}=e[A];for(let e of s)t.push({...e,id:`${r}-${e.id}`,skillSource:r});if(A<e.length-1){let s=e[A+1].name;t.push({id:`handoff-${r}-to-${s}`,content:`从 ${r} 输出衔接至 ${s} 输入`,weight:1,controlFlowType:"handoff",skillSource:`${r}->${s}`})}}return t}[r,s]=i.then?(await i)():i,n.default.join(process.cwd(),"data","flow_debug.jsonl"),e.s(["extractKeyActionsFromFlow",()=>o,"mergeKeyActionsFromMultipleSkills",()=>a]),A()}catch(e){A(e)}},!1),6325,e=>{"use strict";function t(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let A=Date.parse(t);return Number.isFinite(A)?A:null}return null}function A(e){let A=e.id??e.message_id??e.messageID;if("string"==typeof A&&A.trim())return`id:${A.trim()}`;let r="string"==typeof e.role?e.role:"unknown",s=t(e.timestamp)??t(e.timeInfo?.created)??t(e.timeInfo?.completed)??0,n="string"==typeof e.subagent_session_id?e.subagent_session_id:"";return`k:${n}:${s}:${r}`}function r(e,r){let s=Array.isArray(e)?e:[],n=Array.isArray(r)?r:[],i=new Map,o=new Map,a=0;for(let e of s){if(!e)continue;let t=A(e);i.has(t)||(i.set(t,e),o.set(t,a++))}for(let e of n){if(!e)continue;let t=A(e),r=i.get(t);r?i.set(t,function(e,t){let A={...e,...t},r="string"==typeof e.content?e.content:"",s="string"==typeof t.content?t.content:"";return r&&!s?A.content=r:r&&s&&s.length<r.length&&(A.content=r),e.subagent_name&&!t.subagent_name&&(A.subagent_name=e.subagent_name),e.agent&&!t.agent&&(A.agent=e.agent),e.subagent_session_id&&!t.subagent_session_id&&(A.subagent_session_id=e.subagent_session_id),A.tool_calls=function(e,t){let A=Array.isArray(e)?e:[],r=Array.isArray(t)?t:[];if(0===A.length)return r;if(0===r.length)return A;let s=new Set,n=[];for(let e of[...A,...r]){let t=function(e){let t=e?.id??e?.callID??e?.callId??e?.call_id;if("string"==typeof t&&t.trim())return`id:${t.trim()}`;let A=e?.function?.name??e?.name??"",r=e?.function?.arguments??e?.arguments??"";return`sig:${A}:${function(e){let t=5381;for(let A=0;A<e.length;A++)t=(t<<5)+t^e.charCodeAt(A);return(t>>>0).toString(16)}(function(e){if(null==e)return"";if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(r))}`}(e);s.has(t)||(s.add(t),n.push(e))}return n}(e.tool_calls,t.tool_calls),e.usage&&!t.usage&&(A.usage=e.usage),e.timeInfo&&!t.timeInfo&&(A.timeInfo=e.timeInfo),A}(r,e)):(i.set(t,e),o.set(t,a++))}let l=Array.from(i.entries()).map(([e,A])=>({k:e,v:A,ts:t(A.timestamp)??t(A.timeInfo?.created)??t(A.timeInfo?.completed)??0,order:o.get(e)??0}));return l.sort((e,t)=>e.ts-t.ts||e.order-t.order),l.map(e=>e.v)}e.s(["mergeSessionInteractionsMonotonic",()=>r])},418918,e=>{"use strict";var t=e.i(308033),A=e.i(598905);let r={descriptor:{id:"claude",aliases:["claudecode"],label:"Claude Code",onboard:"watcher",platform:"claude"},normalizeForStorage:t.normalizeClaudeCodeInteractionsForStorage,extractSkills:A.extractSkillsWithVersionsFromClaudeSession},s={descriptor:{id:"openclaw",label:"OpenClaw",onboard:"plugin",platform:"openclaw"},extractSkills:A.extractSkillsWithVersionsFromOpenClawSession},n={descriptor:{id:"opencode",label:"OpenCode",onboard:"plugin",platform:"opencode"},extractSkills:A.extractSkillsWithVersionsFromOpencodeSession},i={descriptor:{id:"unknown",label:"Unknown",onboard:"env"}},o=new Map;for(let e of[n,r,s,{descriptor:{id:"hermes",label:"Hermes",onboard:"env",platform:"hermes"}}])for(let t of(o.set(e.descriptor.id.toLowerCase(),e),e.descriptor.aliases??[]))o.set(t.toLowerCase(),e);function a(e){return o.get(String(e??"").trim().toLowerCase())??i}e.s(["getAdapter",()=>a],418918)},904239,e=>e.a(async(t,A)=>{try{var r=e.i(522734),s=e.i(814747),n=e.i(191878),i=e.i(309418);e.i(723039);var o=e.i(852628),a=e.i(997078),l=e.i(583701),g=e.i(864778),h=e.i(475670),c=e.i(39759),u=e.i(799880),E=e.i(761620),Q=e.i(6325),I=e.i(308229);e.i(656709);var d=e.i(418918),B=e.i(598905),C=t([n,i,l,E]);[n,i,l,E]=C.then?(await C)():C;let _=!process.env.DB_HOST,L=/^[a-zA-Z0-9_\-\.]+$/;function f(e){let t=new Set,A=[];for(let r of e.events||[]){if("skill"!==r.kind)continue;let e=r.args&&"object"==typeof r.args?r.args:{},s=e.name??e.skill_name??e.skillName??e.skill;if(null==s||!String(s).trim())continue;let n=String(s).trim().replace(/^['"]+|['"]+$/g,"");if(!L.test(n)||t.has(n))continue;t.add(n);let i=null!=e.version?Number(e.version):null;A.push({name:n,version:null===i||isNaN(i)?null:i})}return A}async function p(e,t){let A=Array.from(new Set(e.filter(e=>null==e.version).map(e=>e.name))),r=new Map;if(A.length>0)try{for(let e of(await i.prisma.skill.findMany({where:{name:{in:A},...t?{OR:[{user:t},{user:null}]}:{}},select:{name:!0,activeVersion:!0}})))"number"==typeof e.activeVersion&&r.set(e.name,e.activeVersion)}catch(e){console.warn("[Data-Service] snapshotSkillVersions lookup failed:",e)}return e.map(e=>null!=e.version?e:{name:e.name,version:r.get(e.name)??null})}async function y(e,t,A={}){if(_&&e)try{if(await i.prismaRaw.executionSkill.deleteMany({where:{executionId:e}}),!t.length)return;let r=new Set,s=[];for(let n of t){if(!n?.name)continue;let t=`${n.name}@@${n.version??""}`;r.has(t)||(r.add(t),s.push({executionId:e,skillName:n.name,skillVersion:n.version??null,isPrimary:null!=A.primaryName&&n.name===A.primaryName,user:A.user??null}))}s.length&&await i.prismaRaw.executionSkill.createMany({data:s})}catch(t){console.warn(`[Data-Service] persistExecutionSkills failed for ${e}:`,t)}}[...(process.env.TRACE_SERVICE_OWNERS||"admin,anonymous").split(",").map(e=>e.trim()).filter(Boolean)];let v="未找到匹配的效果评测配置";async function m(e,t,A){let r=(0,a.normalizeConfigQuery)(t);if(!r)return;let s=e.filter(e=>(0,o.configSupportsDatasetType)(e.dataset_type,"routing")),n=[];for(let e of s){let t=function(e){let t=Array.isArray(e.routing_anchors)?e.routing_anchors.filter(e=>"string"==typeof e&&e.trim()):[];return e.routing_intent?.trim()&&t.length>0?{intent:e.routing_intent.trim(),anchors:t}:null}(e);if(!t)continue;let A=(0,l.matchQueryToStoredRoutingSignature)(r,t);(0!==A.matchedAnchors.length||A.intentMatched)&&n.push({config:e,signature:t,matchedAnchors:A.matchedAnchors,anchorCoverage:A.anchorCoverage,intentMatched:A.intentMatched})}if(0===n.length)return;n.sort((e,t)=>{if(t.matchedAnchors.length!==e.matchedAnchors.length)return t.matchedAnchors.length-e.matchedAnchors.length;if(t.anchorCoverage!==e.anchorCoverage)return t.anchorCoverage-e.anchorCoverage;if(Number(t.intentMatched)!==Number(e.intentMatched))return Number(t.intentMatched)-Number(e.intentMatched);let A=(0,o.getDatasetTypePriority)(e.config.dataset_type,"routing"),r=(0,o.getDatasetTypePriority)(t.config.dataset_type,"routing");if(r!==A)return r-A;let s=e.signature.anchors.join("").length;return t.signature.anchors.join("").length-s});let i=n[0];return i.config.routing_intent=i.signature.intent,i.config.routing_anchors=i.signature.anchors,i.config}function w(e,t){let A=function(e){let t=(0,a.normalizeConfigSkillName)(e.skill);if(t)return{skill:t,version:e.skill_version??null};let A=S(e),r=Array.from(new Map(A.filter(e=>e.name?.trim()).map(e=>[`${e.name.trim()}::${e.version??"any"}`,e])).values());if(1===r.length)return{skill:r[0].name.trim(),version:r[0].version??null}}(t);if(!A)return;let r=(0,a.normalizeConfigQuery)(t.query),s=e.filter(e=>(0,o.configSupportsDatasetType)(e.dataset_type,"outcome")).filter(e=>(0,a.normalizeConfigSkillName)(e.skill)===A.skill).filter(e=>{let t=e.skillVersion??null;return null===t||t===A.version}).filter(e=>{let t=(0,a.normalizeConfigQuery)(e.query);return!t||t===r});if(0!==s.length)return s.reduce((e,t)=>{let s=(e.skillVersion??null)!==null&&e.skillVersion===A.version,n=(t.skillVersion??null)!==null&&t.skillVersion===A.version;if(s!==n)return n?t:e;let i=(0,a.normalizeConfigQuery)(e.query)===r,l=(0,a.normalizeConfigQuery)(t.query)===r;if(i!==l)return l?t:e;let g=!(0,a.normalizeConfigQuery)(e.query),h=!(0,a.normalizeConfigQuery)(t.query);if(g!==h)return h?t:e;let c=(0,o.getDatasetTypePriority)(e.dataset_type,"outcome");return(0,o.getDatasetTypePriority)(t.dataset_type,"outcome")>c?t:e})}function D(e){if(!e)return[];let t=(0,o.normalizeExpectedSkills)(e.expectedSkills);return t.length>0?t:e.skill?.trim()?[{skill:e.skill.trim(),version:e.skillVersion??null}]:[]}function S(e){return Array.isArray(e.invokedSkills)&&e.invokedSkills.length>0?e.invokedSkills.filter(e=>e?.name?.trim()).map(e=>({name:e.name.trim(),version:e.version??null})):Array.isArray(e.skills)&&e.skills.length>0?e.skills.filter(e=>"string"==typeof e&&e.trim()).map(e=>({name:e.trim(),version:null})):[]}function b(e,t,A){let r=new Map,s=(e,t)=>{let A=e?.trim();if(!A)return;let s=r.get(A)||{skill:A,expected_version:null,invoked_version:null,primary_version:null,is_expected:!1,is_invoked:!1,is_primary:!1,is_outcome_anchor:!1};r.set(A,{...s,...t,expected_version:void 0!==t.expected_version?t.expected_version:s.expected_version,invoked_version:void 0!==t.invoked_version?t.invoked_version:s.invoked_version,primary_version:void 0!==t.primary_version?t.primary_version:s.primary_version,is_expected:t.is_expected??s.is_expected,is_invoked:t.is_invoked??s.is_invoked,is_primary:t.is_primary??s.is_primary,is_outcome_anchor:t.is_outcome_anchor??s.is_outcome_anchor})};for(let A of(s(e.skill,{is_primary:!0,primary_version:e.skill_version??null}),D(t)))s(A.skill,{is_expected:!0,expected_version:A.version??null});for(let t of S(e))s(t.name,{is_invoked:!0,invoked_version:t.version??null});return A?.skill?.trim()&&s(A.skill,{is_outcome_anchor:!0}),Array.from(r.values()).sort((e,t)=>{let A=4*Number(e.is_primary)+2*Number(e.is_invoked)+Number(e.is_expected),r=4*Number(t.is_primary)+2*Number(t.is_invoked)+Number(t.is_expected);return A!==r?r-A:e.skill.localeCompare(t.skill)})}async function N(e,t){if(!e||Array.isArray(e.key_actions)&&e.key_actions.length>0)return;let A=function(e){let t=new Map,A=(e,A)=>{let r=(0,a.normalizeConfigSkillName)(e);if(!r)return;let s=A??null;t.set(`${r}::${s??"any"}`,{skill:r,version:s})};for(let t of(A(e.skill,e.skillVersion??null),(0,o.normalizeExpectedSkills)(e.expectedSkills)))A(t.skill,t.version??null);return Array.from(t.values())}(e);if(0===A.length)return;let r=[];for(let e of A){let A=await i.db.findSkill(e.skill,t||null);if(!A)continue;let s=e.version??A.activeVersion??A.versions?.[0]?.version??null;if(null==s)continue;let n=await i.db.findParsedFlow(A.id,s,t||null);if(!n?.flowJson)continue;let o=JSON.parse(n.flowJson),a=(0,E.extractKeyActionsFromFlow)(o).map(t=>({...t,skillSource:t.skillSource||e.skill}));a.length>0&&r.push({name:e.skill,actions:a})}if(0===r.length)return;let s=1===r.length?r[0].actions:(0,E.mergeKeyActionsFromMultipleSkills)(r);e.key_actions=s.map(e=>({content:e.content,weight:e.weight,..."required"!==e.controlFlowType?{controlFlowType:e.controlFlowType}:{},...e.condition?{condition:e.condition}:{},...e.branchLabel?{branchLabel:e.branchLabel}:{},...e.loopCondition?{loopCondition:e.loopCondition}:{},...void 0!==e.expectedMinCount?{expectedMinCount:e.expectedMinCount}:{},...void 0!==e.expectedMaxCount?{expectedMaxCount:e.expectedMaxCount}:{},...e.groupId?{groupId:e.groupId}:{}})),e.extractedKeyActions=s;try{await i.db.updateConfig(e.id,{keyActions:JSON.stringify(e.key_actions),extractedKeyActions:JSON.stringify(s)}),console.log(`[AutoExtract] Auto-filled key_actions for config ${e.id} from ${A.map(e=>e.skill).join(", ")}`)}catch(e){console.error("[AutoExtract] Error updating config with extracted key_actions:",e)}}async function R(e,t,A){let r=S(e),s=b(e,t);if(!t)return{status:"missing",expected_skills:[],invoked_skills:r,matched_skills:[],matched_anchors:[],expected_count:0,matched_count:0,is_correct:!1,trigger_rate:null,skill_breakdown:s.map(e=>({skill:e.skill,expected:e.is_expected,invoked:e.is_invoked,matched:!1,status:e.is_invoked?"unexpected":"not_applicable",expected_version:e.expected_version,invoked_version:e.invoked_version}))};let n=D(t),l=[],g=0,h=new Map,c=n.filter(e=>null!==e.version&&!r.some(t=>t.name===e.skill&&null!==t.version)).map(e=>e.skill);if(c.length>0)try{for(let e of(await i.db.findSkills({name:{in:c},user:A||null})))h.set(e.name,e)}catch(e){console.error("[RoutingEvaluation] Error fetching skills for version check:",e)}for(let e of n){let t=r.find(t=>t.name===e.skill);if(!t)continue;let A=!1;if(null===e.version)A=!0;else if(null!==t.version)A=t.version===e.version;else{let t=h.get(e.skill);A=(t?t.activeVersion||0:null)===e.version}A&&(g+=1,l.push({skill:e.skill,expected_version:e.version,invoked_version:t.version??null}))}let u=s.map(e=>{let t=l.some(t=>t.skill===e.skill),A="not_applicable";return e.is_expected?A=t?"matched":"missed":e.is_invoked&&(A="unexpected"),{skill:e.skill,expected:e.is_expected,invoked:e.is_invoked,matched:t,status:A,expected_version:e.expected_version,invoked_version:e.invoked_version}});return{status:"available",matched_config_id:t.id,matched_query:(0,a.normalizeConfigQuery)(t.query)||void 0,matched_intent:t.routing_intent||void 0,matched_anchors:t.routing_anchors||[],dataset_type:(0,o.normalizeConfigDatasetType)(t.dataset_type),expected_skills:n,invoked_skills:r,matched_skills:l,expected_count:n.length,matched_count:g,is_correct:g>0,trigger_rate:n.length>0?g/n.length:null,skill_breakdown:u}}async function k(e,t,A){let r=e.query?await m(t,e.query,A??e.user??null):void 0,s=w(t,e),n=await R(e,r,A??e.user??null),l=e.task_id||e.upload_id||"",g=null;if(l)try{let e=await i.db.findExecutionMatch(l);e&&(g={matchJson:e.matchJson??null,matchedAt:e.matchedAt??null,mode:e.mode??null})}catch{g=null}return{...e,routing_evaluation:n,outcome_evaluation:function(e,t,A,r){let s=b(e,A,t),n=(e,t)=>s.map(A=>{let s="context_only";A.is_primary?s="primary":A.is_invoked?s="invoked":A.is_expected&&(s="expected_only");let n=r?.status==="available"?r.skill_breakdown.find(e=>e.skill===A.skill)?.status||"not_applicable":"missing_dataset";return{skill:A.skill,version:A.invoked_version??A.primary_version??A.expected_version??null,role:s,is_primary:A.is_primary,is_invoked:A.is_invoked,is_expected:A.is_expected,routing_status:n,shares_execution_outcome:!0,score:e,is_correct:t}});if(!t)return{status:"missing",is_correct:null,score:null,reason:e.judgment_reason||v,standard_answer_present:!1,root_cause_count:0,key_action_count:0,skill_breakdown:n(null,null)};let i="结果评估中..."===e.judgment_reason?"pending":"available",l="pending"===i?null:e.answer_score??null,g="pending"===i?null:e.is_answer_correct??null;return{status:i,matched_config_id:t.id,matched_query:(0,a.normalizeConfigQuery)(t.query)||void 0,matched_skill:(0,a.normalizeConfigSkillName)(t.skill)||void 0,matched_skill_version:t.skillVersion??null,dataset_type:(0,o.normalizeConfigDatasetType)(t.dataset_type),is_correct:g,score:l,reason:e.judgment_reason||void 0,standard_answer_present:!!t.standard_answer,root_cause_count:t.root_causes?.length??0,key_action_count:t.key_actions?.length??0,skill_breakdown:n(l,g)}}(e,s,r,n),execution_match:g}}let x=s.default.join(process.cwd(),"data"),Y=s.default.join(x,"evaluation_result.json"),H="1"===process.env.AUDIT_DATA_MUTATIONS||"true"===process.env.AUDIT_DATA_MUTATIONS;async function F(e,t="any"){let A={};e&&(A.OR=[{user:e},{user:null}]);let r=(await i.db.findConfigs(A)).map(e=>{let t=(t,A)=>{if(t)try{return JSON.parse(t)}catch(t){console.error(`[readConfig] Failed to parse ${A} for config ${e.id}:`,t);return}};return{id:e.id,query:e.query??null,dataset_type:(0,o.normalizeConfigDatasetType)(e.datasetType),skill:e.skill,skillVersion:e.skillVersion,routing_intent:e.routingIntent||void 0,routing_anchors:t(e.routingAnchors,"routingAnchors"),expectedSkills:(0,o.normalizeExpectedSkills)(t(e.expectedSkills,"expectedSkills")),standard_answer:e.standardAnswer||"",root_causes:t(e.rootCauses,"rootCauses"),key_actions:t(e.keyActions,"keyActions"),extractedKeyActions:t(e.extractedKeyActions,"extractedKeyActions"),parse_status:e.parseStatus||"completed"}});return"any"===t?r:r.filter(e=>(0,o.configSupportsDatasetType)(e.dataset_type,t))}async function U(e){var t,A,s,o;let l,E=e.upload_id||e.task_id||crypto.randomUUID();if(e.task_id)try{let t={taskId:e.task_id};e.framework&&(t.framework=e.framework);let A=await i.db.findExecutions(t,{timestamp:"desc"});if(A&&A.length>0&&A[0]?.id){let t=A.find(t=>t.id===e.task_id),r=t&&t.id?t.id:A[0].id;r!==E&&(E=r)}}catch{}let C=null,S=await i.db.findExecutionById(E);S&&(C={...S,upload_id:S.id,task_id:S.taskId||void 0,query:S.query||void 0,framework:S.framework||void 0,tokens:S.tokens??void 0,cost:S.cost??void 0,latency:S.latency??void 0,timestamp:S.timestamp?.toISOString?.()||S.timestamp,final_result:S.finalResult||void 0,skill:S.skill||void 0,skills:S.skills?JSON.parse(S.skills):void 0,invokedSkills:S.invokedSkills?(()=>{try{return JSON.parse(S.invokedSkills)}catch{return}})():void 0,is_skill_correct:S.isSkillCorrect??!1,is_answer_correct:S.isAnswerCorrect??null,answer_score:S.answerScore??void 0,skill_score:S.skillScore??void 0,judgment_reason:S.judgmentReason||void 0,failures:S.failures?JSON.parse(S.failures):void 0,skill_issues:S.skillIssues?JSON.parse(S.skillIssues):void 0,label:S.label||void 0,user:S.user||void 0,skill_version:S.skillVersion??void 0,expected_skill_version:S.expectedSkillVersion??null,skill_trigger_rate:S.skillTriggerRate??null,model:S.model||void 0,tool_call_count:S.toolCallCount??void 0,llm_call_count:S.llmCallCount??void 0,input_tokens:S.inputTokens??void 0,output_tokens:S.outputTokens??void 0,tool_call_error_count:S.toolCallErrorCount??void 0,cache_read_input_tokens:S.cacheReadInputTokens??void 0,cache_creation_input_tokens:S.cacheCreationInputTokens??void 0,max_single_call_tokens:S.maxSingleCallTokens??void 0});let b=C?{...C}:{},R=!!C;R||b.timestamp||e.timestamp?e.timestamp&&(b.timestamp=e.timestamp):b.timestamp=new Date().toISOString();let U=!!e.force_query_update,T="string"==typeof C?.query?C.query.trim():"",L="string"==typeof e.query?e.query.trim():"",x=!1;if("string"==typeof e.label){let t=(0,u.parseLabelSkillVersionBinding)(e.label);t&&(e.skill=t.skill,e.skill_version=t.skill_version,e.skills=t.skills,e.invokedSkills=t.invokedSkills,x=!0)}b={...b,...e};let G=function(e){let{isUpdate:t,existingSkillVersion:A,incomingSkillVersion:r,explicitRewrite:s}=e;return!t||null==A||s?{resolved:r,blocked:!1}:r===A?{resolved:A,blocked:!1}:{resolved:A,blocked:!0}}({isUpdate:R,existingSkillVersion:C?.skill_version??null,incomingSkillVersion:b.skill_version??null,explicitRewrite:x});if(G.blocked&&console.warn(`[Data-Service] Preserving existing skill_version for execution ${E}: existing=${C?.skill_version}, incoming=${b.skill_version} blocked. Skill version is immutable history; only NULL → value or explicit label-binding rewrite is allowed.`),b.skill_version=G.resolved??void 0,!b.agentName&&b.agent&&(b.agentName=b.agent),T&&!U?b.query=T:!T&&L?b.query=L:"string"!=typeof b.query||b.query.trim()?"string"==typeof b.query&&(b.query=b.query.trim()):b.query=void 0,!b.upload_id&&b.task_id&&(b.upload_id=b.task_id),!b.task_id&&b.upload_id&&(b.task_id=b.upload_id),b.upload_id=E,(!b.label||!b.model||!b.user)&&b.task_id){let e=await i.db.findSessionByTaskId(b.task_id);e&&(!b.label&&e.label&&(b.label=e.label),!b.model&&e.model&&(b.model=e.model),!b.user&&e.user&&(b.user=e.user))}if(!b.user)try{let e=i.db.getClient();if("query"in e){let t=await e.query('SELECT username FROM "User" LIMIT 1');t.rows[0]&&(b.user=t.rows[0].username,console.log(`[Data-Service] Fallback resolved user for task ${b.task_id} to: ${b.user}`))}}catch(e){console.warn("[Data-Service] Fallback user lookup failed:",e)}let O=e.Token||e.token||e.tokens;void 0!==O&&(b.tokens=Number(O)),void 0!==e.tool_call_count&&(b.tool_call_count=Number(e.tool_call_count)),void 0!==e.llm_call_count&&(b.llm_call_count=Number(e.llm_call_count)),void 0!==e.input_tokens&&(b.input_tokens=Number(e.input_tokens)),void 0!==e.output_tokens&&(b.output_tokens=Number(e.output_tokens)),void 0!==e.tool_call_error_count&&(b.tool_call_error_count=Number(e.tool_call_error_count)),void 0!==e.cache_read_input_tokens&&(b.cache_read_input_tokens=Number(e.cache_read_input_tokens)),void 0!==e.cache_creation_input_tokens&&(b.cache_creation_input_tokens=Number(e.cache_creation_input_tokens)),void 0!==e.max_single_call_tokens&&(b.max_single_call_tokens=Number(e.max_single_call_tokens)),void 0!==e.reasoning_tokens&&(b.reasoning_tokens=Number(e.reasoning_tokens));let V=null;if(b.task_id&&b.interactions){let e=(0,d.getAdapter)(b.framework),t=t=>e.normalizeForStorage?.(t)??t,A="string"==typeof b.interactions?(()=>{try{return JSON.parse(b.interactions)}catch{return[]}})():b.interactions;V=A=t(A);try{let e=await i.db.findSessionByTaskId(b.task_id),r=e?.interactions?(()=>{try{return JSON.parse(e.interactions)}catch{return[]}})():[];r=t(r),Array.isArray(r)&&r.length>0&&(V=(0,Q.mergeSessionInteractionsMonotonic)(r,A))}catch{}if(V=t(V),b.interactions=V,"opencode"===b.framework&&Array.isArray(V)){let e=(0,g.deriveOpencodeExecutionFields)(V);e.model&&(b.model=e.model),e.final_result&&(b.final_result=e.final_result),e.agentName&&!b.agentName&&(b.agentName=e.agentName),b.tokens=e.tokens,b.latency=e.latency,b.input_tokens=e.input_tokens,b.output_tokens=e.output_tokens,b.tool_call_count=e.tool_call_count,b.tool_call_error_count=e.tool_call_error_count,b.llm_call_count=e.llm_call_count,b.cache_read_input_tokens=e.cache_read_input_tokens,b.cache_creation_input_tokens=e.cache_creation_input_tokens,b.max_single_call_tokens=e.max_single_call_tokens,b.reasoning_tokens=e.reasoning_tokens}}let J=!1,P=b.is_answer_correct||!1,W=b.judgment_reason||v;b.skill_trigger_rate=null;let q=await F(b.user);if(q.length>0){let A=await m(q,b.query,b.user),r=w(q,b);if(A){let e=Array.isArray(b.invokedSkills)?b.invokedSkills:[],t=(Array.isArray(b.skills)?b.skills:[]).map(e=>({name:e,version:null})),r=D(A);if(r.length>0){let A=e.length>0?e:t;if(A.length>0){let e=0,t=r.filter(e=>e.skill?.trim()),s=t.map(e=>e.skill.trim()),n=new Map;if(s.length>0)try{for(let e of(await i.db.findSkills({name:{in:s},user:b.user||null})))n.set(e.name,e)}catch(e){console.error("[Judgment] Error fetching skills for version check:",e)}for(let r of t){let t=r.skill.trim(),s=r.version??null,i=A.find(e=>e.name===t);if(i){let A=!1;if(null===s)A=!0;else if(null!==i.version)A=i.version===s;else{let e=n.get(t);A=!!e&&(e.activeVersion||0)===s}A&&(e++,J||(J=!0))}}t.length>0&&(b.skill_trigger_rate=e/t.length)}}b.is_skill_correct=J}if(r){if(await N(r,b.user),void 0!==b.final_result){let s=!0;if(R&&!e.force_judgment&&C&&C.query===b.query&&C.final_result===b.final_result&&(s=!1),e.skip_internal_judgment&&(s=!1),s&&!b.skip_evaluation){let e,s=(b.skill||r.skill||A?.skill||"").trim();if(s)try{let t=await i.db.findSkill(s,b.user||null);if(t){let A=r.skillVersion??b.skill_version??t.activeVersion??0,s=t.versions?.find(e=>e.version===A);if(s&&s.content)e=s.content,(void 0===b.skill_version||null===b.skill_version)&&(b.skill_version=s.version);else if(t.versions&&t.versions.length>0){let A=t.versions[0];A&&A.content&&(e=A.content,(void 0===b.skill_version||null===b.skill_version)&&(b.skill_version=A.version))}}}catch(e){console.error("[Judgment] Error fetching skill definition:",e)}let o=null;try{let e=await i.db.findExecutionMatch(b.task_id||b.upload_id||"");e?.extractedSteps&&(o="string"==typeof e.extractedSteps?JSON.parse(e.extractedSteps):e.extractedSteps)}catch(e){console.warn("[Judgment] Failed to load execution steps for KA evaluation:",e)}let l=await (0,n.judgeAnswer)((t=b,(0,a.getConfigSubjectLabel)({query:t.query,skill:t.skill||r?.skill||null,skillVersion:t.skill_version??r?.skillVersion??null},"Skill execution benchmark")),{standard_answer_example:r.standard_answer,root_causes:r.root_causes,key_actions:r.key_actions,skill_definition:e},b.final_result,b.user,o);P=l.is_correct,b.answer_score=l.score,W=l.reason||"Judged by Evaluation Model"}}}else(!R||e.force_judgment)&&(P=!1,W=v,b.answer_score=null)}e.skip_evaluation&&(b.answer_score=null,P=!1,W="结果评估中..."),b.is_skill_correct=J,b.is_answer_correct=P,b.judgment_reason=W,b=await k(b,q,b.user);let j=Array.isArray(b.skills)&&b.skills.length>0?b.skills[0]:void 0;if(j){let e=function(){if(!r.default.existsSync(Y))return{};try{return JSON.parse(r.default.readFileSync(Y,"utf-8"))}catch{return{}}}()[j];e&&(b.skill_score=parseFloat(e))}if(b.label=(0,c.chooseExecutionLabel)({existingLabel:C?.label,incomingLabel:e.label,skill:b.skill,skillVersion:b.skill_version??null}),b.framework){let e=b.framework,t=b.user||null,A=(0,h.extractObservedAgentRegistrations)(V,b.agentName);try{for(let r of A){let A=await i.prisma.registeredAgent.findFirst({where:{platform:e,name:r.name,user:t}});A||(A=await i.prisma.registeredAgent.create({data:{platform:e,name:r.name,user:t,agentOwnership:"user",agentType:"main"===r.agentType?b.agentType||"main":"subagent"}})),"main"===r.agentType&&r.name===b.agentName&&(l=A.id)}}catch(e){console.error("[Data-Service] Failed to query or create RegisteredAgent:",e)}}let K=Array.isArray(V)&&V.length>0?JSON.stringify((0,h.extractObservedAgentNames)(V)):null;if(await i.db.upsertExecution({where:{id:E},create:{id:E,taskId:b.task_id,query:b.query,framework:b.framework,tokens:b.tokens,cost:b.cost,latency:b.latency,timestamp:b.timestamp?new Date(b.timestamp):new Date,finalResult:b.final_result,skill:b.skill,skills:b.skills?JSON.stringify(b.skills):null,invokedSkills:b.invokedSkills?JSON.stringify(b.invokedSkills):null,isSkillCorrect:b.is_skill_correct,isAnswerCorrect:b.is_answer_correct,answerScore:b.answer_score,skillScore:b.skill_score,judgmentReason:b.judgment_reason,failures:b.failures?JSON.stringify(b.failures):null,skillIssues:b.skill_issues?JSON.stringify(b.skill_issues):null,label:b.label,user:b.user,agentName:b.agentName,agentId:l,skillVersion:b.skill_version,model:b.model,toolCallCount:b.tool_call_count,llmCallCount:b.llm_call_count,inputTokens:b.input_tokens,outputTokens:b.output_tokens,toolCallErrorCount:b.tool_call_error_count,skillTriggerRate:b.skill_trigger_rate,cacheReadInputTokens:b.cache_read_input_tokens,cacheCreationInputTokens:b.cache_creation_input_tokens,maxSingleCallTokens:b.max_single_call_tokens,reasoningTokens:b.reasoning_tokens,observedAgents:K},update:{taskId:b.task_id,query:b.query,framework:b.framework,tokens:b.tokens,cost:b.cost,latency:b.latency,timestamp:b.timestamp?new Date(b.timestamp):new Date,finalResult:b.final_result,skill:b.skill,skills:b.skills?JSON.stringify(b.skills):null,invokedSkills:b.invokedSkills?JSON.stringify(b.invokedSkills):null,isSkillCorrect:b.is_skill_correct,isAnswerCorrect:b.is_answer_correct,answerScore:b.answer_score,skillScore:b.skill_score,judgmentReason:b.judgment_reason,failures:b.failures?JSON.stringify(b.failures):null,skillIssues:b.skill_issues?JSON.stringify(b.skill_issues):null,label:b.label,user:b.user,agentName:b.agentName,agentId:l,skillVersion:b.skill_version,model:b.model,toolCallCount:b.tool_call_count,llmCallCount:b.llm_call_count,inputTokens:b.input_tokens,outputTokens:b.output_tokens,toolCallErrorCount:b.tool_call_error_count,skillTriggerRate:b.skill_trigger_rate,cacheReadInputTokens:b.cache_read_input_tokens,cacheCreationInputTokens:b.cache_creation_input_tokens,maxSingleCallTokens:b.max_single_call_tokens,reasoningTokens:b.reasoning_tokens,observedAgents:K}}),e.upload_id&&e.task_id&&e.upload_id!==E)try{let t=await i.db.findExecutionById(e.upload_id);t&&t.taskId===e.task_id&&(H&&console.warn(`[Data-Audit] deleteExecution (dedup on save): upload_id=${e.upload_id} task_id=${e.task_id} recordId=${E}`),await i.db.deleteExecution(e.upload_id))}catch{}if(_)try{let e=Array.isArray(V)&&V.length>0,t=(A=x?Array.isArray(b.invokedSkills)?b.invokedSkills:[]:e?function(e,t){if(!Array.isArray(t)||0===t.length)return[];if("opencode"===e){let e=(0,I.buildAgentCallTree)(t);return e?f(e):[]}return function(e,t){if(!Array.isArray(t))return null;let A=(0,B.normalizeInteractions)(t);return(0,d.getAdapter)(e).extractSkills?.(A)??null}(e,t)??[]}(b.framework,V):Array.isArray(b.invokedSkills)?b.invokedSkills:[],s=b.skill??null,o=b.skill_version??null,s&&"number"==typeof o?A.map(e=>e.name===s&&null==e.version?{...e,version:o}:e):A),r=await p(t,b.user);await y(E,r,{user:b.user,primaryName:b.skill??null})}catch(e){console.warn(`[Data-Service] root ExecutionSkill persist failed for ${E}:`,e)}if("opencode"===b.framework&&b.task_id&&Array.isArray(V))try{await M({parentExecutionId:E,parentTaskId:b.task_id,parentFramework:b.framework,parentUser:b.user,interactions:V})}catch(e){console.warn(`[Data-Service] deriveSubagentExecutions failed for parent=${E}:`,e)}return b.task_id&&V&&(await i.db.upsertSession(b.task_id,{taskId:b.task_id,query:b.query,label:b.label,user:b.user,model:b.model,interactions:JSON.stringify(V)},{query:b.query,label:b.label,user:b.user,model:b.model,interactions:JSON.stringify(V)}),"opencode"===b.framework&&!0===b.opencode_cli_completed&&await i.db.updateSession(b.task_id,{endTime:new Date})),{success:!0,record:b}}async function M(e){let{parentExecutionId:t,parentTaskId:A,parentFramework:r,parentUser:s,interactions:n}=e;if(!Array.isArray(n)||0===n.length)return;let o=(0,I.buildAgentCallTree)(n);if(!o)return void await T(t,new Set);let a=[],l=new Set;if((0,I.walkTree)(o,e=>{if(!e||0===e.depth)return;let t="string"==typeof e.sessionId?e.sessionId.trim():"";!t||t===A||l.has(t)||(l.add(t),a.push({node:e,sessionId:t,parentNodeId:e.parentId}))}),0===a.length)return;a.sort((e,t)=>e.node.depth-t.node.depth);let g=new Map;g.set(o.id,t);let c=new Set;for(let e of a){let{node:A,sessionId:o,parentNodeId:a}=e,l=g.get(a)??t,u=`${l}__sub__${o}`;g.set(A.id,u),c.add(u);let E=new Set,Q=[],I=e=>{for(let t of e.interactionIndices||[])E.add(t);for(let t of(Array.isArray(e.systemPrompts)&&e.systemPrompts.length>0&&e.sessionId&&Q.push({sessionId:e.sessionId,entries:e.systemPrompts}),e.children||[]))I(t)};I(A);let d=[...E].sort((e,t)=>e-t).map(e=>n[e]).filter(Boolean),B=[];for(let e of Q)for(let t of e.entries)B.push({role:"system",content:t.text,subagent_session_id:e.sessionId,system_prompt_sha256:t.sha256,system_prompt_length:t.length,system_prompt_modelID:t.modelID,system_prompt_providerID:t.providerID});let C=[...B,...d],m=(()=>{for(let e of d){let t="string"==typeof e?.content?e.content.trim():"";if(t)return t.slice(0,500)}return A.agentName||o})(),w=A.startedAt?new Date(A.startedAt):new Date,D={taskId:o,framework:r,timestamp:w,agentName:A.agentName??null,user:s??null,query:m,parentExecutionId:l,rootExecutionId:t,agentSessionId:o,subagentType:A.subagentType??null,subagentName:A.agentName??null,isSubagent:!0,observedAgents:JSON.stringify((0,h.extractObservedAgentNames)(C))};try{await i.db.upsertExecution({where:{id:u},create:{id:u,...D},update:{...D}})}catch(e){console.warn(`[Data-Service] upsertExecution(sub) failed sub=${o}:`,e);continue}if(_)try{let e=await p(f(A),s);await y(u,e,{user:s??null})}catch(e){console.warn(`[Data-Service] sub ExecutionSkill persist failed sub=${o}:`,e)}try{await i.db.upsertSession(o,{taskId:o,label:A.agentName??null,user:s??null,query:m,interactions:JSON.stringify(C)},{label:A.agentName??null,user:s??null,query:m,interactions:JSON.stringify(C)})}catch(e){console.warn(`[Data-Service] upsertSession(sub) failed sub=${o}:`,e)}}await T(t,c)}async function T(e,t){try{for(let A of(await i.db.findExecutions({rootExecutionId:e,isSubagent:!0},{timestamp:"desc"})))if(!(!A?.id||t.has(A.id)))try{await i.db.deleteExecution(A.id)}catch(e){console.warn(`[Data-Service] sweepStaleSubagents: deleteExecution(${A.id}) failed:`,e)}}catch(t){console.warn(`[Data-Service] sweepStaleSubagents query failed root=${e}:`,t)}}process.env.READ_RECORDS_HYDRATE_BATCH_SIZE,e.s(["saveExecutionRecord",()=>U]),A()}catch(e){A(e)}},!1)];
|
|
369
369
|
|
|
370
370
|
//# sourceMappingURL=_7ecc72d5._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[586509,e=>e.a(async(t,r)=>{try{var a=e.i(89171),n=e.i(854763),s=e.i(374995),l=e.i(581178),i=e.i(243080),o=t([n]);function u(e,t){if(!e)return t;try{return JSON.parse(e)}catch{return t}}function d(e,t){let r=Array.isArray(e.selectedEvaluators)?e.selectedEvaluators:[];return 0===r.length?"preset-agent-trace-quality"===t:r.includes(t)}function c(e){let t=u(e.rawAnalysisJson,{});return"done"===e.status&&"string"==typeof t.resultEvaluationError&&t.resultEvaluationError.trim()?"failed":e.status}async function p(e){try{let{searchParams:t}=new URL(e.url),r={};try{r=await e.json()}catch{}let s=e=>String(r[e]??t.get(e)??"").trim(),l=s("user"),i=s("runId");if(!l)return a.NextResponse.json({error:"user is required"},{status:400});if(!i)return a.NextResponse.json({error:"runId is required"},{status:400});let o=await n.prismaRaw.trajectoryEvalResult.findMany({where:{user:l,evaluatorRunId:i},select:{id:!0,status:!0}});if(0===o.length)return a.NextResponse.json({deletedResults:0,deletedEvaluations:0,deletedSkillIssues:0});if(o.some(e=>"pending"===e.status||"running"===e.status))return a.NextResponse.json({error:"评测进行中,暂时不能删除该批次;请等待完成后再删除。"},{status:409});let u=await n.prismaRaw.evaluation.findMany({where:{user:l,type:"dynamic",runId:i},select:{id:!0}}),d=u.length>0?await n.prismaRaw.skillIssue.count({where:{evaluationId:{in:u.map(e=>e.id)}}}):0,[c,p]=await n.prismaRaw.$transaction([n.prismaRaw.evaluation.deleteMany({where:{user:l,type:"dynamic",runId:i}}),n.prismaRaw.trajectoryEvalResult.deleteMany({where:{user:l,evaluatorRunId:i}})]);return a.NextResponse.json({deletedResults:p.count,deletedEvaluations:c.count,deletedSkillIssues:d})}catch(e){return console.error("trajectory/runs DELETE error:",e),a.NextResponse.json({error:e instanceof Error?e.message:"failed to delete run"},{status:500})}}async function h(e){try{let{searchParams:t}=new URL(e.url),r=(t.get("user")||"").trim();if(!r)return a.NextResponse.json({error:"user is required"},{status:400});let o=Math.min(Math.max(Number(t.get("limit")||"10"),1),50),p=Math.max(Number(t.get("offset")||"0"),0),h="1"===t.get("autoWatchOnly")||"true"===t.get("autoWatchOnly"),f="1"===t.get("excludeGrayscale")||"true"===t.get("excludeGrayscale"),g=(t.get("includeRunId")||"").trim(),y="1"===t.get("latestByCase")||"true"===t.get("latestByCase"),m=h||f,w=m?Math.max(8*o,50):o+1,R=await n.prismaRaw.trajectoryEvalResult.groupBy({by:["evaluatorRunId"],where:{user:r},_min:{createdAt:!0},orderBy:{_min:{createdAt:"desc"}},skip:p,take:w}),v=R.map(e=>e.evaluatorRunId).filter(e=>!!e);g&&!v.includes(g)&&v.push(g);let E=v.length>0?await n.prismaRaw.trajectoryEvalResult.findMany({where:{user:r,evaluatorRunId:{in:v}},orderBy:{createdAt:"desc"}}):[],A=new Map;for(let e of E){let t=A.get(e.evaluatorRunId)||[];t.push(e),A.set(e.evaluatorRunId,t)}let x=Array.from(new Set(E.flatMap(e=>[e.taskId,e.executionId].filter(Boolean)))),N=x.length>0?await n.prismaRaw.execution.findMany({where:{OR:[{taskId:{in:x}},{id:{in:x}}]},select:{id:!0,taskId:!0,agentName:!0,skill:!0,skillVersion:!0}}):[],I=new Map,k=new Map;for(let e of N){let t=String(e.agentName||"").trim();t&&(I.set(e.id,t),e.taskId&&I.set(e.taskId,t));let r=String(e.skill||"").trim();if(r){let t="number"==typeof e.skillVersion?e.skillVersion:null;k.set(e.id,{skill:r,version:t}),e.taskId&&k.set(e.taskId,{skill:r,version:t})}}for(let e of x.length>0?await n.prismaRaw.session.findMany({where:{taskId:{in:x}},select:{taskId:!0,interactions:!0}}):[])if(!(!e.interactions||I.has(e.taskId)))try{let t=JSON.parse(e.interactions);if(!Array.isArray(t))continue;let r=(0,i.getPrimaryObservedAgentName)(t);r&&I.set(e.taskId,r)}catch{}let C=v.map(e=>{let t,r,a=A.get(e)||[],n=a.filter(e=>{let t=u(e.rawAnalysisJson,{});return!0!==t.watchPlaceholder}),i=y?(0,l.selectLatestDatasetCaseResults)(n):n,o=a[0];if(!o)return null;let p=u(o.rawAnalysisJson,{}),f=a.some(e=>{let t=u(e.rawAnalysisJson,{});return!0===t.autoWatch});if(h&&!f)return null;let g=a.map(e=>e.createdAt.getTime()).reduce((e,t)=>Math.min(e,t),1/0),m=new Map;for(let e of i){let t=I.get(e.taskId||"")||I.get(e.executionId||"");t&&m.set(t,(m.get(t)||0)+1)}let w=Array.from(m.entries()).sort((e,t)=>t[1]-e[1])[0]?.[0]||"",R=new Map;for(let e of i){let t=k.get(e.taskId||"")||k.get(e.executionId||"");if(!t)continue;let r=`${t.skill}\0${t.version??""}`,a=R.get(r);a?a.count+=1:R.set(r,{skill:t.skill,version:t.version,count:1})}let v=Array.from(R.values()).sort((e,t)=>t.count-e.count)[0]||null,E=v?.skill||"",x=v?.version??null,N=(0,s.extractTrajectoryTaskMeta)(o.rawAnalysisJson,new Date(g)),C=i.filter(e=>"done"===c(e)),b=C.map(e=>{let t=u(e.rawAnalysisJson,{}),r=d(t,"preset-agent-trace-quality")?e.trajectoryScore:null,a=d(t,"preset-agent-task-completion")?function(e){let t=u(e,null);for(let e of[t?.resultEvaluation?.score,t?.score])if("number"==typeof e&&!Number.isNaN(e))return e;return null}(e.rawAnalysisJson):null,n=d(t,"preset-agent-trace-quality"),s=d(t,"preset-agent-task-completion");return n&&("number"!=typeof r||Number.isNaN(r))||s&&("number"!=typeof a||Number.isNaN(a))?null:"number"==typeof r&&"number"==typeof a?(r+a)/2:r??a??null}).filter(e=>"number"==typeof e);return{runId:e,datasetId:o.datasetId,taskTitle:N.title,taskDescription:N.description,evaluatorIds:(t=Array.from(new Set(a.flatMap(e=>{let t=u(e.rawAnalysisJson,{});return Array.isArray(t.selectedEvaluators)?t.selectedEvaluators.filter(e=>"string"==typeof e):[]})))).length>0?t:["preset-agent-trace-quality"],executionAgent:w||("string"==typeof p.watchedAgent?p.watchedAgent:""),skillName:E,skillVersion:x,autoWatch:f,watchedAgent:"string"==typeof p.watchedAgent?p.watchedAgent:"",traceCount:i.length,doneCount:C.length,runningCount:i.filter(e=>{let t=c(e);return"pending"===t||"running"===t}).length,failedCount:i.filter(e=>"failed"===c(e)).length,avgScore:b.length>0?b.reduce((e,t)=>e+t,0)/b.length:null,createdAt:new Date(g).toISOString(),evaluatorName:(r=Array.from(new Set(a.flatMap(e=>{let t=u(e.rawAnalysisJson,{});return Array.isArray(t.selectedEvaluatorNames)?t.selectedEvaluatorNames.filter(e=>"string"==typeof e):[]})))).length>0?r.join("、"):"Agent 轨迹质量",source:a.some(e=>{let t=u(e.rawAnalysisJson,{});return null!=t.grayscaleBinding})?"grayscale-ab":"standalone"}}).filter(e=>!!e).sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()),b=f?C.filter(e=>"grayscale-ab"!==e.source):C,M=b.slice(0,o),T=g?b.findIndex(e=>e.runId===g):-1,S=T>=o?Math.max(0,Math.min(T-Math.floor(o/2),b.length-o)):0,j=T>=o?b.slice(S,S+o):M,O=b.length>o||(m?R.length===w:R.length>o),P=O?m&&b.length<=o?p+R.length:p+(T>=o?S+o:o):null;return a.NextResponse.json({runs:j,nextOffset:P,hasMore:O})}catch(e){return console.error("trajectory/runs GET error:",e),a.NextResponse.json({error:e instanceof Error?e.message:"failed to load runs"},{status:500})}}[n]=o.then?(await o)():o,e.s(["DELETE",()=>p,"GET",()=>h,"dynamic",0,"force-dynamic"]),r()}catch(e){r(e)}},!1),194409,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),l=e.i(759756),i=e.i(561916),o=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),g=e.i(570101),y=e.i(626937),m=e.i(10372),w=e.i(193695);e.i(52474);var R=e.i(600220),v=e.i(586509),E=t([v]);[v]=E.then?(await E)():E;let N=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/eval/trajectory/runs/route",pathname:"/api/eval/trajectory/runs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/eval/trajectory/runs/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:I,workUnitAsyncStorage:k,serverHooks:C}=N;function A(){return(0,s.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:k})}async function x(e,t,r){N.isDev&&(0,l.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/eval/trajectory/runs/route";a=a.replace(/\/index$/,"")||"/";let s=await N.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:E,nextConfig:A,parsedUrl:x,isDraftMode:I,prerenderManifest:k,routerServerContext:C,isOnDemandRevalidate:b,revalidateOnlyGenerated:M,resolvedPathname:T,clientReferenceManifest:S,serverActionsManifest:j}=s,O=(0,u.normalizeAppPath)(a),P=!!(k.dynamicRoutes[O]||k.routes[T]),_=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,x,!1):t.end("This page could not be found"),null);if(P&&!I){let e=!!k.routes[T],t=k.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await _();throw new w.NoFallbackError}}let q=null;!P||N.isDev||I||(q=T,q="/index"===q?"/":q);let D=!0===N.isDev||!P,U=P&&!D;j&&S&&(0,o.setManifestsSingleton)({page:a,clientReferenceManifest:S,serverActionsManifest:j});let H=e.method||"GET",B=(0,i.getTracer)(),J=B.getActiveScopeSpan(),$={params:E,prerenderManifest:k,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,l.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,C)},sharedContext:{buildId:v}},L=new d.NodeNextRequest(e),F=new d.NodeNextResponse(t),K=c.NextRequestAdapter.fromNodeNextRequest(L,(0,c.signalFromNodeResponse)(t));try{let s=async e=>N.handle(K,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),o=!!(0,l.getRequestMeta)(e,"minimalMode"),u=async l=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!o&&b&&M&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(l);e.fetchMetrics=$.renderOpts.fetchMetrics;let i=$.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=$.renderOpts.collectedTags;if(!P)return await (0,f.sendResponse)(L,F,a,$.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:b})},!1,C),t}},c=await N.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:M,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:o});if(!P)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",b?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return o&&P||p.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(L,F,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};J?await u(J):await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:b})},!1,C),P)throw t;return await (0,f.sendResponse)(L,F,new Response(null,{status:500})),null}}e.s(["handler",()=>x,"patchFetch",()=>A,"routeModule",()=>N,"serverHooks",()=>C,"workAsyncStorage",()=>I,"workUnitAsyncStorage",()=>k]),r()}catch(e){r(e)}},!1)];
|
|
1
|
+
module.exports=[586509,e=>e.a(async(t,r)=>{try{var a=e.i(89171),n=e.i(854763),s=e.i(374995),l=e.i(581178),i=e.i(243080),o=t([n]);function u(e,t){if(!e)return t;try{return JSON.parse(e)}catch{return t}}function d(e,t){let r=Array.isArray(e.selectedEvaluators)?e.selectedEvaluators:[];return 0===r.length?"preset-agent-trace-quality"===t:r.includes(t)}function c(e){let t=u(e.rawAnalysisJson,{});return"done"===e.status&&"string"==typeof t.resultEvaluationError&&t.resultEvaluationError.trim()?"failed":e.status}async function p(e){try{let{searchParams:t}=new URL(e.url),r={};try{r=await e.json()}catch{}let s=e=>String(r[e]??t.get(e)??"").trim(),l=s("user"),i=s("runId");if(!l)return a.NextResponse.json({error:"user is required"},{status:400});if(!i)return a.NextResponse.json({error:"runId is required"},{status:400});let o=await n.prismaRaw.trajectoryEvalResult.findMany({where:{user:l,evaluatorRunId:i},select:{id:!0,status:!0}});if(0===o.length)return a.NextResponse.json({deletedResults:0,deletedEvaluations:0,deletedSkillIssues:0});if(o.some(e=>"pending"===e.status||"running"===e.status))return a.NextResponse.json({error:"评测进行中,暂时不能删除该批次;请等待完成后再删除。"},{status:409});let u=await n.prismaRaw.evaluation.findMany({where:{user:l,type:"dynamic",runId:i},select:{id:!0}}),d=u.length>0?await n.prismaRaw.skillIssue.count({where:{evaluationId:{in:u.map(e=>e.id)}}}):0,[c,p]=await n.prismaRaw.$transaction([n.prismaRaw.evaluation.deleteMany({where:{user:l,type:"dynamic",runId:i}}),n.prismaRaw.trajectoryEvalResult.deleteMany({where:{user:l,evaluatorRunId:i}})]);return a.NextResponse.json({deletedResults:p.count,deletedEvaluations:c.count,deletedSkillIssues:d})}catch(e){return console.error("trajectory/runs DELETE error:",e),a.NextResponse.json({error:e instanceof Error?e.message:"failed to delete run"},{status:500})}}async function h(e){try{let{searchParams:t}=new URL(e.url),r=(t.get("user")||"").trim();if(!r)return a.NextResponse.json({error:"user is required"},{status:400});let o=Math.min(Math.max(Number(t.get("limit")||"10"),1),50),p=Math.max(Number(t.get("offset")||"0"),0),h="1"===t.get("autoWatchOnly")||"true"===t.get("autoWatchOnly"),g="1"===t.get("excludeGrayscale")||"true"===t.get("excludeGrayscale"),f=(t.get("includeRunId")||"").trim(),y="1"===t.get("latestByCase")||"true"===t.get("latestByCase"),m=(t.get("scope")||"").trim(),w=(t.get("skillName")||"").trim(),R=t.get("skillVersion"),v=R?Number(R):null,E=h||g||!!m,A=m?Math.max(20*o,500):E?Math.max(8*o,50):o+1,k=await n.prismaRaw.trajectoryEvalResult.groupBy({by:["evaluatorRunId"],where:{user:r},_min:{createdAt:!0},orderBy:{_min:{createdAt:"desc"}},skip:p,take:A}),N=k.map(e=>e.evaluatorRunId).filter(e=>!!e);f&&!N.includes(f)&&N.push(f);let x=N.length>0?await n.prismaRaw.trajectoryEvalResult.findMany({where:{user:r,evaluatorRunId:{in:N}},orderBy:{createdAt:"desc"}}):[],I=new Map;for(let e of x){let t=I.get(e.evaluatorRunId)||[];t.push(e),I.set(e.evaluatorRunId,t)}let C=Array.from(new Set(x.flatMap(e=>[e.taskId,e.executionId].filter(Boolean)))),b=C.length>0?await n.prismaRaw.execution.findMany({where:{OR:[{taskId:{in:C}},{id:{in:C}}]},select:{id:!0,taskId:!0,agentName:!0,skill:!0,skillVersion:!0}}):[],M=new Map,S=new Map;for(let e of b){let t=String(e.agentName||"").trim();t&&(M.set(e.id,t),e.taskId&&M.set(e.taskId,t));let r=String(e.skill||"").trim();if(r){let t="number"==typeof e.skillVersion?e.skillVersion:null;S.set(e.id,{skill:r,version:t}),e.taskId&&S.set(e.taskId,{skill:r,version:t})}}for(let e of C.length>0?await n.prismaRaw.session.findMany({where:{taskId:{in:C}},select:{taskId:!0,interactions:!0}}):[])if(!(!e.interactions||M.has(e.taskId)))try{let t=JSON.parse(e.interactions);if(!Array.isArray(t))continue;let r=(0,i.getPrimaryObservedAgentName)(t);r&&M.set(e.taskId,r)}catch{}let T=N.map(e=>{let t,r,a=I.get(e)||[],n=a.filter(e=>{let t=u(e.rawAnalysisJson,{});return!0!==t.watchPlaceholder}),i=y?(0,l.selectLatestDatasetCaseResults)(n):n,o=a[0];if(!o)return null;let p=u(o.rawAnalysisJson,{}),g=a.some(e=>{let t=u(e.rawAnalysisJson,{});return!0===t.autoWatch});if(h&&!g)return null;let f=a.map(e=>e.createdAt.getTime()).reduce((e,t)=>Math.min(e,t),1/0),m=new Map;for(let e of i){let t=M.get(e.taskId||"")||M.get(e.executionId||"");t&&m.set(t,(m.get(t)||0)+1)}let w=Array.from(m.entries()).sort((e,t)=>t[1]-e[1])[0]?.[0]||"",R=new Map;for(let e of i){let t=S.get(e.taskId||"")||S.get(e.executionId||"");if(!t)continue;let r=`${t.skill}\0${t.version??""}`,a=R.get(r);a?a.count+=1:R.set(r,{skill:t.skill,version:t.version,count:1})}let v=Array.from(R.values()).sort((e,t)=>t.count-e.count)[0]||null,E=(0,s.extractTrajectoryTaskMeta)(o.rawAnalysisJson,new Date(f)),A=E.skillName||v?.skill||"",k=E.skillVersion??v?.version??null,N=i.filter(e=>"done"===c(e)),x=N.map(e=>{let t=u(e.rawAnalysisJson,{}),r=d(t,"preset-agent-trace-quality")?e.trajectoryScore:null,a=d(t,"preset-agent-task-completion")?function(e){let t=u(e,null);for(let e of[t?.resultEvaluation?.score,t?.score])if("number"==typeof e&&!Number.isNaN(e))return e;return null}(e.rawAnalysisJson):null,n=d(t,"preset-agent-trace-quality"),s=d(t,"preset-agent-task-completion");return n&&("number"!=typeof r||Number.isNaN(r))||s&&("number"!=typeof a||Number.isNaN(a))?null:"number"==typeof r&&"number"==typeof a?(r+a)/2:r??a??null}).filter(e=>"number"==typeof e);return{runId:e,datasetId:o.datasetId,taskTitle:E.title,taskDescription:E.description,taskScope:E.scope||"",evaluatorIds:(t=Array.from(new Set(a.flatMap(e=>{let t=u(e.rawAnalysisJson,{});return Array.isArray(t.selectedEvaluators)?t.selectedEvaluators.filter(e=>"string"==typeof e):[]})))).length>0?t:["preset-agent-trace-quality"],executionAgent:w||("string"==typeof p.watchedAgent?p.watchedAgent:""),skillName:A,skillVersion:k,autoWatch:g,watchedAgent:"string"==typeof p.watchedAgent?p.watchedAgent:"",traceCount:i.length,doneCount:N.length,runningCount:i.filter(e=>{let t=c(e);return"pending"===t||"running"===t}).length,failedCount:i.filter(e=>"failed"===c(e)).length,avgScore:x.length>0?x.reduce((e,t)=>e+t,0)/x.length:null,createdAt:new Date(f).toISOString(),evaluatorName:(r=Array.from(new Set(a.flatMap(e=>{let t=u(e.rawAnalysisJson,{});return Array.isArray(t.selectedEvaluatorNames)?t.selectedEvaluatorNames.filter(e=>"string"==typeof e):[]})))).length>0?r.join("、"):"Agent 轨迹质量",source:a.some(e=>{let t=u(e.rawAnalysisJson,{});return null!=t.grayscaleBinding})?"grayscale-ab":"standalone"}}).filter(e=>!!e).sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()),j=g?T.filter(e=>"grayscale-ab"!==e.source):T,O=m?j.filter(e=>!(e.taskScope!==m||"skill-case-analysis"===m&&(!w||e.skillName!==w||R&&Number.isFinite(v)&&e.skillVersion!==v))&&!0):j,P=O.slice(0,o),_=f?O.findIndex(e=>e.runId===f):-1,q=_>=o?Math.max(0,Math.min(_-Math.floor(o/2),O.length-o)):0,D=_>=o?O.slice(q,q+o):P,U=O.length>o||(E?k.length===A:k.length>o),H=U?E&&O.length<=o?p+k.length:p+(_>=o?q+o:o):null;return a.NextResponse.json({runs:D,nextOffset:H,hasMore:U})}catch(e){return console.error("trajectory/runs GET error:",e),a.NextResponse.json({error:e instanceof Error?e.message:"failed to load runs"},{status:500})}}[n]=o.then?(await o)():o,e.s(["DELETE",()=>p,"GET",()=>h,"dynamic",0,"force-dynamic"]),r()}catch(e){r(e)}},!1),194409,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),l=e.i(759756),i=e.i(561916),o=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),g=e.i(666012),f=e.i(570101),y=e.i(626937),m=e.i(10372),w=e.i(193695);e.i(52474);var R=e.i(600220),v=e.i(586509),E=t([v]);[v]=E.then?(await E)():E;let N=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/eval/trajectory/runs/route",pathname:"/api/eval/trajectory/runs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/eval/trajectory/runs/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:x,workUnitAsyncStorage:I,serverHooks:C}=N;function A(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:I})}async function k(e,t,r){N.isDev&&(0,l.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/eval/trajectory/runs/route";a=a.replace(/\/index$/,"")||"/";let s=await N.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:E,nextConfig:A,parsedUrl:k,isDraftMode:x,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:b,revalidateOnlyGenerated:M,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:j}=s,O=(0,u.normalizeAppPath)(a),P=!!(I.dynamicRoutes[O]||I.routes[S]),_=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,k,!1):t.end("This page could not be found"),null);if(P&&!x){let e=!!I.routes[S],t=I.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await _();throw new w.NoFallbackError}}let q=null;!P||N.isDev||x||(q=S,q="/index"===q?"/":q);let D=!0===N.isDev||!P,U=P&&!D;j&&T&&(0,o.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:j});let H=e.method||"GET",B=(0,i.getTracer)(),J=B.getActiveScopeSpan(),$={params:E,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,l.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,C)},sharedContext:{buildId:v}},L=new d.NodeNextRequest(e),V=new d.NodeNextResponse(t),F=c.NextRequestAdapter.fromNodeNextRequest(L,(0,c.signalFromNodeResponse)(t));try{let s=async e=>N.handle(F,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),o=!!(0,l.getRequestMeta)(e,"minimalMode"),u=async l=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!o&&b&&M&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(l);e.fetchMetrics=$.renderOpts.fetchMetrics;let i=$.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=$.renderOpts.collectedTags;if(!P)return await (0,g.sendResponse)(L,V,a,$.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:b})},!1,C),t}},c=await N.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:M,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:o});if(!P)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",b?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return o&&P||p.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(c.cacheControl)),await (0,g.sendResponse)(L,V,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};J?await u(J):await B.withPropagatedContext(e.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:b})},!1,C),P)throw t;return await (0,g.sendResponse)(L,V,new Response(null,{status:500})),null}}e.s(["handler",()=>k,"patchFetch",()=>A,"routeModule",()=>N,"serverHooks",()=>C,"workAsyncStorage",()=>x,"workUnitAsyncStorage",()=>I]),r()}catch(e){r(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_b2cfd29b._.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports=[906920,(e,t,r)=>{"use strict";r.byteLength=function(e){var t=u(e),r=t[0],n=t[1];return(r+n)*3/4-n},r.toByteArray=function(e){var t,r,n=u(e),o=n[0],s=n[1],l=new a((o+s)*3/4-s),c=0,f=s>0?o-4:o;for(r=0;r<f;r+=4)t=i[e.charCodeAt(r)]<<18|i[e.charCodeAt(r+1)]<<12|i[e.charCodeAt(r+2)]<<6|i[e.charCodeAt(r+3)],l[c++]=t>>16&255,l[c++]=t>>8&255,l[c++]=255&t;return 2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,l[c++]=255&t),1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,l[c++]=t>>8&255,l[c++]=255&t),l},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=[],o=0,s=r-i;o<s;o+=16383)a.push(function(e,t,r){for(var i,a=[],o=t;o<r;o+=3)i=(e[o]<<16&0xff0000)+(e[o+1]<<8&65280)+(255&e[o+2]),a.push(n[i>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return a.join("")}(e,o,o+16383>s?s:o+16383));return 1===i?a.push(n[(t=e[r-1])>>2]+n[t<<4&63]+"=="):2===i&&a.push(n[(t=(e[r-2]<<8)+e[r-1])>>10]+n[t>>4&63]+n[t<<2&63]+"="),a.join("")};for(var n=[],i=[],a="u">typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)n[s]=o[s],i[o.charCodeAt(s)]=s;function u(e){var t=e.length;if(t%4>0)throw Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");-1===r&&(r=t);var n=r===t?0:4-r%4;return[r,n]}i[45]=62,i[95]=63},826917,e=>{"use strict";let t=Symbol.for("@witty-insight/evaluation-task-manager"),r=globalThis;r[t]&&2===r[t].version||(r[t]={activeTasks:new Map,version:2});let n=r[t].activeTasks;function i(e,t,r){return`${e}::${t}::${r}`}function a(e,t,r){let a,o=i(e,t,r),s=`run_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,l=n.get(o);return l?(l.status="cancelling",a=l.runId,console.log(`[EvalTask] replaced user=${e} task=${t} source=${r} oldRun=${a} newRun=${s}`)):console.log(`[EvalTask] start user=${e} task=${t} source=${r} run=${s}`),n.set(o,{user:e,taskId:t,source:r,runId:s,status:"running",startedAt:Date.now()}),{runId:s,replacedRunId:a}}function o(e,t,r="rejudge"){let a=i(e,t,r),s=n.get(a);return s&&"running"===s.status?(s.status="cancelling",console.log(`[EvalTask] cancel user=${e} task=${t} source=${r} run=${s.runId}`),{cancelled:!0,runId:s.runId}):(console.log(`[EvalTask] cancel - no active task user=${e} task=${t} source=${r}`),{cancelled:!1})}function s(e,t){return null!==function(e,t){for(let r of n.values())if(r.user===e&&r.taskId===t&&"running"===r.status)return r;return null}(e,t)}class l extends Error{constructor(e="Evaluation cancelled"){super(e),this.name="EvaluationCancelledError"}}function u(e,t,r){for(let i of n.values())if(i.user===e&&i.taskId===t&&i.runId===r){if("running"!==i.status)throw console.log(`[EvalTask] assertActive failed - status=${i.status} user=${e} task=${t} run=${r}`),new l("Evaluation cancelled");return}throw console.log(`[EvalTask] assertActive failed - no matching runId user=${e} task=${t} run=${r}`),new l("Evaluation superseded or already finished")}function c(e,t,r){for(let[i,a]of n.entries())if(a.user===e&&a.taskId===t&&a.runId===r){n.delete(i),console.log(`[EvalTask] finish user=${e} task=${t} source=${a.source} run=${r}`);return}console.log(`[EvalTask] finish - no matching runId user=${e} task=${t} run=${r} (likely already cleaned by HMR or earlier replace)`)}e.s(["EvaluationCancelledError",()=>l,"assertActive",()=>u,"cancel",()=>o,"finish",()=>c,"isActive",()=>s,"startOrReplace",()=>a])},374995,e=>{"use strict";function t(e){return String(e).padStart(2,"0")}function r(e,n=new Date){let i=String(e.title||"").trim(),a=String(e.description||"").trim();return{title:i||function(e=new Date){return`评测执行 ${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}(n),description:a}}function n(e,t=new Date){let i=function(e){if(!e)return null;try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}(e),a=i?.taskMeta&&"object"==typeof i.taskMeta&&!Array.isArray(i.taskMeta)?i.taskMeta:null;return r({title:a?.title??i?.taskTitle,description:a?.description??i?.taskDescription},t)}e.s(["extractTrajectoryTaskMeta",()=>n,"normalizeTrajectoryTaskMeta",()=>r])},450579,e=>e.a(async(t,r)=>{try{var n=e.i(948594),i=e.i(837926),a=t([n]);function o(e){let t=String(e||"").trim();if(!t)return"";let r=new Date(t);return Number.isNaN(r.getTime())?"":r.toISOString()}function s(e,t){let r=o(e);if(!r)return!1;let n=new Date(r).getTime(),i=t instanceof Date?t.getTime():new Date(String(t||"")).getTime();return!!Number.isFinite(n)&&!!Number.isFinite(i)&&i>=n}function l(e){if(!e)return{};try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}function u(e){return String(e||"").trim()}function c(e,t){return e.trim().toLowerCase()===t.trim().toLowerCase()}function f(e,t){let r={...l(e)};return t?r.watchedAgent=t:delete r.watchedAgent,JSON.stringify(r)}async function m(e,t){let r=String(e||"").trim(),a=Array.from(new Set(t.map(e=>u(e)).filter(Boolean))),o=new Map;if(!r||0===a.length)return o;for(let e of(await (0,n.readRecords)(r,{taskIds:a},{attachEvaluations:!1}))){let t=u(e.task_id);if(!t||o.has(t))continue;let r=!e||(0,i.isEvaluatorTraceRecord)(e)?"":u((0,i.getPrimaryExecutionAgentName)(e));r&&o.set(t,r)}return o}async function d(e,t){let r=Array.from(new Set(t.map(e=>u(e)).filter(Boolean))),n=await m(e,r),i=r.filter(e=>!n.has(e)),a=Array.from(new Set(r.map(e=>n.get(e)||"").filter(Boolean)));return{agent:1===a.length&&0===i.length&&a[0]||"",missingTaskIds:i,distinctAgents:a}}async function p(e,t){for(let e of t){let t=u(l(e.rawAnalysisJson).watchedAgent);if(t&&!(0,i.isEvaluatorAgentName)(t))return t}return(await d(e,t.map(e=>e.taskId||"").filter(Boolean))).agent}[n]=a.then?(await a)():a,e.s(["autoWatchAgentNamesMatch",()=>c,"isAutoWatchWindowMatch",()=>s,"loadTrajectoryCandidateAgentMap",()=>m,"mergeWatchedAgentIntoRawAnalysis",()=>f,"normalizeAutoWatchAgent",()=>u,"normalizeAutoWatchEnabledAt",()=>o,"resolveSingleTrajectoryCandidateAgent",()=>d,"resolveWatchedAgentForRunRows",()=>p,"safeParseAutoWatchRecord",()=>l]),r()}catch(e){r(e)}},!1),982505,e=>e.a(async(t,r)=>{try{var n=e.i(948594),i=t([n]);function a(e){let t="number"==typeof e?e:"string"==typeof e?Number(e):NaN;return Number.isFinite(t)?t:void 0}function o(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"!=typeof e)return null;let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let r=Date.parse(t);return Number.isFinite(r)?r:null}function s(e){return e.map(e=>e&&"object"==typeof e&&"text"===String(e.type||"").toLowerCase()?String(e.text||""):"").filter(Boolean).join("")}function l(e){return Array.isArray(e)&&0!==e.length?e.map(e=>{var t;let r,n,i,l,u,c;if(!function(e){if(!e||"object"!=typeof e)return!1;let t=e.info;if(!t||"object"!=typeof t)return!1;let r=e.parts;return Array.isArray(r)||Array.isArray(t.parts)}(e))return null;let f=e.info||{},m=Array.isArray(e.parts)?e.parts:Array.isArray(f.parts)?f.parts:[],d=(t=f.role,"string"==typeof t&&t.trim()?t.trim():"assistant"),p=f.time?.created,g=f.time?.completed,y=o(p),h="user"===d?s(m)||String(f.system||""):s(m),v=m.map(e=>{if(!e||"object"!=typeof e||"tool"!==String(e.type||"").toLowerCase())return null;let t=e.state&&"object"==typeof e.state?e.state:{};return{id:e.callID||e.callId||e.id,type:"function",function:{name:e.tool,arguments:function(e){if("string"==typeof e)return e;try{return JSON.stringify(e??{})}catch{return"{}"}}(t.input)},state:t.status||t.state,output:t.output}}).filter(Boolean),A=f.tokens&&"object"==typeof f.tokens?f.tokens:void 0,w=A?{input:a(A.input),output:a(A.output),reasoning:a(A.reasoning),cache:{read:a(A.cache?.read),write:a(A.cache?.write)},total:(r=a(A?.input)||0,n=a(A?.output)||0,i=a(A?.reasoning)||0,l=a(A?.cache?.read)||0,u=a(A?.cache?.write)||0,c=i>0&&n<i?n+i:n,{input:r,output:c,reasoning:i,cacheRead:l,cacheWrite:u,total:r+c+i+l+u}).total}:void 0;return{role:d,content:h||void 0,tool_calls:v.length>0?v:void 0,usage:w,timestamp:null!==y?new Date(y).toISOString():void 0,timeInfo:null!=p||null!=g?{created:p,completed:g}:void 0,agent:"string"==typeof f.agent?f.agent:void 0,modelID:"string"==typeof f.modelID?f.modelID:void 0,providerID:"string"==typeof f.providerID?f.providerID:void 0,cost:f.cost}}).filter(e=>null!==e).sort((e,t)=>(o(e.timeInfo?.created)||0)-(o(t.timeInfo?.created)||0)):[]}function u(e,t){let r,n,i,a,o=e.some(e=>"assistant"===e.role&&"string"==typeof e.content&&e.content.trim().length>0),s=(r=new Date().toISOString(),n=String(t.query||"").trim(),i=String(t.fallbackOutput||"").trim(),a=[],n&&a.push({role:"user",content:n,timestamp:r}),i&&a.push({role:"assistant",content:i,timestamp:r,agent:String(t.agentName||"").trim()||void 0}),a);if(0===e.length)return s;if(o||!String(t.fallbackOutput||"").trim())return e;let l=s.find(e=>"assistant"===e.role);return l?[...e,l]:e}async function c(e,t){let r,i=String(t.taskId||"").trim(),a=String(t.agentName||"").trim();if(!i||!a)return 0;let s=await e.listMessages(i),c=u(l(Array.isArray(s)?s:[]),t);return await (0,n.saveExecutionRecord)({task_id:i,upload_id:i,query:String(t.query||"").trim()||void 0,framework:t.framework||"opencode",user:t.user??null,agent:a,agentName:a,final_result:String(t.fallbackOutput||"").trim()||void 0,skill:t.skill??void 0,skill_version:t.skillVersion??void 0,interactions:c,timestamp:(r=c.map(e=>o(e.timeInfo?.created)??o(e.timestamp)).find(e=>Number.isFinite(e)))?new Date(r):new Date,skip_evaluation:!0,skip_internal_judgment:!0,failures:[],skill_issues:[],force_query_update:!0,opencode_cli_completed:!0}),c.length}[n]=i.then?(await i)():i,e.s(["ensureEvaluatorExecutionInteractions",()=>u,"normalizeEvaluatorExecutionInteractions",()=>l,"recordEvaluatorExecution",()=>c]),r()}catch(e){r(e)}},!1),926307,e=>{"use strict";let t=Symbol.for("agent-insight.trajectoryEvalRunControllers");function r(){let e=globalThis;return e[t]||(e[t]=new Map),e[t]}function n(e,t){let n=new AbortController;return r().set(e,{controller:n,user:t}),n}function i(e){if(e)return r().get(e)?.controller.signal}function a(e){let t=0;for(let n of r().values())n.user===e&&!n.controller.signal.aborted&&(n.controller.abort(),t++);return t}function o(e){r().delete(e)}e.s(["abortTrajectoryEvalRunsForUser",()=>a,"getTrajectoryEvalRunSignal",()=>i,"registerTrajectoryEvalRun",()=>n,"unregisterTrajectoryEvalRun",()=>o])},556602,e=>{"use strict";let t="[no-evaluable-case]";function r(e){let r=e instanceof Error?e.message:String(e||"");return!(!r.trim()||r.includes(t)||r.includes("缺少预期结果")||r.includes("expectedOutput")||r.includes("trace 没有实际输入")||r.includes("Session.interactions JSON 解析失败")||r.includes("Session 不存在或 interactions 为空")||r.includes("读取数据集失败")||r.includes("未匹配到可评测 case")||r.includes("评估数据集不存在")||r.includes("写入评测结果失败")||r.includes("结果输出提取失败")||r.includes("不允许派发子代理")||e instanceof Error&&"AbortError"===e.name||r.includes("已终止")||r.includes("用户中止")||r.includes("aborted: user terminated"))}function n(e,t,n){return!!r(e)&&(Number.isFinite(t)?Math.floor(t):1)<=Math.max(0,Math.floor(n))}function i(e){let t=Math.max(1,Math.floor(e)),r=0,n=[];return{acquire:()=>new Promise(e=>{r<t?(r++,e()):n.push(e)}),release:()=>{let e=n.shift();e?e():r=Math.max(0,r-1)}}}e.s(["NO_EVALUABLE_CASE_PREFIX",0,t,"createSimpleAsyncLimiter",()=>i,"isRetryableResultEvaluationFailure",()=>r,"shouldRetryGrayscaleEval",()=>n])},240317,e=>{"use strict";var t=e.i(286372);function r(e,n={}){let a=n.maxSteps??80,o=n.maxTextLen??200,s=(0,t.buildAgentCallTree)(e);if(!s)return{steps:[],totalSteps:0,truncated:!1,agentTreeDepth:0,totalLlmCalls:0,totalToolCalls:0,totalSkillCalls:0,totalTaskCalls:0,totalTokens:0};let l=[],u=0,c=0,f=0,m=0,d=0,p=0,g=0;(0,t.walkTree)(s,e=>{for(let t of(d=Math.max(d,e.depth),p+=e.stats.totalTokens,e.events)){"llm"===t.kind?u++:"tool"===t.kind?c++:"skill"===t.kind?f++:"task"===t.kind&&m++;let r=t.args,n=null==r?void 0:("string"==typeof r?r:i(r)).slice(0,o),a=t.output,s=null==a?void 0:("string"==typeof a?a:i(a)).slice(0,o),d=("user"===t.kind||"llm"===t.kind)&&t.summary?t.summary.slice(0,o):void 0;l.push({index:g++,agent:e.depth>0?e.agentName:void 0,depth:e.depth,kind:t.kind,name:t.name,argsSummary:n,outputSummary:s,textContent:d,durationMs:t.completedAt&&t.startedAt?t.completedAt-t.startedAt:void 0})}});let y=l.length,h=!1,v=l;if(y>a){h=!0;let e=Math.ceil(a/2),t=a-e;v=l.slice(0,e).concat(l.slice(y-t))}return{steps:v,totalSteps:y,truncated:h,agentTreeDepth:d,totalLlmCalls:u,totalToolCalls:c,totalSkillCalls:f,totalTaskCalls:m,totalTokens:p,durationMs:s.stats.durationMs,rootAgentName:s.agentName}}function n(e){let t=[];for(let r of(t.push("# Trace Summary"),t.push(`Root agent: ${e.rootAgentName||"Agent"}`),t.push(`Total steps: ${e.totalSteps} (LLM:${e.totalLlmCalls} / Tool:${e.totalToolCalls} / Skill:${e.totalSkillCalls} / Task:${e.totalTaskCalls})`),t.push(`Agent tree depth: ${e.agentTreeDepth}`),t.push(`Total tokens: ${e.totalTokens}, Duration: ${e.durationMs??"?"}ms`),e.truncated&&t.push(`(NOTE: middle steps truncated; only showing first/last halves of ${e.totalSteps} steps)`),t.push(""),t.push("# Steps (chronological)"),e.steps)){let e=[`[#${r.index}]`];r.agent&&e.push(`@${r.agent}`),e.push(`(${r.kind})`),r.name&&e.push(r.name),r.argsSummary&&e.push(`args=${r.argsSummary}`),r.outputSummary&&e.push(`out=${r.outputSummary}`),r.textContent&&e.push(`text=${r.textContent}`),void 0!==r.durationMs&&e.push(`${r.durationMs}ms`),t.push(e.join(" "))}return t.join("\n")}function i(e){try{return JSON.stringify(e)}catch{return String(e)}}e.s(["formatTraceForLLM",()=>n,"summarizeTrace",()=>r])},708822,e=>e.a(async(t,r)=>{try{var n=e.i(522734),i=e.i(814747),a=e.i(854763),o=t([a]);[a]=o.then?(await o)():o;let c=i.default.join(process.cwd(),"data"),f=i.default.join(c,"user_custom_evaluators.json");function s(){n.default.existsSync(c)||n.default.mkdirSync(c,{recursive:!0})}async function l(e){let t=await a.prismaRaw.customEvaluatorList.findUnique({where:{user:e}}),r=[];if(t?.itemsJson)try{let e=JSON.parse(t.itemsJson);r=Array.isArray(e)?e:[]}catch{r=[]}if(0===r.length){let t=function(){if(s(),!n.default.existsSync(f))return{};try{let e=n.default.readFileSync(f,"utf-8"),t=JSON.parse(e);if(!t||"object"!=typeof t)return{};let r={};for(let[e,n]of Object.entries(t))r[e]=Array.isArray(n)?n:[];return r}catch{return{}}}(),r=t[e];if(Array.isArray(r)&&r.length>0)return await u(e,r),delete t[e],s(),n.default.writeFileSync(f,JSON.stringify(t,null,2)),r}return r}async function u(e,t){let r=JSON.stringify(Array.isArray(t)?t:[]);await a.prismaRaw.customEvaluatorList.upsert({where:{user:e},create:{user:e,itemsJson:r},update:{itemsJson:r}})}e.s(["readUserCustomEvaluators",()=>l,"writeUserCustomEvaluators",()=>u]),r()}catch(e){r(e)}},!1),649392,e=>{"use strict";let t=/^[A-Za-z][A-Za-z0-9_-]{1,63}$/;function r(e){return t.test(e.trim())}let n=["input","output","reference_output","trajectory"];function i(e){let t,r=new Set,i=/\{\{\s*([A-Za-z0-9_]+)\s*\}\}/g;for(;null!==(t=i.exec(e));){let e=t[1];n.includes(e)||r.add(e)}return Array.from(r)}e.s(["CUSTOM_EVALUATOR_ALLOWED_VARIABLES",0,n,"findUnsupportedCustomEvaluatorVariables",()=>i,"isValidCustomEvaluatorName",()=>r])},228356,e=>e.a(async(t,r)=>{try{var n=e.i(469240),i=e.i(151223),a=e.i(378673),o=e.i(134526),s=e.i(106411),l=e.i(759453),u=e.i(854763),c=e.i(111911),f=e.i(708822),m=e.i(649392),d=t([i,s,l,u,f]);[i,s,l,u,f]=d.then?(await d)():d;let $=Number(process.env.CUSTOM_EVAL_LLM_TIMEOUT_MS||12e4),E="系统:自建评估器(自动注册)";function p(e){return"string"==typeof e&&e.startsWith("custom-")}let I=null;async function g(e){let t=Date.now();if(I&&I.user===e&&I.expiresAt>t)return I.map;let r=await (0,f.readUserCustomEvaluators)(e),n=new Map;for(let e of r)e&&"object"==typeof e&&"LLM"===e.evaluatorType&&e.llmConfig&&"string"==typeof e.id&&e.id&&n.set(e.id,{id:e.id,name:e.name||e.id,config:e.llmConfig});return I={user:e,expiresAt:t+5e3,map:n},n}async function y(e,t){return(await g(e)).get(t)||null}async function h(e){let t=await g(e);return new Set(t.keys())}let N={"{{input}}":e=>e.caseInput||"","{{output}}":e=>e.actualOutput||"","{{reference_output}}":e=>e.expectedOutput||"","{{trajectory}}":e=>e.traceText||""};function v(e,t){let r=e;for(let e of m.CUSTOM_EVALUATOR_ALLOWED_VARIABLES){let n=RegExp(`\\{\\{\\s*${e}\\s*\\}\\}`,"g"),i=N[`{{${e}}}`];r=r.replace(n,i?i(t):"")}return r}let T=[/因此[,,][^。]*?\[?\s*([01](?:\.\d+)?)\s*\]?/,/应该给出\s*\[?\s*([01](?:\.\d+)?)\s*\]?\s*是合理的评分/,/\b(?:score|分数|评分)\s*[::=]\s*([01](?:\.\d+)?)/i,/\b(?:score|分数|评分)\s*[::=]\s*([0-9]{1,3})\s*\/\s*100\b/i];function A(e){if(!e)return null;let t=e.match(/```(?:json)?\s*([\s\S]*?)```/i);for(let r of[t?.[1],e].filter(e=>!!e)){try{let e=JSON.parse(r),t=w(e);if(null!=t)return t}catch{}let e=r.indexOf("{"),t=r.lastIndexOf("}");if(-1!==e&&t>e)try{let n=JSON.parse(r.slice(e,t+1)),i=w(n);if(null!=i)return i}catch{}}for(let t of T){let r=e.match(t);if(r){let e=Number(r[1]);if(!Number.isFinite(e))continue;if(t.source.includes("100"))return S(e/100);return S(e)}}let r=e.match(/\b(0(?:\.\d+)?|1(?:\.0+)?)\b/);if(r){let e=Number(r[1]);if(Number.isFinite(e)&&e>=0&&e<=1)return e}return null}function w(e){if(!e||"object"!=typeof e)return null;for(let t of["score","final_score","overall_score","rating","分数","评分"]){let r=e[t];if("number"==typeof r)return S(r>1?r/100:r);if("string"==typeof r){let e=Number(r);if(Number.isFinite(e))return S(e>1?e/100:e)}}return null}function S(e){return!Number.isFinite(e)||e<0?0:e>1?1:e}async function k(e,t){try{let r=await u.prismaRaw.registeredAgent.findFirst({where:{platform:"opencode",name:t,user:e}});if(r){if("system"!==r.agentOwnership||"main"!==r.agentType||r.description!==E)return(await u.prismaRaw.registeredAgent.update({where:{id:r.id},data:{agentOwnership:"system",agentType:"main",description:E}})).id;return r.id}return(await u.prismaRaw.registeredAgent.create({data:{platform:"opencode",name:t,user:e,description:E,agentType:"main",agentOwnership:"system"}})).id}catch(e){return console.warn(`[custom-evaluator] register agent ${t} failed:`,e?.message),null}}async function b(e,t){let r=new Set;for(let e of t){if(!e||"LLM"!==e.evaluatorType)continue;let t=String(e.name||"").trim();t&&(0,m.isValidCustomEvaluatorName)(t)&&r.add(t)}let n=await u.prismaRaw.registeredAgent.findMany({where:{platform:"opencode",user:e}}),i=new Map,a=[];for(let e of n){if(e.description===E&&!r.has(e.name)){a.push(e.id);continue}r.has(e.name)&&!i.has(e.name)&&i.set(e.name,{id:e.id,name:e.name})}for(let t of r){let r=i.get(t);if(r){await u.prismaRaw.registeredAgent.update({where:{id:r.id},data:{description:E,agentType:"main",agentOwnership:"system"}});continue}await u.prismaRaw.registeredAgent.create({data:{platform:"opencode",name:t,user:e,description:E,agentType:"main",agentOwnership:"system"}})}a.length>0&&await u.prismaRaw.registeredAgent.deleteMany({where:{id:{in:a}}})}async function _(e,t,r,u,f){return(0,a.withBackgroundOpencodeSlot)(async()=>(0,i.runWithEphemeralOpencodeServer)({user:e,verbose:!1,isolateHome:!0},async i=>{var a,u;let f,d=Date.now(),p=await y(e,t);if(!p)return{evaluatorId:t,evaluatorName:t,score:null,reason:"",rawResponse:"",model:"",durationMs:Date.now()-d,error:`未找到自建评估器 ${t}(可能已被删除)`};let g=await (0,s.getActiveConfig)(e);if(!g||!g.apiKey)return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:"",model:p.config.model||"",durationMs:Date.now()-d,error:"未配置可用的评测模型,请到「配置」页设置 API Key"};if(!(0,m.isValidCustomEvaluatorName)(p.name))return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:"",model:p.config.model||g.model||"",durationMs:Date.now()-d,error:"自建评估器名称必须是英文 agent 名称:以字母开头,仅支持字母、数字、下划线、连字符"};let h=(0,m.findUnsupportedCustomEvaluatorVariables)(`${p.config.systemPrompt||""}
|
|
2
|
-
${p.config.userPrompt||""}`);if(h.length>0)return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:"",model:p.config.model||g.model||"",durationMs:Date.now()-d,error:`System Prompt 包含不支持的变量:${h.map(e=>`{{${e}}}`).join(", ")}`};let w=await (0,l.loadServerModelForUser)(e),S=w?.providerID||(0,l.normalizeProviderID)(g.provider||(0,l.inferProviderFromBaseUrl)(g.baseUrl)),b=w?.modelID||g.model||"deepseek-chat",_={text:(a=p.config,v(a.userPrompt||"",r).trim()||"请根据 system prompt 完成本次评估,并按要求输出 JSON。"),agent:"build",model:{providerID:S,modelID:b,apiKey:g.apiKey,baseURL:g.baseUrl},system:(u=p.config,
|
|
1
|
+
module.exports=[906920,(e,t,r)=>{"use strict";r.byteLength=function(e){var t=u(e),r=t[0],n=t[1];return(r+n)*3/4-n},r.toByteArray=function(e){var t,r,n=u(e),o=n[0],s=n[1],l=new a((o+s)*3/4-s),c=0,m=s>0?o-4:o;for(r=0;r<m;r+=4)t=i[e.charCodeAt(r)]<<18|i[e.charCodeAt(r+1)]<<12|i[e.charCodeAt(r+2)]<<6|i[e.charCodeAt(r+3)],l[c++]=t>>16&255,l[c++]=t>>8&255,l[c++]=255&t;return 2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,l[c++]=255&t),1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,l[c++]=t>>8&255,l[c++]=255&t),l},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=[],o=0,s=r-i;o<s;o+=16383)a.push(function(e,t,r){for(var i,a=[],o=t;o<r;o+=3)i=(e[o]<<16&0xff0000)+(e[o+1]<<8&65280)+(255&e[o+2]),a.push(n[i>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return a.join("")}(e,o,o+16383>s?s:o+16383));return 1===i?a.push(n[(t=e[r-1])>>2]+n[t<<4&63]+"=="):2===i&&a.push(n[(t=(e[r-2]<<8)+e[r-1])>>10]+n[t>>4&63]+n[t<<2&63]+"="),a.join("")};for(var n=[],i=[],a="u">typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)n[s]=o[s],i[o.charCodeAt(s)]=s;function u(e){var t=e.length;if(t%4>0)throw Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");-1===r&&(r=t);var n=r===t?0:4-r%4;return[r,n]}i[45]=62,i[95]=63},826917,e=>{"use strict";let t=Symbol.for("@witty-insight/evaluation-task-manager"),r=globalThis;r[t]&&2===r[t].version||(r[t]={activeTasks:new Map,version:2});let n=r[t].activeTasks;function i(e,t,r){return`${e}::${t}::${r}`}function a(e,t,r){let a,o=i(e,t,r),s=`run_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,l=n.get(o);return l?(l.status="cancelling",a=l.runId,console.log(`[EvalTask] replaced user=${e} task=${t} source=${r} oldRun=${a} newRun=${s}`)):console.log(`[EvalTask] start user=${e} task=${t} source=${r} run=${s}`),n.set(o,{user:e,taskId:t,source:r,runId:s,status:"running",startedAt:Date.now()}),{runId:s,replacedRunId:a}}function o(e,t,r="rejudge"){let a=i(e,t,r),s=n.get(a);return s&&"running"===s.status?(s.status="cancelling",console.log(`[EvalTask] cancel user=${e} task=${t} source=${r} run=${s.runId}`),{cancelled:!0,runId:s.runId}):(console.log(`[EvalTask] cancel - no active task user=${e} task=${t} source=${r}`),{cancelled:!1})}function s(e,t){return null!==function(e,t){for(let r of n.values())if(r.user===e&&r.taskId===t&&"running"===r.status)return r;return null}(e,t)}class l extends Error{constructor(e="Evaluation cancelled"){super(e),this.name="EvaluationCancelledError"}}function u(e,t,r){for(let i of n.values())if(i.user===e&&i.taskId===t&&i.runId===r){if("running"!==i.status)throw console.log(`[EvalTask] assertActive failed - status=${i.status} user=${e} task=${t} run=${r}`),new l("Evaluation cancelled");return}throw console.log(`[EvalTask] assertActive failed - no matching runId user=${e} task=${t} run=${r}`),new l("Evaluation superseded or already finished")}function c(e,t,r){for(let[i,a]of n.entries())if(a.user===e&&a.taskId===t&&a.runId===r){n.delete(i),console.log(`[EvalTask] finish user=${e} task=${t} source=${a.source} run=${r}`);return}console.log(`[EvalTask] finish - no matching runId user=${e} task=${t} run=${r} (likely already cleaned by HMR or earlier replace)`)}e.s(["EvaluationCancelledError",()=>l,"assertActive",()=>u,"cancel",()=>o,"finish",()=>c,"isActive",()=>s,"startOrReplace",()=>a])},374995,e=>{"use strict";function t(e){return String(e).padStart(2,"0")}function r(e,n=new Date){let i=String(e.title||"").trim(),a=String(e.description||"").trim(),o=String(e.scope||"").trim(),s=String(e.skillName||"").trim(),l=e.skillVersion,u=null==l||""===l?null:Number(l);return{title:i||function(e=new Date){return`评测执行 ${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}(n),description:a,...o?{scope:o}:{},...s?{skillName:s}:{},...null!=u&&Number.isFinite(u)?{skillVersion:u}:{}}}function n(e,t=new Date){let i=function(e){if(!e)return null;try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}(e),a=i?.taskMeta&&"object"==typeof i.taskMeta&&!Array.isArray(i.taskMeta)?i.taskMeta:null;return r({title:a?.title??i?.taskTitle,description:a?.description??i?.taskDescription,scope:a?.scope??i?.taskScope,skillName:a?.skillName??i?.skillName,skillVersion:a?.skillVersion??i?.skillVersion},t)}e.s(["extractTrajectoryTaskMeta",()=>n,"normalizeTrajectoryTaskMeta",()=>r])},450579,e=>e.a(async(t,r)=>{try{var n=e.i(948594),i=e.i(837926),a=t([n]);function o(e){let t=String(e||"").trim();if(!t)return"";let r=new Date(t);return Number.isNaN(r.getTime())?"":r.toISOString()}function s(e,t){let r=o(e);if(!r)return!1;let n=new Date(r).getTime(),i=t instanceof Date?t.getTime():new Date(String(t||"")).getTime();return!!Number.isFinite(n)&&!!Number.isFinite(i)&&i>=n}function l(e){if(!e)return{};try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}function u(e){return String(e||"").trim()}function c(e,t){return e.trim().toLowerCase()===t.trim().toLowerCase()}function m(e,t){let r={...l(e)};return t?r.watchedAgent=t:delete r.watchedAgent,JSON.stringify(r)}async function f(e,t){let r=String(e||"").trim(),a=Array.from(new Set(t.map(e=>u(e)).filter(Boolean))),o=new Map;if(!r||0===a.length)return o;for(let e of(await (0,n.readRecords)(r,{taskIds:a},{attachEvaluations:!1}))){let t=u(e.task_id);if(!t||o.has(t))continue;let r=!e||(0,i.isEvaluatorTraceRecord)(e)?"":u((0,i.getPrimaryExecutionAgentName)(e));r&&o.set(t,r)}return o}async function d(e,t){let r=Array.from(new Set(t.map(e=>u(e)).filter(Boolean))),n=await f(e,r),i=r.filter(e=>!n.has(e)),a=Array.from(new Set(r.map(e=>n.get(e)||"").filter(Boolean)));return{agent:1===a.length&&0===i.length&&a[0]||"",missingTaskIds:i,distinctAgents:a}}async function p(e,t){for(let e of t){let t=u(l(e.rawAnalysisJson).watchedAgent);if(t&&!(0,i.isEvaluatorAgentName)(t))return t}return(await d(e,t.map(e=>e.taskId||"").filter(Boolean))).agent}[n]=a.then?(await a)():a,e.s(["autoWatchAgentNamesMatch",()=>c,"isAutoWatchWindowMatch",()=>s,"loadTrajectoryCandidateAgentMap",()=>f,"mergeWatchedAgentIntoRawAnalysis",()=>m,"normalizeAutoWatchAgent",()=>u,"normalizeAutoWatchEnabledAt",()=>o,"resolveSingleTrajectoryCandidateAgent",()=>d,"resolveWatchedAgentForRunRows",()=>p,"safeParseAutoWatchRecord",()=>l]),r()}catch(e){r(e)}},!1),982505,e=>e.a(async(t,r)=>{try{var n=e.i(948594),i=t([n]);function a(e){let t="number"==typeof e?e:"string"==typeof e?Number(e):NaN;return Number.isFinite(t)?t:void 0}function o(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"!=typeof e)return null;let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let r=Date.parse(t);return Number.isFinite(r)?r:null}function s(e){return e.map(e=>e&&"object"==typeof e&&"text"===String(e.type||"").toLowerCase()?String(e.text||""):"").filter(Boolean).join("")}function l(e){return Array.isArray(e)&&0!==e.length?e.map(e=>{var t;let r,n,i,l,u,c;if(!function(e){if(!e||"object"!=typeof e)return!1;let t=e.info;if(!t||"object"!=typeof t)return!1;let r=e.parts;return Array.isArray(r)||Array.isArray(t.parts)}(e))return null;let m=e.info||{},f=Array.isArray(e.parts)?e.parts:Array.isArray(m.parts)?m.parts:[],d=(t=m.role,"string"==typeof t&&t.trim()?t.trim():"assistant"),p=m.time?.created,g=m.time?.completed,y=o(p),h="user"===d?s(f)||String(m.system||""):s(f),v=f.map(e=>{if(!e||"object"!=typeof e||"tool"!==String(e.type||"").toLowerCase())return null;let t=e.state&&"object"==typeof e.state?e.state:{};return{id:e.callID||e.callId||e.id,type:"function",function:{name:e.tool,arguments:function(e){if("string"==typeof e)return e;try{return JSON.stringify(e??{})}catch{return"{}"}}(t.input)},state:t.status||t.state,output:t.output}}).filter(Boolean),A=m.tokens&&"object"==typeof m.tokens?m.tokens:void 0,w=A?{input:a(A.input),output:a(A.output),reasoning:a(A.reasoning),cache:{read:a(A.cache?.read),write:a(A.cache?.write)},total:(r=a(A?.input)||0,n=a(A?.output)||0,i=a(A?.reasoning)||0,l=a(A?.cache?.read)||0,u=a(A?.cache?.write)||0,c=i>0&&n<i?n+i:n,{input:r,output:c,reasoning:i,cacheRead:l,cacheWrite:u,total:r+c+i+l+u}).total}:void 0;return{role:d,content:h||void 0,tool_calls:v.length>0?v:void 0,usage:w,timestamp:null!==y?new Date(y).toISOString():void 0,timeInfo:null!=p||null!=g?{created:p,completed:g}:void 0,agent:"string"==typeof m.agent?m.agent:void 0,modelID:"string"==typeof m.modelID?m.modelID:void 0,providerID:"string"==typeof m.providerID?m.providerID:void 0,cost:m.cost}}).filter(e=>null!==e).sort((e,t)=>(o(e.timeInfo?.created)||0)-(o(t.timeInfo?.created)||0)):[]}function u(e,t){let r,n,i,a,o=e.some(e=>"assistant"===e.role&&"string"==typeof e.content&&e.content.trim().length>0),s=(r=new Date().toISOString(),n=String(t.query||"").trim(),i=String(t.fallbackOutput||"").trim(),a=[],n&&a.push({role:"user",content:n,timestamp:r}),i&&a.push({role:"assistant",content:i,timestamp:r,agent:String(t.agentName||"").trim()||void 0}),a);if(0===e.length)return s;if(o||!String(t.fallbackOutput||"").trim())return e;let l=s.find(e=>"assistant"===e.role);return l?[...e,l]:e}async function c(e,t){let r,i=String(t.taskId||"").trim(),a=String(t.agentName||"").trim();if(!i||!a)return 0;let s=await e.listMessages(i),c=u(l(Array.isArray(s)?s:[]),t);return await (0,n.saveExecutionRecord)({task_id:i,upload_id:i,query:String(t.query||"").trim()||void 0,framework:t.framework||"opencode",user:t.user??null,agent:a,agentName:a,final_result:String(t.fallbackOutput||"").trim()||void 0,skill:t.skill??void 0,skill_version:t.skillVersion??void 0,interactions:c,timestamp:(r=c.map(e=>o(e.timeInfo?.created)??o(e.timestamp)).find(e=>Number.isFinite(e)))?new Date(r):new Date,skip_evaluation:!0,skip_internal_judgment:!0,failures:[],skill_issues:[],force_query_update:!0,opencode_cli_completed:!0}),c.length}[n]=i.then?(await i)():i,e.s(["ensureEvaluatorExecutionInteractions",()=>u,"normalizeEvaluatorExecutionInteractions",()=>l,"recordEvaluatorExecution",()=>c]),r()}catch(e){r(e)}},!1),926307,e=>{"use strict";let t=Symbol.for("agent-insight.trajectoryEvalRunControllers");function r(){let e=globalThis;return e[t]||(e[t]=new Map),e[t]}function n(e,t){let n=new AbortController;return r().set(e,{controller:n,user:t}),n}function i(e){if(e)return r().get(e)?.controller.signal}function a(e){let t=0;for(let n of r().values())n.user===e&&!n.controller.signal.aborted&&(n.controller.abort(),t++);return t}function o(e){r().delete(e)}e.s(["abortTrajectoryEvalRunsForUser",()=>a,"getTrajectoryEvalRunSignal",()=>i,"registerTrajectoryEvalRun",()=>n,"unregisterTrajectoryEvalRun",()=>o])},556602,e=>{"use strict";let t="[no-evaluable-case]";function r(e){let r=e instanceof Error?e.message:String(e||"");return!(!r.trim()||r.includes(t)||r.includes("缺少预期结果")||r.includes("expectedOutput")||r.includes("trace 没有实际输入")||r.includes("Session.interactions JSON 解析失败")||r.includes("Session 不存在或 interactions 为空")||r.includes("读取数据集失败")||r.includes("未匹配到可评测 case")||r.includes("评估数据集不存在")||r.includes("写入评测结果失败")||r.includes("结果输出提取失败")||r.includes("不允许派发子代理")||e instanceof Error&&"AbortError"===e.name||r.includes("已终止")||r.includes("用户中止")||r.includes("aborted: user terminated"))}function n(e,t,n){return!!r(e)&&(Number.isFinite(t)?Math.floor(t):1)<=Math.max(0,Math.floor(n))}function i(e){let t=Math.max(1,Math.floor(e)),r=0,n=[];return{acquire:()=>new Promise(e=>{r<t?(r++,e()):n.push(e)}),release:()=>{let e=n.shift();e?e():r=Math.max(0,r-1)}}}e.s(["NO_EVALUABLE_CASE_PREFIX",0,t,"createSimpleAsyncLimiter",()=>i,"isRetryableResultEvaluationFailure",()=>r,"shouldRetryGrayscaleEval",()=>n])},240317,e=>{"use strict";var t=e.i(286372);function r(e,n={}){let a=n.maxSteps??80,o=n.maxTextLen??200,s=(0,t.buildAgentCallTree)(e);if(!s)return{steps:[],totalSteps:0,truncated:!1,agentTreeDepth:0,totalLlmCalls:0,totalToolCalls:0,totalSkillCalls:0,totalTaskCalls:0,totalTokens:0};let l=[],u=0,c=0,m=0,f=0,d=0,p=0,g=0;(0,t.walkTree)(s,e=>{for(let t of(d=Math.max(d,e.depth),p+=e.stats.totalTokens,e.events)){"llm"===t.kind?u++:"tool"===t.kind?c++:"skill"===t.kind?m++:"task"===t.kind&&f++;let r=t.args,n=null==r?void 0:("string"==typeof r?r:i(r)).slice(0,o),a=t.output,s=null==a?void 0:("string"==typeof a?a:i(a)).slice(0,o),d=("user"===t.kind||"llm"===t.kind)&&t.summary?t.summary.slice(0,o):void 0;l.push({index:g++,agent:e.depth>0?e.agentName:void 0,depth:e.depth,kind:t.kind,name:t.name,argsSummary:n,outputSummary:s,textContent:d,durationMs:t.completedAt&&t.startedAt?t.completedAt-t.startedAt:void 0})}});let y=l.length,h=!1,v=l;if(y>a){h=!0;let e=Math.ceil(a/2),t=a-e;v=l.slice(0,e).concat(l.slice(y-t))}return{steps:v,totalSteps:y,truncated:h,agentTreeDepth:d,totalLlmCalls:u,totalToolCalls:c,totalSkillCalls:m,totalTaskCalls:f,totalTokens:p,durationMs:s.stats.durationMs,rootAgentName:s.agentName}}function n(e){let t=[];for(let r of(t.push("# Trace Summary"),t.push(`Root agent: ${e.rootAgentName||"Agent"}`),t.push(`Total steps: ${e.totalSteps} (LLM:${e.totalLlmCalls} / Tool:${e.totalToolCalls} / Skill:${e.totalSkillCalls} / Task:${e.totalTaskCalls})`),t.push(`Agent tree depth: ${e.agentTreeDepth}`),t.push(`Total tokens: ${e.totalTokens}, Duration: ${e.durationMs??"?"}ms`),e.truncated&&t.push(`(NOTE: middle steps truncated; only showing first/last halves of ${e.totalSteps} steps)`),t.push(""),t.push("# Steps (chronological)"),e.steps)){let e=[`[#${r.index}]`];r.agent&&e.push(`@${r.agent}`),e.push(`(${r.kind})`),r.name&&e.push(r.name),r.argsSummary&&e.push(`args=${r.argsSummary}`),r.outputSummary&&e.push(`out=${r.outputSummary}`),r.textContent&&e.push(`text=${r.textContent}`),void 0!==r.durationMs&&e.push(`${r.durationMs}ms`),t.push(e.join(" "))}return t.join("\n")}function i(e){try{return JSON.stringify(e)}catch{return String(e)}}e.s(["formatTraceForLLM",()=>n,"summarizeTrace",()=>r])},708822,e=>e.a(async(t,r)=>{try{var n=e.i(522734),i=e.i(814747),a=e.i(854763),o=t([a]);[a]=o.then?(await o)():o;let c=i.default.join(process.cwd(),"data"),m=i.default.join(c,"user_custom_evaluators.json");function s(){n.default.existsSync(c)||n.default.mkdirSync(c,{recursive:!0})}async function l(e){let t=await a.prismaRaw.customEvaluatorList.findUnique({where:{user:e}}),r=[];if(t?.itemsJson)try{let e=JSON.parse(t.itemsJson);r=Array.isArray(e)?e:[]}catch{r=[]}if(0===r.length){let t=function(){if(s(),!n.default.existsSync(m))return{};try{let e=n.default.readFileSync(m,"utf-8"),t=JSON.parse(e);if(!t||"object"!=typeof t)return{};let r={};for(let[e,n]of Object.entries(t))r[e]=Array.isArray(n)?n:[];return r}catch{return{}}}(),r=t[e];if(Array.isArray(r)&&r.length>0)return await u(e,r),delete t[e],s(),n.default.writeFileSync(m,JSON.stringify(t,null,2)),r}return r}async function u(e,t){let r=JSON.stringify(Array.isArray(t)?t:[]);await a.prismaRaw.customEvaluatorList.upsert({where:{user:e},create:{user:e,itemsJson:r},update:{itemsJson:r}})}e.s(["readUserCustomEvaluators",()=>l,"writeUserCustomEvaluators",()=>u]),r()}catch(e){r(e)}},!1),649392,e=>{"use strict";let t=/^[A-Za-z][A-Za-z0-9_-]{1,63}$/;function r(e){return t.test(e.trim())}let n=["input","output","reference_output","trajectory"];function i(e){let t,r=new Set,i=/\{\{\s*([A-Za-z0-9_]+)\s*\}\}/g;for(;null!==(t=i.exec(e));){let e=t[1];n.includes(e)||r.add(e)}return Array.from(r)}e.s(["CUSTOM_EVALUATOR_ALLOWED_VARIABLES",0,n,"findUnsupportedCustomEvaluatorVariables",()=>i,"isValidCustomEvaluatorName",()=>r])},228356,e=>e.a(async(t,r)=>{try{var n=e.i(469240),i=e.i(151223),a=e.i(378673),o=e.i(134526),s=e.i(106411),l=e.i(759453),u=e.i(854763),c=e.i(111911),m=e.i(708822),f=e.i(649392),d=t([i,s,l,u,m]);[i,s,l,u,m]=d.then?(await d)():d;let $=Number(process.env.CUSTOM_EVAL_LLM_TIMEOUT_MS||12e4),E="系统:自建评估器(自动注册)";function p(e){return"string"==typeof e&&e.startsWith("custom-")}let I=null;async function g(e){let t=Date.now();if(I&&I.user===e&&I.expiresAt>t)return I.map;let r=await (0,m.readUserCustomEvaluators)(e),n=new Map;for(let e of r)e&&"object"==typeof e&&"LLM"===e.evaluatorType&&e.llmConfig&&"string"==typeof e.id&&e.id&&n.set(e.id,{id:e.id,name:e.name||e.id,config:e.llmConfig});return I={user:e,expiresAt:t+5e3,map:n},n}async function y(e,t){return(await g(e)).get(t)||null}async function h(e){let t=await g(e);return new Set(t.keys())}let N={"{{input}}":e=>e.caseInput||"","{{output}}":e=>e.actualOutput||"","{{reference_output}}":e=>e.expectedOutput||"","{{trajectory}}":e=>e.traceText||""};function v(e,t){let r=e;for(let e of f.CUSTOM_EVALUATOR_ALLOWED_VARIABLES){let n=RegExp(`\\{\\{\\s*${e}\\s*\\}\\}`,"g"),i=N[`{{${e}}}`];r=r.replace(n,i?i(t):"")}return r}let T=[/因此[,,][^。]*?\[?\s*([01](?:\.\d+)?)\s*\]?/,/应该给出\s*\[?\s*([01](?:\.\d+)?)\s*\]?\s*是合理的评分/,/\b(?:score|分数|评分)\s*[::=]\s*([01](?:\.\d+)?)/i,/\b(?:score|分数|评分)\s*[::=]\s*([0-9]{1,3})\s*\/\s*100\b/i];function A(e){if(!e)return null;let t=e.match(/```(?:json)?\s*([\s\S]*?)```/i);for(let r of[t?.[1],e].filter(e=>!!e)){try{let e=JSON.parse(r),t=w(e);if(null!=t)return t}catch{}let e=r.indexOf("{"),t=r.lastIndexOf("}");if(-1!==e&&t>e)try{let n=JSON.parse(r.slice(e,t+1)),i=w(n);if(null!=i)return i}catch{}}for(let t of T){let r=e.match(t);if(r){let e=Number(r[1]);if(!Number.isFinite(e))continue;if(t.source.includes("100"))return S(e/100);return S(e)}}let r=e.match(/\b(0(?:\.\d+)?|1(?:\.0+)?)\b/);if(r){let e=Number(r[1]);if(Number.isFinite(e)&&e>=0&&e<=1)return e}return null}function w(e){if(!e||"object"!=typeof e)return null;for(let t of["score","final_score","overall_score","rating","分数","评分"]){let r=e[t];if("number"==typeof r)return S(r>1?r/100:r);if("string"==typeof r){let e=Number(r);if(Number.isFinite(e))return S(e>1?e/100:e)}}return null}function S(e){return!Number.isFinite(e)||e<0?0:e>1?1:e}async function k(e,t){try{let r=await u.prismaRaw.registeredAgent.findFirst({where:{platform:"opencode",name:t,user:e}});if(r){if("system"!==r.agentOwnership||"main"!==r.agentType||r.description!==E)return(await u.prismaRaw.registeredAgent.update({where:{id:r.id},data:{agentOwnership:"system",agentType:"main",description:E}})).id;return r.id}return(await u.prismaRaw.registeredAgent.create({data:{platform:"opencode",name:t,user:e,description:E,agentType:"main",agentOwnership:"system"}})).id}catch(e){return console.warn(`[custom-evaluator] register agent ${t} failed:`,e?.message),null}}async function b(e,t){let r=new Set;for(let e of t){if(!e||"LLM"!==e.evaluatorType)continue;let t=String(e.name||"").trim();t&&(0,f.isValidCustomEvaluatorName)(t)&&r.add(t)}let n=await u.prismaRaw.registeredAgent.findMany({where:{platform:"opencode",user:e}}),i=new Map,a=[];for(let e of n){if(e.description===E&&!r.has(e.name)){a.push(e.id);continue}r.has(e.name)&&!i.has(e.name)&&i.set(e.name,{id:e.id,name:e.name})}for(let t of r){let r=i.get(t);if(r){await u.prismaRaw.registeredAgent.update({where:{id:r.id},data:{description:E,agentType:"main",agentOwnership:"system"}});continue}await u.prismaRaw.registeredAgent.create({data:{platform:"opencode",name:t,user:e,description:E,agentType:"main",agentOwnership:"system"}})}a.length>0&&await u.prismaRaw.registeredAgent.deleteMany({where:{id:{in:a}}})}async function _(e,t,r,u,m){return(0,a.withBackgroundOpencodeSlot)(async()=>(0,i.runWithEphemeralOpencodeServer)({user:e,verbose:!1,isolateHome:!0},async i=>{var a,u;let m,d=Date.now(),p=await y(e,t);if(!p)return{evaluatorId:t,evaluatorName:t,score:null,reason:"",rawResponse:"",model:"",durationMs:Date.now()-d,error:`未找到自建评估器 ${t}(可能已被删除)`};let g=await (0,s.getActiveConfig)(e);if(!g||!g.apiKey)return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:"",model:p.config.model||"",durationMs:Date.now()-d,error:"未配置可用的评测模型,请到「配置」页设置 API Key"};if(!(0,f.isValidCustomEvaluatorName)(p.name))return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:"",model:p.config.model||g.model||"",durationMs:Date.now()-d,error:"自建评估器名称必须是英文 agent 名称:以字母开头,仅支持字母、数字、下划线、连字符"};let h=(0,f.findUnsupportedCustomEvaluatorVariables)(`${p.config.systemPrompt||""}
|
|
2
|
+
${p.config.userPrompt||""}`);if(h.length>0)return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:"",model:p.config.model||g.model||"",durationMs:Date.now()-d,error:`System Prompt 包含不支持的变量:${h.map(e=>`{{${e}}}`).join(", ")}`};let w=await (0,l.loadServerModelForUser)(e),S=w?.providerID||(0,l.normalizeProviderID)(g.provider||(0,l.inferProviderFromBaseUrl)(g.baseUrl)),b=w?.modelID||g.model||"deepseek-chat",_={text:(a=p.config,v(a.userPrompt||"",r).trim()||"请根据 system prompt 完成本次评估,并按要求输出 JSON。"),agent:"build",model:{providerID:S,modelID:b,apiKey:g.apiKey,baseURL:g.baseUrl},system:(u=p.config,m=v(u.systemPrompt||"",r),`${m.trim()}
|
|
3
3
|
|
|
4
4
|
【输出要求】
|
|
5
5
|
只输出严格 JSON,不要输出 Markdown 或额外解释:
|
|
@@ -8,6 +8,6 @@ ${p.config.userPrompt||""}`);if(h.length>0)return{evaluatorId:p.id,evaluatorName
|
|
|
8
8
|
"reason": "中文说明"
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
score 必须是 0.0 到 1.0 之间的数字;reason 说明评分依据。`),permission:(0,o.buildEvaluatorPermissions)()},E="",I=null;try{let t=new n.AgentInsight({baseURL:i,logLevel:"warn"}),a=await t.createSession({title:`${p.name}-${Date.now()}`,directory:"/tmp"}),o=String(a?.id||a?.ID||"");if(!o)throw Error("Failed to create opencode session for custom evaluation");let s=await k(e,p.name);(0,c.tagOpencodeSession)(o,{agentName:p.name,agentId:s,displayQuery:r.caseInput,user:e});try{E=(await Promise.race([t.chat(o,_,{onText:e=>{E+=e.delta},onError:e=>{I=e}},{streamTimeoutMs:$,idleTimeoutMs:$}),new Promise((e,t)=>setTimeout(()=>t(Error(`LLM 调用超时(${$}ms)`)),$))])).text||E}finally{try{await t.deleteSession(o)}catch{}}}catch(e){I=e instanceof Error?e:Error(String(e))}if(I){let e=A(E||I.message);if(null==e)return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:E,model:b,durationMs:Date.now()-d,error:`自建评估器调用失败:${I.message}`}}let N=A(E),T=function(e){if(!e)return"";let t=function(e){if(!e)return null;let t=e.match(/```(?:json)?\s*([\s\S]*?)```/i);for(let r of[t?.[1],e].filter(e=>!!e)){try{let e=JSON.parse(r);if(e&&"object"==typeof e&&!Array.isArray(e))return e}catch{}let e=r.indexOf("{"),t=r.lastIndexOf("}");if(-1!==e&&t>e)try{let n=JSON.parse(r.slice(e,t+1));if(n&&"object"==typeof n&&!Array.isArray(n))return n}catch{}}return null}(e);if(t)for(let e of["reason","explanation","rationale","评测理由","原因"]){let r=t[e];if("string"==typeof r&&r.trim())return r.trim().slice(0,2e3)}return(e.replace(/```(?:json)?\s*[\s\S]*?```/g,"").trim()||e).slice(0,2e3)}(E);return{evaluatorId:p.id,evaluatorName:p.name,score:N,reason:T,rawResponse:E,model:b,durationMs:Date.now()-d,error:null==N?"未能从模型响应中解析出 0-1 分数":void 0}}),{taskType:"custom-llm-eval",user:e,skill:u??void 0,skillVersion:f??null,label:`custom-eval: ${t}`,silent:!0})}e.s(["isCustomEvaluatorId",()=>p,"listCustomEvaluatorIds",()=>h,"loadCustomEvaluator",()=>y,"runCustomLlmEvaluator",()=>_,"syncCustomEvaluatorRegisteredAgents",()=>b]),r()}catch(e){r(e)}},!1),580077,e=>{"use strict";function t(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function r(e){return String(e.name??e.call??e.toolName??e.tool??e.functionName??"").trim()}function n(e,t,r){let n="number"==typeof t?t:Number(t),i=e.filter(e=>!r.has(e.call)),a=(Number.isFinite(n)?i.find(e=>e.count===n):null)||i[0]||e[0];return a?(r.add(a.call),a.call):""}function i(e,i){let a=t(e.dimension_details??e.dimensionDetails),o=t(a.redundancy),s=function(e){let n=new Map;for(let[i,a]of e.entries()){let e=t(a),o=String(e.kind||"").toLowerCase();if("tool"!==o&&"skill"!==o&&"task"!==o)continue;let s=r(e);if(!s)continue;let l=function(e,t){let r=e.step_index??e.stepIndex??e.index,n="number"==typeof r?r:Number(r);return Number.isFinite(n)?n:t}(e,i),u=n.get(s)||{call:s,count:0,firstIndex:null,lastIndex:null};u.count+=1,u.firstIndex=null==u.firstIndex?l:Math.min(u.firstIndex,l),u.lastIndex=null==u.lastIndex?l:Math.max(u.lastIndex,l),n.set(s,u)}return Array.from(n.values()).sort((e,t)=>{let r=t.count-e.count;return 0!==r?r:(e.firstIndex??Number.MAX_SAFE_INTEGER)-(t.firstIndex??Number.MAX_SAFE_INTEGER)})}(Array.isArray(i)?i:[]);if(0===Object.keys(o).length||0===s.length)return e;let l=new Set,u=Array.isArray(o.heavy_repeated_calls)?o.heavy_repeated_calls.map(e=>{let i=t(e),a=r(i)||n(s,i.count,l);return a?{...i,call:a}:i}):o.heavy_repeated_calls,c=new Set,f=Array.isArray(o.consecutive_same_runs)?o.consecutive_same_runs.map(e=>{let i=t(e),a=r(i)||n(s,i.count,c),o=s.find(e=>e.call===a);return a?{...i,name:a,from:i.from??o?.firstIndex,to:i.to??o?.lastIndex}:i}):o.consecutive_same_runs,m={...o,...Array.isArray(u)?{heavy_repeated_calls:u}:{},...Array.isArray(f)?{consecutive_same_runs:f}:{}},d={...a,redundancy:m};return{...e,dimension_details:d}}function a(e,t){let r=Math.round(1e3*(.45*o("number"==typeof e.completeness?e.completeness:0)+.35*o(e.toolChoice)+.2*o(e.redundancy)))/1e3,n=Array.isArray(t)?t:[],i=n.filter(e=>e?.severity==="high").length,a=n.filter(e=>e?.severity==="medium").length,s=`轨迹分按完整性/工具选择/冗余加权计算;严重度仅用于诊断展示(high ${i},medium ${a}),不调整最终分。`;return{trajectoryScore:o(r),rawWeightedScore:r,scoreAggregation:{mode:"trajectory",reason:s,rawWeightedScore:r,finalScore:o(r),highCount:i,mediumCount:a}}}function o(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}e.s(["aggregateTrajectoryScore",()=>a,"normalizeTrajectoryRedundancyDetails",()=>i])},520813,e=>{"use strict";var t=e.i(286372);function r(e){var r;let i;if(!Array.isArray(e)||0===e.length)return null;for(let a of(r=e,(i=(0,t.buildAgentCallTree)(r))&&Array.isArray(i.interactionIndices)&&i.interactionIndices.length>0?[...i.interactionIndices].sort((e,t)=>e-t):r.map((e,t)=>({interaction:e,index:t})).filter(({interaction:e})=>"subagent"!==String(e.role||"").toLowerCase()&&!e.subagent_session_id&&!e.subagent_name).map(e=>e.index))){let t=function(e){if(!e)return[];let t=[];for(let r of function(e){let t=[];if(e.toolCall&&t.push(e.toolCall),Array.isArray(e.toolCalls)&&t.push(...e.toolCalls),Array.isArray(e.tool_calls)&&t.push(...e.tool_calls),Array.isArray(e.responseMessage?.tool_calls)&&t.push(...e.responseMessage.tool_calls),Array.isArray(e.content))for(let r of e.content)r&&"object"==typeof r&&("toolCall"===r.type||"tool_use"===r.type)&&"string"==typeof r.name&&t.push({name:r.name,arguments:r.arguments??r.input});return t}(e)){let e=r.name||r.function?.name,i=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}}(r.arguments??r.function?.arguments);if("skill"===e||"load_skill"===e){let e=function(e){var t;if(!e||"object"!=typeof e)return null;let r=n(e.name)||n(e.skill)||n(e.skillName)||n(e.skill_name);return r?{name:r,version:("number"==typeof(t=e.version??e.skillVersion??e.skill_version)&&Number.isFinite(t)?t:"string"==typeof t&&t.trim()&&Number.isFinite(Number(t))?Number(t):void 0)??null}:null}(i);e&&t.push(e)}}return function(e){let t=new Set,r=[];for(let n of e){let e=`${n.name}:${n.version??""}`;t.has(e)||(t.add(e),r.push(n))}return r}(t)}(e[a]);if(t.length>0)return t[0]}return null}function n(e){return"string"==typeof e&&e.trim()?e.trim():void 0}e.s(["getRootSkillFromInteractions",()=>r])},418494,e=>e.a(async(t,r)=>{try{var n=e.i(254799),i=e.i(854763),a=t([i]);async function o(e){let{user:t,taskId:r,runId:a,trajectoryRow:o,skills:h}=e;if(0===h.length)return 0;let v=d(o.rawAnalysisJson);if(u(v))return 0;let A=[];for(let e of function(e){var t;let r,n,i=d(e.rawAnalysisJson);if(!i||u(i))return[];let a=(t=i,r=p(t.key_action_results),n=p(t.keyActionResults),r.length>0?r:n),o=[];for(let e of a){if((e.has_skill_improvement??e.hasSkillImprovement)!==!0)continue;let t=c(e.skill_improvement_suggestion,e.skillImprovementSuggestion);if(!t)continue;let r=String(e.action_id??e.actionId??"").trim(),n=String(e.action_content??e.actionContent??"").trim(),i=String(e.skill_issue_summary??e.skillIssueSummary??"").trim()||n||t,a=String(e.skill_issue_evidence??e.skillIssueEvidence??"").trim()||String(e.trace_comparison_analysis??e.traceComparisonAnalysis??"").trim();o.push({severity:f(e.severity),category:"关键动作执行不足",summary:i,evidence:a,reasoning:String(e.trace_comparison_analysis??e.traceComparisonAnalysis??"").trim()||void 0,improvementSuggestion:t,dedupSalt:r||n})}return o}(o))A.push(e);for(let e of function(e){let t=function(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}(e.deviationStepsJson),r=[];for(let n of t){if(!1===l(n.is_skill_attributable,n.isSkillAttributable))continue;let t=f(n.severity);if("low"===t)continue;let i=String(n.deviation||"").trim();if(!i)continue;let a="number"==typeof n.stepIndex?n.stepIndex:null,o=String(e.rootCauseStep||"").includes(`#${a}`),s=c(n.improvement_suggestion,n.improvementSuggestion);r.push({severity:o?"high":t,category:"轨迹偏差",summary:i,evidence:null!=a?`Step #${a}${n.name?` \xb7 ${n.name}`:""}`:n.name||"",improvementSuggestion:s})}return r}(o))A.push(e);for(let e of function(e){let t=function(e){let t=d(e);if(!t)return[];let r=p(t.key_point_findings),n=p(t.resultEvaluation&&"object"==typeof t.resultEvaluation?t.resultEvaluation.key_point_findings:void 0);return r.length>0?r:n}(e.rawAnalysisJson),r=d(e.rawAnalysisJson);if(u(r))return[];let n=[];for(let e of t){if(!0===e.covered||!1===l(e.is_skill_attributable,e.isSkillAttributable))continue;let t=String(e.content||e.missing_reason||"").trim();if(!t)continue;let r=function(e){var t;let r=e.trace_root_cause&&"object"==typeof e.trace_root_cause?e.trace_root_cause:void 0,n=p(r?.related_steps);return[g("结果分析",e.explanation),g("缺失原因",e.missing_reason),g("实际输出",e.evidence?.actual),g("预期输出",e.evidence?.expected),g("过程根因",r?.failure_reason),g("相关步骤",(t=n,0===t.length?"":t.map(e=>{let t="number"==typeof e.step_index?e.step_index:e.stepIndex;return[null!=t?`#${t}`:"",e.kind||"",e.name||"",e.evidence||""].filter(Boolean).join(" · ")}).join(" | "))),g("Skill归因",e.attribution_reason)].filter(Boolean).join("\n")}(e),i=String(e.attribution_reason||"").trim()||void 0;n.push({severity:f(e.severity),category:"关键观点遗漏",summary:t,evidence:r,reasoning:i,improvementSuggestion:c(e.improvement_suggestion,e.improvementSuggestion)})}return n}(o))A.push(e);for(let e of function(e){let t=d(e.rawAnalysisJson);if(!t||u(t))return[];let r=t.dimension_details&&"object"==typeof t.dimension_details?t.dimension_details.tool_choice:void 0,n=p(r&&"object"==typeof r?r.problematic_steps:void 0),i=[];for(let e of n){if(!1===l(e.is_skill_attributable,e.isSkillAttributable))continue;let t=f(e.severity);if("low"===t)continue;let r=String(e.issue||e.reason||"").trim();if(!r)continue;let n=e.step_index??e.stepIndex;i.push({severity:t,category:"工具误用",summary:r,evidence:[null!=n?`Step #${n}`:"",e.tool?`tool=${e.tool}`:"",e.skill?`skill=${e.skill}`:""].filter(Boolean).join(" · "),improvementSuggestion:c(e.improvement_suggestion,e.improvementSuggestion)})}return i}(o))A.push(e);for(let e of function(e){let t=d(e.rawAnalysisJson);if(!t||u(t))return[];let r=p(t.result_issues),n=p(t.resultEvaluation&&"object"==typeof t.resultEvaluation?t.resultEvaluation.result_issues:void 0),i=r.length>0?r:n,a=[];for(let e of i){if(!1===l(e.is_skill_attributable,e.isSkillAttributable))continue;let t=f(e.severity);if("low"===t)continue;let r=String(e.summary||"").trim();if(!r)continue;let n=String(e.kind||"other").toLowerCase().trim(),i=y[n]||y.other;a.push({severity:t,category:i,summary:r,evidence:n&&n!==i?`kind=${n}`:"",improvementSuggestion:c(e.improvement_suggestion,e.improvementSuggestion)})}return a}(o))A.push(e);if(0===A.length)return 0;let w=null;if(r)try{let e=await i.prismaRaw.execution.findFirst({where:{taskId:r},select:{id:!0}});w=e?.id??null}catch{w=null}let S=0;for(let e of h){let r=await s(t,e.name);if(!r)continue;let o=e.version??r.activeVersion??0,l=new Set,u=[];for(let e of A){let t=`${e.category}::${m(e.summary)}::${e.dedupSalt||""}`;l.has(t)||(l.add(t),u.push(e))}if(0!==u.length)try{let e=await i.prismaRaw.evaluation.create({data:{type:"dynamic",skillId:r.id,version:o,user:t,executionId:w,generator:"trajectory-evaluator@1.0",runId:a,status:"ok"}}),s=u.map(i=>{var a;return{evaluationId:e.id,source:"dynamic",skillId:r.id,version:o,user:t,dedupKey:(a=i,(0,n.createHash)("sha1").update(`${a.category}::${m(a.summary)}::${a.dedupSalt||""}`).digest("hex").slice(0,6)),severity:i.severity,summary:i.summary,evidence:i.evidence||null,reasoning:i.reasoning||null,suggestedFix:i.improvementSuggestion||null,ruleId:null,dimension:null,category:i.category}});s.length>0&&(await i.prismaRaw.skillIssue.createMany({data:s}),S+=s.length)}catch(t){console.warn("[derive-skill-opt-points] write failed for skill",e.name,":",t.message)}}return S}async function s(e,t){try{return await i.prismaRaw.skill.findFirst({where:{name:t,OR:[{user:e},{user:null}]},select:{id:!0,activeVersion:!0}})}catch{return null}}[i]=a.then?(await a)():a;let y={format:"格式偏差",extra_content:"多余内容",verbosity:"表达问题",incorrect_fact:"事实错误",other:"结果问题"};function l(e,t){return!1!==e&&!1!==t&&(!0===e||!0===t||null)}function u(e){if(!e)return!1;if("no-skill"===e.resultSkillMode)return!0;let t=e.skillAttribution;return!(!t||"object"!=typeof t||Array.isArray(t))&&"not-applicable"===t.state}function c(e,t){return String(e??t??"").trim()||void 0}function f(e){let t=String(e||"medium").toLowerCase().trim();return"high"===t||"critical"===t?"high":"low"===t||"minor"===t?"low":"medium"}function m(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,200)}function d(e){if(!e)return null;try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function p(e){return Array.isArray(e)?e:[]}function g(e,t){let r=String(t||"").trim();return r?`${e}:${r}`:""}e.s(["deriveAndPersistOptPoints",()=>o]),r()}catch(e){r(e)}},!1),484695,e=>{e.v(e=>Promise.resolve().then(()=>e(759453)))},419781,e=>{e.v(e=>Promise.resolve().then(()=>e(106411)))}];
|
|
11
|
+
score 必须是 0.0 到 1.0 之间的数字;reason 说明评分依据。`),permission:(0,o.buildEvaluatorPermissions)()},E="",I=null;try{let t=new n.AgentInsight({baseURL:i,logLevel:"warn"}),a=await t.createSession({title:`${p.name}-${Date.now()}`,directory:"/tmp"}),o=String(a?.id||a?.ID||"");if(!o)throw Error("Failed to create opencode session for custom evaluation");let s=await k(e,p.name);(0,c.tagOpencodeSession)(o,{agentName:p.name,agentId:s,displayQuery:r.caseInput,user:e});try{E=(await Promise.race([t.chat(o,_,{onText:e=>{E+=e.delta},onError:e=>{I=e}},{streamTimeoutMs:$,idleTimeoutMs:$}),new Promise((e,t)=>setTimeout(()=>t(Error(`LLM 调用超时(${$}ms)`)),$))])).text||E}finally{try{await t.deleteSession(o)}catch{}}}catch(e){I=e instanceof Error?e:Error(String(e))}if(I){let e=A(E||I.message);if(null==e)return{evaluatorId:p.id,evaluatorName:p.name,score:null,reason:"",rawResponse:E,model:b,durationMs:Date.now()-d,error:`自建评估器调用失败:${I.message}`}}let N=A(E),T=function(e){if(!e)return"";let t=function(e){if(!e)return null;let t=e.match(/```(?:json)?\s*([\s\S]*?)```/i);for(let r of[t?.[1],e].filter(e=>!!e)){try{let e=JSON.parse(r);if(e&&"object"==typeof e&&!Array.isArray(e))return e}catch{}let e=r.indexOf("{"),t=r.lastIndexOf("}");if(-1!==e&&t>e)try{let n=JSON.parse(r.slice(e,t+1));if(n&&"object"==typeof n&&!Array.isArray(n))return n}catch{}}return null}(e);if(t)for(let e of["reason","explanation","rationale","评测理由","原因"]){let r=t[e];if("string"==typeof r&&r.trim())return r.trim().slice(0,2e3)}return(e.replace(/```(?:json)?\s*[\s\S]*?```/g,"").trim()||e).slice(0,2e3)}(E);return{evaluatorId:p.id,evaluatorName:p.name,score:N,reason:T,rawResponse:E,model:b,durationMs:Date.now()-d,error:null==N?"未能从模型响应中解析出 0-1 分数":void 0}}),{taskType:"custom-llm-eval",user:e,skill:u??void 0,skillVersion:m??null,label:`custom-eval: ${t}`,silent:!0})}e.s(["isCustomEvaluatorId",()=>p,"listCustomEvaluatorIds",()=>h,"loadCustomEvaluator",()=>y,"runCustomLlmEvaluator",()=>_,"syncCustomEvaluatorRegisteredAgents",()=>b]),r()}catch(e){r(e)}},!1),580077,e=>{"use strict";function t(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function r(e){return String(e.name??e.call??e.toolName??e.tool??e.functionName??"").trim()}function n(e,t,r){let n="number"==typeof t?t:Number(t),i=e.filter(e=>!r.has(e.call)),a=(Number.isFinite(n)?i.find(e=>e.count===n):null)||i[0]||e[0];return a?(r.add(a.call),a.call):""}function i(e,i){let a=t(e.dimension_details??e.dimensionDetails),o=t(a.redundancy),s=function(e){let n=new Map;for(let[i,a]of e.entries()){let e=t(a),o=String(e.kind||"").toLowerCase();if("tool"!==o&&"skill"!==o&&"task"!==o)continue;let s=r(e);if(!s)continue;let l=function(e,t){let r=e.step_index??e.stepIndex??e.index,n="number"==typeof r?r:Number(r);return Number.isFinite(n)?n:t}(e,i),u=n.get(s)||{call:s,count:0,firstIndex:null,lastIndex:null};u.count+=1,u.firstIndex=null==u.firstIndex?l:Math.min(u.firstIndex,l),u.lastIndex=null==u.lastIndex?l:Math.max(u.lastIndex,l),n.set(s,u)}return Array.from(n.values()).sort((e,t)=>{let r=t.count-e.count;return 0!==r?r:(e.firstIndex??Number.MAX_SAFE_INTEGER)-(t.firstIndex??Number.MAX_SAFE_INTEGER)})}(Array.isArray(i)?i:[]);if(0===Object.keys(o).length||0===s.length)return e;let l=new Set,u=Array.isArray(o.heavy_repeated_calls)?o.heavy_repeated_calls.map(e=>{let i=t(e),a=r(i)||n(s,i.count,l);return a?{...i,call:a}:i}):o.heavy_repeated_calls,c=new Set,m=Array.isArray(o.consecutive_same_runs)?o.consecutive_same_runs.map(e=>{let i=t(e),a=r(i)||n(s,i.count,c),o=s.find(e=>e.call===a);return a?{...i,name:a,from:i.from??o?.firstIndex,to:i.to??o?.lastIndex}:i}):o.consecutive_same_runs,f={...o,...Array.isArray(u)?{heavy_repeated_calls:u}:{},...Array.isArray(m)?{consecutive_same_runs:m}:{}},d={...a,redundancy:f};return{...e,dimension_details:d}}function a(e,t){let r=Math.round(1e3*(.45*o("number"==typeof e.completeness?e.completeness:0)+.35*o(e.toolChoice)+.2*o(e.redundancy)))/1e3,n=Array.isArray(t)?t:[],i=n.filter(e=>e?.severity==="high").length,a=n.filter(e=>e?.severity==="medium").length,s=`轨迹分按完整性/工具选择/冗余加权计算;严重度仅用于诊断展示(high ${i},medium ${a}),不调整最终分。`;return{trajectoryScore:o(r),rawWeightedScore:r,scoreAggregation:{mode:"trajectory",reason:s,rawWeightedScore:r,finalScore:o(r),highCount:i,mediumCount:a}}}function o(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}e.s(["aggregateTrajectoryScore",()=>a,"normalizeTrajectoryRedundancyDetails",()=>i])},520813,e=>{"use strict";var t=e.i(286372);function r(e){var r;let i;if(!Array.isArray(e)||0===e.length)return null;for(let a of(r=e,(i=(0,t.buildAgentCallTree)(r))&&Array.isArray(i.interactionIndices)&&i.interactionIndices.length>0?[...i.interactionIndices].sort((e,t)=>e-t):r.map((e,t)=>({interaction:e,index:t})).filter(({interaction:e})=>"subagent"!==String(e.role||"").toLowerCase()&&!e.subagent_session_id&&!e.subagent_name).map(e=>e.index))){let t=function(e){if(!e)return[];let t=[];for(let r of function(e){let t=[];if(e.toolCall&&t.push(e.toolCall),Array.isArray(e.toolCalls)&&t.push(...e.toolCalls),Array.isArray(e.tool_calls)&&t.push(...e.tool_calls),Array.isArray(e.responseMessage?.tool_calls)&&t.push(...e.responseMessage.tool_calls),Array.isArray(e.content))for(let r of e.content)r&&"object"==typeof r&&("toolCall"===r.type||"tool_use"===r.type)&&"string"==typeof r.name&&t.push({name:r.name,arguments:r.arguments??r.input});return t}(e)){let e=r.name||r.function?.name,i=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}}(r.arguments??r.function?.arguments);if("skill"===e||"load_skill"===e){let e=function(e){var t;if(!e||"object"!=typeof e)return null;let r=n(e.name)||n(e.skill)||n(e.skillName)||n(e.skill_name);return r?{name:r,version:("number"==typeof(t=e.version??e.skillVersion??e.skill_version)&&Number.isFinite(t)?t:"string"==typeof t&&t.trim()&&Number.isFinite(Number(t))?Number(t):void 0)??null}:null}(i);e&&t.push(e)}}return function(e){let t=new Set,r=[];for(let n of e){let e=`${n.name}:${n.version??""}`;t.has(e)||(t.add(e),r.push(n))}return r}(t)}(e[a]);if(t.length>0)return t[0]}return null}function n(e){return"string"==typeof e&&e.trim()?e.trim():void 0}e.s(["getRootSkillFromInteractions",()=>r])},418494,e=>e.a(async(t,r)=>{try{var n=e.i(254799),i=e.i(854763),a=t([i]);async function o(e){let{user:t,taskId:r,runId:a,trajectoryRow:o,skills:h}=e;if(0===h.length)return 0;let v=d(o.rawAnalysisJson);if(u(v))return 0;let A=[];for(let e of function(e){var t;let r,n,i=d(e.rawAnalysisJson);if(!i||u(i))return[];let a=(t=i,r=p(t.key_action_results),n=p(t.keyActionResults),r.length>0?r:n),o=[];for(let e of a){if((e.has_skill_improvement??e.hasSkillImprovement)!==!0)continue;let t=c(e.skill_improvement_suggestion,e.skillImprovementSuggestion);if(!t)continue;let r=String(e.action_id??e.actionId??"").trim(),n=String(e.action_content??e.actionContent??"").trim(),i=String(e.skill_issue_summary??e.skillIssueSummary??"").trim()||n||t,a=String(e.skill_issue_evidence??e.skillIssueEvidence??"").trim()||String(e.trace_comparison_analysis??e.traceComparisonAnalysis??"").trim();o.push({severity:m(e.severity),category:"关键动作执行不足",summary:i,evidence:a,reasoning:String(e.trace_comparison_analysis??e.traceComparisonAnalysis??"").trim()||void 0,improvementSuggestion:t,dedupSalt:r||n})}return o}(o))A.push(e);for(let e of function(e){let t=function(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}(e.deviationStepsJson),r=[];for(let n of t){if(!1===l(n.is_skill_attributable,n.isSkillAttributable))continue;let t=m(n.severity);if("low"===t)continue;let i=String(n.deviation||"").trim();if(!i)continue;let a="number"==typeof n.stepIndex?n.stepIndex:null,o=String(e.rootCauseStep||"").includes(`#${a}`),s=c(n.improvement_suggestion,n.improvementSuggestion);r.push({severity:o?"high":t,category:"轨迹偏差",summary:i,evidence:null!=a?`Step #${a}${n.name?` \xb7 ${n.name}`:""}`:n.name||"",improvementSuggestion:s})}return r}(o))A.push(e);for(let e of function(e){let t=function(e){let t=d(e);if(!t)return[];let r=p(t.key_point_findings),n=p(t.resultEvaluation&&"object"==typeof t.resultEvaluation?t.resultEvaluation.key_point_findings:void 0);return r.length>0?r:n}(e.rawAnalysisJson),r=d(e.rawAnalysisJson);if(u(r))return[];let n=[];for(let e of t){if(!0===e.covered||!1===l(e.is_skill_attributable,e.isSkillAttributable))continue;let t=String(e.content||e.missing_reason||"").trim();if(!t)continue;let r=function(e){var t;let r=e.trace_root_cause&&"object"==typeof e.trace_root_cause?e.trace_root_cause:void 0,n=p(r?.related_steps);return[g("结果分析",e.explanation),g("缺失原因",e.missing_reason),g("实际输出",e.evidence?.actual),g("预期输出",e.evidence?.expected),g("过程根因",r?.failure_reason),g("相关步骤",(t=n,0===t.length?"":t.map(e=>{let t="number"==typeof e.step_index?e.step_index:e.stepIndex;return[null!=t?`#${t}`:"",e.kind||"",e.name||"",e.evidence||""].filter(Boolean).join(" · ")}).join(" | "))),g("Skill归因",e.attribution_reason)].filter(Boolean).join("\n")}(e),i=String(e.attribution_reason||"").trim()||void 0;n.push({severity:m(e.severity),category:"关键观点遗漏",summary:t,evidence:r,reasoning:i,improvementSuggestion:c(e.improvement_suggestion,e.improvementSuggestion)})}return n}(o))A.push(e);for(let e of function(e){let t=d(e.rawAnalysisJson);if(!t||u(t))return[];let r=t.dimension_details&&"object"==typeof t.dimension_details?t.dimension_details.tool_choice:void 0,n=p(r&&"object"==typeof r?r.problematic_steps:void 0),i=[];for(let e of n){if(!1===l(e.is_skill_attributable,e.isSkillAttributable))continue;let t=m(e.severity);if("low"===t)continue;let r=String(e.issue||e.reason||"").trim();if(!r)continue;let n=e.step_index??e.stepIndex;i.push({severity:t,category:"工具误用",summary:r,evidence:[null!=n?`Step #${n}`:"",e.tool?`tool=${e.tool}`:"",e.skill?`skill=${e.skill}`:""].filter(Boolean).join(" · "),improvementSuggestion:c(e.improvement_suggestion,e.improvementSuggestion)})}return i}(o))A.push(e);for(let e of function(e){let t=d(e.rawAnalysisJson);if(!t||u(t))return[];let r=p(t.result_issues),n=p(t.resultEvaluation&&"object"==typeof t.resultEvaluation?t.resultEvaluation.result_issues:void 0),i=r.length>0?r:n,a=[];for(let e of i){if(!1===l(e.is_skill_attributable,e.isSkillAttributable))continue;let t=m(e.severity);if("low"===t)continue;let r=String(e.summary||"").trim();if(!r)continue;let n=String(e.kind||"other").toLowerCase().trim(),i=y[n]||y.other;a.push({severity:t,category:i,summary:r,evidence:n&&n!==i?`kind=${n}`:"",improvementSuggestion:c(e.improvement_suggestion,e.improvementSuggestion)})}return a}(o))A.push(e);if(0===A.length)return 0;let w=null;if(r)try{let e=await i.prismaRaw.execution.findFirst({where:{taskId:r},select:{id:!0}});w=e?.id??null}catch{w=null}let S=0;for(let e of h){let r=await s(t,e.name);if(!r)continue;let o=e.version??r.activeVersion??0,l=new Set,u=[];for(let e of A){let t=`${e.category}::${f(e.summary)}::${e.dedupSalt||""}`;l.has(t)||(l.add(t),u.push(e))}if(0!==u.length)try{let e=await i.prismaRaw.evaluation.create({data:{type:"dynamic",skillId:r.id,version:o,user:t,executionId:w,generator:"trajectory-evaluator@1.0",runId:a,status:"ok"}}),s=u.map(i=>{var a;return{evaluationId:e.id,source:"dynamic",skillId:r.id,version:o,user:t,dedupKey:(a=i,(0,n.createHash)("sha1").update(`${a.category}::${f(a.summary)}::${a.dedupSalt||""}`).digest("hex").slice(0,6)),severity:i.severity,summary:i.summary,evidence:i.evidence||null,reasoning:i.reasoning||null,suggestedFix:i.improvementSuggestion||null,ruleId:null,dimension:null,category:i.category}});s.length>0&&(await i.prismaRaw.skillIssue.createMany({data:s}),S+=s.length)}catch(t){console.warn("[derive-skill-opt-points] write failed for skill",e.name,":",t.message)}}return S}async function s(e,t){try{return await i.prismaRaw.skill.findFirst({where:{name:t,OR:[{user:e},{user:null}]},select:{id:!0,activeVersion:!0}})}catch{return null}}[i]=a.then?(await a)():a;let y={format:"格式偏差",extra_content:"多余内容",verbosity:"表达问题",incorrect_fact:"事实错误",other:"结果问题"};function l(e,t){return!1!==e&&!1!==t&&(!0===e||!0===t||null)}function u(e){if(!e)return!1;if("no-skill"===e.resultSkillMode)return!0;let t=e.skillAttribution;return!(!t||"object"!=typeof t||Array.isArray(t))&&"not-applicable"===t.state}function c(e,t){return String(e??t??"").trim()||void 0}function m(e){let t=String(e||"medium").toLowerCase().trim();return"high"===t||"critical"===t?"high":"low"===t||"minor"===t?"low":"medium"}function f(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,200)}function d(e){if(!e)return null;try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function p(e){return Array.isArray(e)?e:[]}function g(e,t){let r=String(t||"").trim();return r?`${e}:${r}`:""}e.s(["deriveAndPersistOptPoints",()=>o]),r()}catch(e){r(e)}},!1),484695,e=>{e.v(e=>Promise.resolve().then(()=>e(759453)))},419781,e=>{e.v(e=>Promise.resolve().then(()=>e(106411)))}];
|
|
12
12
|
|
|
13
13
|
//# sourceMappingURL=_d36858e9._.js.map
|