agent-insight 0.3.0-beta → 0.3.1-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/app-path-routes-manifest.json +1 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +6 -0
- package/.next/standalone/.next/server/app/(main)/accessconfig/channels/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/accessconfig/health/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/accessconfig/install/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/accessconfig/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/accessconfig/webhooks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/agents/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/[id]/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.js.nft.json +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)/evaluation/[id]/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)/memory/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/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/modelconfig/registry/page.js.nft.json +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)/optapi/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/quality/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(main)/quality/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/security/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-eval/trigger/[skillName]/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-history/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-history/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)/skill-release/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skills/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(main)/skills/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/trace/page.js.nft.json +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/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/channels.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.rsc +2 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/health.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.rsc +2 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/install.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.rsc +3 -3
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig/webhooks.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.rsc +2 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig.rsc +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/accessconfig.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/accessconfig.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/agents.html +1 -1
- package/.next/standalone/.next/server/app/agents.rsc +3 -3
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +2 -2
- 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 +3 -3
- package/.next/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/agent/run/route.js +5 -5
- 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 +3 -3
- 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 +5 -5
- 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 +5 -5
- 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 +11 -11
- 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/config/backfill-routing/route.js +4 -4
- package/.next/standalone/.next/server/app/api/eval/config/backfill-routing/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/config/route.js +6 -6
- package/.next/standalone/.next/server/app/api/eval/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/rejudge/route.js +6 -6
- package/.next/standalone/.next/server/app/api/eval/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/terminate-all/route.js +6 -6
- 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/run/route.js +9 -9
- package/.next/standalone/.next/server/app/api/eval/trajectory/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/evaluation/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/fault/diagnosis/stream/route.js +5 -5
- package/.next/standalone/.next/server/app/api/fault/diagnosis/stream/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/opencode/session-complete/route.js +5 -5
- package/.next/standalone/.next/server/app/api/ingest/opencode/session-complete/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/otel/v1/traces/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ingest/otel/v1/traces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/proxy/[taskId]/end/route.js +5 -5
- package/.next/standalone/.next/server/app/api/ingest/proxy/[taskId]/end/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route.js +7 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/hermes-plugin/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/ingest/upload/route.js +7 -7
- package/.next/standalone/.next/server/app/api/ingest/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/data/route.js +4 -4
- package/.next/standalone/.next/server/app/api/observe/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/agent-debug/route.js +5 -5
- 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/observe/executions/[executionId]/agent-debug/skills-analysis/route.js +9 -9
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/agent-debug/skills-analysis/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/task-stats/route.js +3 -3
- package/.next/standalone/.next/server/app/api/observe/task-stats/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/quality/agents/route.js +4 -4
- package/.next/standalone/.next/server/app/api/quality/agents/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/quality/executions/route.js +4 -4
- package/.next/standalone/.next/server/app/api/quality/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/draft/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/run/route.js +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 +5 -5
- package/.next/standalone/.next/server/app/api/skill-generator/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/content/route.js +3 -3
- package/.next/standalone/.next/server/app/api/skill-generator/files/content/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/download/route.js +5 -5
- package/.next/standalone/.next/server/app/api/skill-generator/files/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/info/route.js +3 -3
- package/.next/standalone/.next/server/app/api/skill-generator/files/info/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/list/route.js +3 -3
- package/.next/standalone/.next/server/app/api/skill-generator/files/list/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/chat/route.js +4 -4
- package/.next/standalone/.next/server/app/api/skill-opt/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/benchmark-generate/route.js +5 -5
- package/.next/standalone/.next/server/app/api/skills/[id]/benchmark-generate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/runs/route.js +3 -3
- package/.next/standalone/.next/server/app/api/skills/[id]/runs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/evaluate/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/evaluation-summary/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/files/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +4 -4
- package/.next/standalone/.next/server/app/api/skills/logs/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 +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dataset.html +1 -1
- package/.next/standalone/.next/server/app/dataset.rsc +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/dataset.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dataset.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval/trajectory.html +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.rsc +3 -3
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval.html +1 -1
- package/.next/standalone/.next/server/app/eval.rsc +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/eval.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/eval.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/fault.html +1 -1
- package/.next/standalone/.next/server/app/fault.rsc +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/fault.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/fault.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/memory.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/metrics.html +1 -1
- package/.next/standalone/.next/server/app/metrics.rsc +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/metrics.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/metrics.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/registry.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.rsc +3 -3
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig/web-search.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.rsc +3 -3
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig.rsc +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/modelconfig.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/modelconfig.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/optapi.html +1 -1
- package/.next/standalone/.next/server/app/optapi.rsc +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/optapi.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/optapi.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/quality.html +1 -1
- package/.next/standalone/.next/server/app/quality.rsc +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/quality.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/security.html +1 -1
- package/.next/standalone/.next/server/app/security.rsc +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/security.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/security.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-detail/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skill-detail.html +1 -1
- package/.next/standalone/.next/server/app/skill-detail.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-detail.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-detail.segments/_tree.segment.rsc +2 -2
- 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 +5 -5
- 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 +5 -5
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-eval.html +1 -1
- package/.next/standalone/.next/server/app/skill-eval.rsc +5 -5
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval/__PAGE__.segment.rsc +3 -3
- 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 +5 -5
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-eval.segments/_tree.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/skill-generator.html +1 -1
- package/.next/standalone/.next/server/app/skill-generator.rsc +3 -3
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-generator.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-history.html +1 -1
- package/.next/standalone/.next/server/app/skill-history.rsc +3 -3
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history/__PAGE__.segment.rsc +2 -2
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-history.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-opt.html +1 -1
- package/.next/standalone/.next/server/app/skill-opt.rsc +3 -3
- 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 +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-opt.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-release.html +1 -1
- package/.next/standalone/.next/server/app/skill-release.rsc +2 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/skill-release.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.html +1 -1
- package/.next/standalone/.next/server/app/skills.rsc +4 -4
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills/__PAGE__.segment.rsc +3 -3
- 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 +4 -4
- package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/trace.html +1 -1
- package/.next/standalone/.next/server/app/trace.rsc +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/trace.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__040b569f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__045587bf._.js +6 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__bfd5933a._.js → [root-of-the-server]__0b0ca028._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e81c059._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1e033f42._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__35b27244._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__b88f14c0._.js → [root-of-the-server]__363f8caf._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__45f15a40._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5c5398f8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__677bd848._.js +21 -21
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__d436a672._.js → [root-of-the-server]__6de56d9f._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b57a53c2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b9ea78fe._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__7c29779d._.js → [root-of-the-server]__c5028c19._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ca706dfb._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__67e8aa0f._.js → [root-of-the-server]__cc29b58c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cc3948c5._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e8b45be8._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__eb171d10._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fef5bbd7._.js +1 -1
- package/.next/standalone/.next/server/chunks/_19441465._.js +370 -0
- package/.next/standalone/.next/server/chunks/{_1715c14d._.js → _1bd51141._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_5041b697._.js +14 -14
- package/.next/standalone/.next/server/chunks/_73cb0d03._.js +1 -1
- package/.next/standalone/.next/server/chunks/_a0c6d359._.js +7 -7
- package/.next/standalone/.next/server/chunks/_b8c4ce57._.js +3 -0
- package/.next/standalone/.next/server/chunks/_c14dfae2._.js +1 -1
- package/.next/standalone/.next/server/chunks/_e0991a0e._.js +1 -1
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_ingest_setup_hermes-plugin_route_actions_212af014.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_3239b80e._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_@langchain_core_dist_051f8412._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_@langchain_core_dist_0cad7765._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_@langchain_core_dist_8e3308fa._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_@langchain_langgraph_dist_index_23ed4b74.js +25 -25
- package/.next/standalone/.next/server/chunks/node_modules_d933a926._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_23ab65eb.js +39 -51
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c4a195e5.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_undici_206d7c0f._.js +15 -15
- package/.next/standalone/.next/server/chunks/src_34fb142e._.js +15 -15
- package/.next/standalone/.next/server/chunks/src_lib_1466262d._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_5d86eca7._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_7bae418f._.js +6 -0
- package/.next/standalone/.next/server/chunks/{src_lib_ac48c2f3._.js → src_lib_beee2d37._.js} +6 -6
- package/.next/standalone/.next/server/chunks/src_lib_c6d9db51._.js +3 -0
- package/.next/standalone/.next/server/chunks/{src_lib_3205a4fa._.js → src_lib_e361eb76._.js} +6 -6
- package/.next/standalone/.next/server/chunks/src_lib_engine_evaluation_d6ad3d54._.js +6 -6
- package/.next/standalone/.next/server/chunks/src_lib_engine_evaluation_evaluator-execution-recorder_ts_d7fedcdd._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_engine_general-agent_970b1dfe._.js +3 -3
- package/.next/standalone/.next/server/chunks/src_lib_engine_skill-issues_static-evaluator_5e9f2d8a._.js +12 -7
- package/.next/standalone/.next/server/chunks/src_lib_ingest_1accb82d._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__dfea64df._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0141e5c7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_10e7e5d6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_633b8c91._.js → _231821bd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_23385550._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_338db557._.js +1 -5
- package/.next/standalone/.next/server/chunks/ssr/_37d91d48._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_4796bd79._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_5e0dfc4e._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_5ea9f29c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_ad052dd8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_c16d64b3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_cebf2190._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_cfe5178e._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_d4828542._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_d710ba85._.js +1 -5
- package/.next/standalone/.next/server/chunks/ssr/node_modules_05c89d2c._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0b1debc8._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_118dfa2f._.js +26 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_241c62ac._.js +31 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_264cd040._.js +11 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_3ae4ac61._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_42146d1f._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_4eadc088._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_564ffb11._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_5d8dc663._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_653b0c30._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_77281965._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_77b8869b._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_7a0d9afc._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_7f5b5ff9._.js +45 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_7f7e9f17._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_7fe3c357._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_803c6412._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_8108cb01._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_831dfa9a._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_971a1a98._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_9d323b89._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_db228c3c._.js → node_modules_@mermaid-js_parser_dist_16c88699._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_22ce2656._.js → node_modules_@mermaid-js_parser_dist_21851c70._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_544082c1._.js → node_modules_@mermaid-js_parser_dist_31b46481._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_c48c72e0._.js → node_modules_@mermaid-js_parser_dist_32bdec7b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_ddbd29b7._.js → node_modules_@mermaid-js_parser_dist_66f35908._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_c8a78e27._.js → node_modules_@mermaid-js_parser_dist_94ecdc22._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_4f77a544._.js → node_modules_@mermaid-js_parser_dist_b85775a0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_3ab41ad8._.js → node_modules_@mermaid-js_parser_dist_c8728ae8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@radix-ui_react-popper_dist_index_mjs_0d6fc757._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_a22450a1._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_ab0108ca._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_cad8d256._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_d40eabb5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_f89ffeff._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2a7c4de9._.js → node_modules_fca55bff._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-5ZQYHXKU_mjs_9293a43d._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-CSCIHK7Q_mjs_5da5edc3._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_a11916de._.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_components_evaluation_index_ts_95565210._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_ui_select_tsx_4c0f64d8._.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{8b7ff3e53c4bbf8b.js → 0c7b05946b227f5a.js} +1 -5
- package/.next/standalone/.next/static/chunks/130e114057a9ebcd.js +1 -0
- package/.next/standalone/.next/static/chunks/14befe775870fecd.js +1 -0
- package/.next/standalone/.next/static/chunks/25ad82636e5b58a3.js +2 -0
- package/.next/{static/chunks/9b3f944a84387392.js → standalone/.next/static/chunks/3336df3d1032eecc.js} +1 -1
- package/.next/standalone/.next/static/chunks/43df5d7cd8ec46ff.js +1 -0
- package/.next/standalone/.next/static/chunks/463b43ecde7acc6b.js +1 -0
- package/.next/standalone/.next/static/chunks/{e5a2f98833719cb8.css → 5163848f38ac1cf6.css} +1 -1
- package/.next/standalone/.next/static/chunks/{30396061c28bf72c.js → 53af8dcc7be02445.js} +1 -1
- package/.next/standalone/.next/static/chunks/5e43a260c9f4f214.js +1 -0
- package/.next/{static/chunks/853a1f6bf3b6d443.js → standalone/.next/static/chunks/623f3222303930bb.js} +1 -1
- package/.next/{static/chunks/5407d16db75c16c3.js → standalone/.next/static/chunks/669150ee69928668.js} +1 -1
- package/.next/standalone/.next/static/chunks/6dbed19ae114b533.js +1 -0
- package/.next/standalone/.next/static/chunks/{9bdf47a06c8d728a.js → 72fce1376de53ff1.js} +1 -5
- package/.next/standalone/.next/static/chunks/7aff5373689149f6.css +1 -0
- package/.next/standalone/.next/static/chunks/{2f80f58326d89fa4.js → 7b15bab143d8c60f.js} +1 -1
- package/.next/{static/chunks/7ac51daef174f857.js → standalone/.next/static/chunks/83910a2aebec21cd.js} +1 -1
- package/.next/{static/chunks/4e25ec4dd6ef0459.js → standalone/.next/static/chunks/aab0b35af6737aed.js} +1 -1
- package/.next/standalone/.next/static/chunks/{7ac51daef174f857.js → ac4d824ecef761ad.js} +1 -1
- package/.next/standalone/.next/static/chunks/c44ecbd264254739.js +1 -0
- package/.next/standalone/.next/static/chunks/d04e17c648ef7960.js +4 -0
- package/.next/standalone/.next/static/chunks/e03cb31f10551f0b.js +119 -0
- package/.next/standalone/.next/static/chunks/e1ca3a6b74761a34.js +1 -0
- package/.next/standalone/.next/static/chunks/e4c086f27bba33f9.js +1 -0
- package/.next/standalone/.next/static/chunks/e623d8fba24bdb29.js +1 -0
- package/.next/standalone/.next/static/chunks/f4436f20374d2dbb.js +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/hermes_agent_insight_plugin.py +882 -0
- package/.next/static/chunks/{8b7ff3e53c4bbf8b.js → 0c7b05946b227f5a.js} +1 -5
- package/.next/static/chunks/130e114057a9ebcd.js +1 -0
- package/.next/static/chunks/14befe775870fecd.js +1 -0
- package/.next/static/chunks/25ad82636e5b58a3.js +2 -0
- package/.next/{standalone/.next/static/chunks/9b3f944a84387392.js → static/chunks/3336df3d1032eecc.js} +1 -1
- package/.next/static/chunks/43df5d7cd8ec46ff.js +1 -0
- package/.next/static/chunks/463b43ecde7acc6b.js +1 -0
- package/.next/static/chunks/{e5a2f98833719cb8.css → 5163848f38ac1cf6.css} +1 -1
- package/.next/static/chunks/{30396061c28bf72c.js → 53af8dcc7be02445.js} +1 -1
- package/.next/static/chunks/5e43a260c9f4f214.js +1 -0
- package/.next/{standalone/.next/static/chunks/853a1f6bf3b6d443.js → static/chunks/623f3222303930bb.js} +1 -1
- package/.next/{standalone/.next/static/chunks/5407d16db75c16c3.js → static/chunks/669150ee69928668.js} +1 -1
- package/.next/static/chunks/6dbed19ae114b533.js +1 -0
- package/.next/static/chunks/{9bdf47a06c8d728a.js → 72fce1376de53ff1.js} +1 -5
- package/.next/static/chunks/7aff5373689149f6.css +1 -0
- package/.next/static/chunks/{2f80f58326d89fa4.js → 7b15bab143d8c60f.js} +1 -1
- package/.next/{standalone/.next/static/chunks/82647ed55d4480ce.js → static/chunks/83910a2aebec21cd.js} +1 -1
- package/.next/{standalone/.next/static/chunks/4e25ec4dd6ef0459.js → static/chunks/aab0b35af6737aed.js} +1 -1
- package/.next/static/chunks/ac4d824ecef761ad.js +1 -0
- package/.next/static/chunks/c44ecbd264254739.js +1 -0
- package/.next/static/chunks/d04e17c648ef7960.js +4 -0
- package/.next/static/chunks/e03cb31f10551f0b.js +119 -0
- package/.next/static/chunks/e1ca3a6b74761a34.js +1 -0
- package/.next/static/chunks/e4c086f27bba33f9.js +1 -0
- package/.next/static/chunks/e623d8fba24bdb29.js +1 -0
- package/.next/static/chunks/f4436f20374d2dbb.js +1 -0
- package/package.json +1 -1
- package/scripts/hermes_agent_insight_plugin.py +882 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00c0800e._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2e16866c._.js +0 -6
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__52e5e5b6._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5782a103._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e80a8314._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f7423c32._.js +0 -3
- package/.next/standalone/.next/server/chunks/_7ecc72d5._.js +0 -370
- package/.next/standalone/.next/server/chunks/_fbb1d006._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_lib_68596f16._.js +0 -6
- package/.next/standalone/.next/server/chunks/src_lib_69eb724e._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__afc1fc82._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_1409f211._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_53a193b7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_8e246656._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_c5121a52._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_ddf088e7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_ff4f28a3._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/node_modules_03a4e1e8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_107e06c2._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1478fd1a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_28567d0f._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_2b979638._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_2be5a018._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_302487e0._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_327acc03._.js +0 -26
- package/.next/standalone/.next/server/chunks/ssr/node_modules_39d86cba._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_3c01063a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_3e9eb0ee._.js +0 -11
- package/.next/standalone/.next/server/chunks/ssr/node_modules_3f93cf58._.js +0 -45
- package/.next/standalone/.next/server/chunks/ssr/node_modules_4327b3e7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_4bea67c9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_561578ad._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_5997198a._.js +0 -31
- package/.next/standalone/.next/server/chunks/ssr/node_modules_64378d98._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_6e79a594._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_7cccaf98._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_8ac545aa._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_9bf47e56._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_9f38447b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_b213ca58._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_cdddc2e8._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_e51942b7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_f9ad22f8._.js +0 -17
- package/.next/standalone/.next/static/chunks/01874bd5a7fda069.js +0 -5
- package/.next/standalone/.next/static/chunks/05f725ad2bd51889.js +0 -5
- package/.next/standalone/.next/static/chunks/28c31d9589800fe1.js +0 -1
- package/.next/standalone/.next/static/chunks/41708ee675c0cc34.js +0 -1
- package/.next/standalone/.next/static/chunks/8481480a23164da3.js +0 -1
- package/.next/standalone/.next/static/chunks/8552cadf84c26cfe.js +0 -4
- package/.next/standalone/.next/static/chunks/8dc215cff38e080b.js +0 -5
- package/.next/standalone/.next/static/chunks/a5d8acb3d2573b32.js +0 -1
- package/.next/standalone/.next/static/chunks/a7e72ad6eda9aad1.js +0 -5
- package/.next/standalone/.next/static/chunks/bb69bd8f3fb2597f.js +0 -1
- package/.next/standalone/.next/static/chunks/c356ee0aa836b01c.js +0 -2
- package/.next/standalone/.next/static/chunks/c7b67d9c0be1999f.js +0 -1
- package/.next/standalone/.next/static/chunks/cdad5bb63a64bc1a.js +0 -119
- package/.next/standalone/.next/static/chunks/e0b132c675c3513e.js +0 -1
- package/.next/standalone/.next/static/chunks/e6562c7e7bb67446.css +0 -1
- package/.next/static/chunks/01874bd5a7fda069.js +0 -5
- package/.next/static/chunks/05f725ad2bd51889.js +0 -5
- package/.next/static/chunks/28c31d9589800fe1.js +0 -1
- package/.next/static/chunks/41708ee675c0cc34.js +0 -1
- package/.next/static/chunks/82647ed55d4480ce.js +0 -1
- package/.next/static/chunks/8481480a23164da3.js +0 -1
- package/.next/static/chunks/8552cadf84c26cfe.js +0 -4
- package/.next/static/chunks/8dc215cff38e080b.js +0 -5
- package/.next/static/chunks/a5d8acb3d2573b32.js +0 -1
- package/.next/static/chunks/a7e72ad6eda9aad1.js +0 -5
- package/.next/static/chunks/bb69bd8f3fb2597f.js +0 -1
- package/.next/static/chunks/c356ee0aa836b01c.js +0 -2
- package/.next/static/chunks/c7b67d9c0be1999f.js +0 -1
- package/.next/static/chunks/cdad5bb63a64bc1a.js +0 -119
- package/.next/static/chunks/e0b132c675c3513e.js +0 -1
- package/.next/static/chunks/e6562c7e7bb67446.css +0 -1
- /package/.next/standalone/.next/static/{1I9NXkgb5T_a680craVmT → XvmH6p-x60yNMPW2ZorCE}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{1I9NXkgb5T_a680craVmT → XvmH6p-x60yNMPW2ZorCE}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{1I9NXkgb5T_a680craVmT → XvmH6p-x60yNMPW2ZorCE}/_ssgManifest.js +0 -0
- /package/.next/static/{1I9NXkgb5T_a680craVmT → XvmH6p-x60yNMPW2ZorCE}/_buildManifest.js +0 -0
- /package/.next/static/{1I9NXkgb5T_a680craVmT → XvmH6p-x60yNMPW2ZorCE}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{1I9NXkgb5T_a680craVmT → XvmH6p-x60yNMPW2ZorCE}/_ssgManifest.js +0 -0
package/.next/standalone/.next/server/chunks/{src_lib_3205a4fa._.js → src_lib_e361eb76._.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module.exports=[596767,e=>{"use strict";var t=e.i(286372);function n(e,r="zh"){let i=function(e){if(!Array.isArray(e))return[];let t=[];for(let n of e)if(n){if(Array.isArray(n.requestMessages)||n.responseMessage){for(let e of n.requestMessages||[])e&&t.push(e);n.responseMessage&&t.push(n.responseMessage);continue}t.push(n)}return t}(e),a=[],l=e=>{a.push({...e,stepIndex:a.length+1})},c=i.find(e=>e?.role==="user"&&String(e.content||"").trim());c&&l({id:"input:root",name:"zh"===r?"用户输入":"User input",meta:c.usage?.input?`req ${c.usage.input} tok`:d(String(c.content||""),110),kind:"user",status:"ok",depth:0,interactionIndex:i.indexOf(c),startedAt:o(c.timeInfo?.created)??o(c.timestamp),completedAt:o(c.timeInfo?.completed),rawText:String(c.content||""),rawInput:String(c.content||"")});let f=(0,t.buildAgentCallTree)(i);return f&&(0,t.walkTree)(f,e=>{let t=e.events.find(e=>"user"===e.kind),n=[...e.events].reverse().find(e=>"llm"===e.kind),a=t&&(t.summary||t.interaction?.content)||void 0,o=n&&(n.interaction?.content||n.summary)||void 0;l({id:`agent:${e.id}`,name:0===e.depth?"zh"===r?"控制器路由":"Controller routing":"zh"===r?"子任务执行":"Subtask execution",meta:s(e,r),kind:"agent",status:"ok",depth:e.depth,startedAt:e.startedAt,completedAt:e.endedAt,rawText:[e.agentName,e.subagentType,s(e,r)].filter(Boolean).join(" "),rawInput:a,rawOutput:o}),e.events.forEach((t,n)=>{let a,s,o=function(e,t){var n,r,i;let a="zh"===t;if("user"===e.kind)return{name:a?"用户输入":"User input",meta:e.usage?.input?`req ${e.usage.input} tok`:d(e.summary||"",96)};if("llm"===e.kind){let t;return{name:a?"模型调用":"Model call",meta:[(t=[(n=e).name,n.interaction?.providerID,n.interaction?.modelID,n.summary].filter(Boolean).join(" ").toLowerCase()).includes("openai")||t.includes("gpt")||t.includes("chat.completions")?"OpenAI":t.includes("deepseek")?"DeepSeek":t.includes("anthropic")||t.includes("claude")?"Anthropic":"LLM Provider",e.usage?.input?`req ${e.usage.input} tok`:"",e.usage?.output?`out ${e.usage.output} tok`:""].filter(Boolean).join(" · ")||d(e.summary||"assistant response",96)}}if("skill"===e.kind){let t=e.args?.name||e.args?.skill||e.name||"skill";return{name:a?"执行 Skill":"Run skill",meta:`skill ${t}`}}if("task"===e.kind){let t=e.args?.subagent_type||e.args?.subagentType||"subagent";return{name:a?"调度子任务":"Dispatch subtask",meta:`spawn ${t}`}}return{name:a?"工具调用":"Tool call",meta:(r=e.name||"tool",i=e.args,"bash"===r?`bash ${d(i?.command||"",72)}`:"read"===r?`read ${i?.path||i?.file_path||""}`.trim():"write"===r?`write ${i?.path||i?.file_path||""}`.trim():"glob"===r?`glob ${i?.pattern||""}`.trim():"grep"===r?`grep ${i?.pattern||""}`.trim():`${r}${i?` ${d(u(i,90),90)}`:""}`)}}(t,r),c=t.completedAt||t.startedAt?"ok":"skipped";if("user"===t.kind)a=t.summary||t.interaction?.content||"";else if("llm"===t.kind){let n=t.interactionIndex??-1,o=new Set(e.interactionIndices.filter(e=>e<n)),l=[];for(let t of e.systemPrompts||[])t.text?.trim()&&l.push(`[System]
|
|
1
|
+
module.exports=[68987,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 n=Date.parse(t);return Number.isFinite(n)?n:null}return null}function n(e){let n=0,r=0,i="",a="",s="",o=0,l=0,u=0,d=0,c=0,f=0,p=0,g=0,m=0,h=Number.MAX_SAFE_INTEGER,A=0;for(let r of e||[]){if(!r)continue;let e=r.role,I="assistant"===e||"subagent"===e;if("assistant"===e){let e="string"==typeof r.content?r.content:"";e&&e.trim()&&(a=e),"string"==typeof r.model&&r.model?i=r.model:"string"==typeof r.modelID&&r.modelID&&(i=r.modelID)}r.agent&&"string"==typeof r.agent&&!s&&(s=r.agent);let y=t(r.timeInfo?.created),k=t(r.timeInfo?.completed),T=t(r.timestamp);if(y&&(h=Math.min(h,y),A=Math.max(A,y)),k&&(A=Math.max(A,k)),T&&(h=Math.min(h,T),A=Math.max(A,T)),!I)continue;f++;let x=r.usage;if(x){let e=function(e){let t=Number(e?.input_tokens??e?.input??0)||0,n=Number(e?.output_tokens??e?.output??0)||0,r=Number(e?.cache?.read??e?.cache_read_input_tokens??0)||0,i=Number(e?.cache?.write??e?.cache_creation_input_tokens??0)||0,a=Number(e?.reasoning??e?.reasoning_tokens??e?.completion_tokens_details?.reasoning_tokens??0)||0,s=e?.reasoning!==void 0&&a>0&&n<a?n+a:n;return{total:e?.total!==void 0?Number(e.total)||0:t+s+r+i,input:t,output:s,cacheRead:r,cacheWrite:i,reasoning:a,maxSingleCallTokens:t+s+r+i}}(x);n+=e.total,o+=e.input,l+=e.output,u+=e.cacheRead,d+=e.cacheWrite,c+=e.reasoning,e.maxSingleCallTokens>m&&(m=e.maxSingleCallTokens)}if(Array.isArray(r.tool_calls))for(let e of(p+=r.tool_calls.length,r.tool_calls))(e?.state==="error"||e?.state==="failed")&&g++}return h!==Number.MAX_SAFE_INTEGER&&A>h&&(r=A-h),{model:i||void 0,agentName:s||void 0,final_result:a||void 0,tokens:Math.round(n),latency:r/1e3,input_tokens:Math.round(o),output_tokens:Math.round(l),tool_call_count:p,tool_call_error_count:g,llm_call_count:f,cache_read_input_tokens:Math.round(u),cache_creation_input_tokens:Math.round(d),max_single_call_tokens:Math.round(m),reasoning_tokens:Math.round(c)}}e.s(["deriveOpencodeExecutionFields",()=>n])},596767,e=>{"use strict";var t=e.i(286372);function n(e,r="zh"){let i=function(e){if(!Array.isArray(e))return[];let t=[];for(let n of e)if(n){if(Array.isArray(n.requestMessages)||n.responseMessage){for(let e of n.requestMessages||[])e&&t.push(e);n.responseMessage&&t.push(n.responseMessage);continue}t.push(n)}return t}(e),a=[],l=e=>{a.push({...e,stepIndex:a.length+1})},c=i.find(e=>e?.role==="user"&&String(e.content||"").trim());c&&l({id:"input:root",name:"zh"===r?"用户输入":"User input",meta:c.usage?.input?`req ${c.usage.input} tok`:d(String(c.content||""),110),kind:"user",status:"ok",depth:0,interactionIndex:i.indexOf(c),startedAt:o(c.timeInfo?.created)??o(c.timestamp),completedAt:o(c.timeInfo?.completed),rawText:String(c.content||""),rawInput:String(c.content||"")});let f=(0,t.buildAgentCallTree)(i);return f&&(0,t.walkTree)(f,e=>{let t=e.events.find(e=>"user"===e.kind),n=[...e.events].reverse().find(e=>"llm"===e.kind),a=t&&(t.summary||t.interaction?.content)||void 0,o=n&&(n.interaction?.content||n.summary)||void 0;l({id:`agent:${e.id}`,name:0===e.depth?"zh"===r?"控制器路由":"Controller routing":"zh"===r?"子任务执行":"Subtask execution",meta:s(e,r),kind:"agent",status:"ok",depth:e.depth,startedAt:e.startedAt,completedAt:e.endedAt,rawText:[e.agentName,e.subagentType,s(e,r)].filter(Boolean).join(" "),rawInput:a,rawOutput:o}),e.events.forEach((t,n)=>{let a,s,o=function(e,t){var n,r,i;let a="zh"===t;if("user"===e.kind)return{name:a?"用户输入":"User input",meta:e.usage?.input?`req ${e.usage.input} tok`:d(e.summary||"",96)};if("llm"===e.kind){let t;return{name:a?"模型调用":"Model call",meta:[(t=[(n=e).name,n.interaction?.providerID,n.interaction?.modelID,n.summary].filter(Boolean).join(" ").toLowerCase()).includes("openai")||t.includes("gpt")||t.includes("chat.completions")?"OpenAI":t.includes("deepseek")?"DeepSeek":t.includes("anthropic")||t.includes("claude")?"Anthropic":"LLM Provider",e.usage?.input?`req ${e.usage.input} tok`:"",e.usage?.output?`out ${e.usage.output} tok`:""].filter(Boolean).join(" · ")||d(e.summary||"assistant response",96)}}if("skill"===e.kind){let t=e.args?.name||e.args?.skill||e.name||"skill";return{name:a?"执行 Skill":"Run skill",meta:`skill ${t}`}}if("task"===e.kind){let t=e.args?.subagent_type||e.args?.subagentType||"subagent";return{name:a?"调度子任务":"Dispatch subtask",meta:`spawn ${t}`}}return{name:a?"工具调用":"Tool call",meta:(r=e.name||"tool",i=e.args,"bash"===r?`bash ${d(i?.command||"",72)}`:"read"===r?`read ${i?.path||i?.file_path||""}`.trim():"write"===r?`write ${i?.path||i?.file_path||""}`.trim():"glob"===r?`glob ${i?.pattern||""}`.trim():"grep"===r?`grep ${i?.pattern||""}`.trim():`${r}${i?` ${d(u(i,90),90)}`:""}`)}}(t,r),c=t.completedAt||t.startedAt?"ok":"skipped";if("user"===t.kind)a=t.summary||t.interaction?.content||"";else if("llm"===t.kind){let n=t.interactionIndex??-1,o=new Set(e.interactionIndices.filter(e=>e<n)),l=[];for(let t of e.systemPrompts||[])t.text?.trim()&&l.push(`[System]
|
|
2
2
|
${d(t.text,1500)}`);for(let e of Array.from(o).sort((e,t)=>e-t)){let t=i[e];if(!t||"system"===t.role)continue;let n="string"==typeof t.content?t.content:u(t.content,2e3);n.trim()&&("user"===t.role||"opencode"===t.role?l.push(`[User]
|
|
3
3
|
${d(n,2e3)}`):("assistant"===t.role||"subagent"===t.role)&&l.push(`[Assistant]
|
|
4
|
-
${d(n,2e3)}`))}a=l.length>0?l.join("\n\n---\n\n"):void 0;let c=function(e,t){if(!Array.isArray(e)||0===e.length)return"";let n=e.map(e=>e?.function?.name||e?.name||"tool").slice(0,3),r=e.length>n.length?", ...":"";return"zh"===t?`${e.length} 个工具调用: ${n.join(", ")}${r}`:`${e.length} tool call${e.length>1?"s":""}: ${n.join(", ")}${r}`}(t.interaction?.tool_calls,r);s=[t.interaction?.content,c].filter(Boolean).join("\n")||t.summary||""}else("tool"===t.kind||"skill"===t.kind||"task"===t.kind)&&(void 0!==t.args&&(a=u(t.args,2e3)),("tool"===t.kind||"skill"===t.kind)&&void 0!==t.output&&null!==t.output&&(s=u(t.output,2e3)));l({id:`event:${e.id}:${n}`,name:o.name,meta:o.meta,kind:t.kind,status:c,depth:e.depth+1,interactionIndex:t.interactionIndex,eventIndex:n,toolCallId:t._toolCallId,startedAt:t.startedAt,completedAt:t.completedAt,rawText:[o.name,o.meta,t.name,t.summary,u(t.args,500),u(t.output,500)].filter(Boolean).join(" "),rawInput:a||void 0,rawOutput:s||void 0})})}),0===a.length&&l({id:"system:missing-trace",name:"zh"===r?"链路详情缺失":"Trace unavailable",meta:"zh"===r?"未找到可还原的 interactions。":"No interactions were available.",kind:"system",status:"skipped",depth:0,rawText:""}),a}function r(e,t,n="zh"){return Array.isArray(e)&&0!==e.length?e.map(e=>{if(e.trace_anchor?.step_id&&t.some(t=>t.id===e.trace_anchor?.step_id))return e;let r=function(e,t,n="zh"){if(!t.length)return null;let r=String(e.anchor_step_id||e.trace_anchor?.step_id||"").trim();if(r){let e=t.find(e=>e.id===r);if(e)return a(e,"step_id",.98,"zh"===n?"LLM 返回了候选步骤 ID,且后端校验存在":"The model returned a valid step id")}let i=/推理判断|时间窗口匹配/i.test(e.step||"")?null:String(e.step||"").match(/第\s*(\d+)\s*步/i);if(i){let e=Number(i[1]),r=t.find(t=>t.stepIndex===e);if(r)return a(r,"step_index",.9,"zh"===n?"来自故障记录的步骤编号":"Matched by failure step index")}let s=function(e,t,n){let r=u(e,2e3),i=r.match(/(?:tool_call_id|toolCallId|call_)[\"':\s-]*([A-Za-z0-9_.:-]{6,})/)?.[1];if(i){let e=t.find(e=>e.toolCallId===i);if(e)return a(e,"tool_call_id",.99,"zh"===n?"根据 tool_call_id 精确匹配":"Matched exactly by tool_call_id")}let s=r.match(/(?:interaction_index|interactionIndex)[\"':\s-]*(\d+)/)?.[1];if(s){let e=Number(s),r=t.find(t=>t.interactionIndex===e);if(r)return a(r,"interaction_index",.94,"zh"===n?"根据 interaction_index 精确匹配":"Matched by interaction_index")}return null}(e,t,n);if(s)return s;let o=l([e.failure_type,e.description,e.context,e.recovery,e.step].filter(Boolean).join(" ")),d=t.map(e=>{let t=0,n=l(e.rawText||`${e.name} ${e.meta}`);for(let e of Array.from(new Set(o.split(/[^a-z0-9_\-.]+/i).map(e=>e.trim().toLowerCase()).filter(e=>e.length>=3))).slice(0,12))n.includes(e)&&(t+=e.length>4?2:1);return/401|authentication|unauthori[sz]ed|api[_\s-]?key|认证|鉴权|权限/.test(o)&&"llm"===e.kind&&(t+=8),/tool|工具|bash|command|exit code|stderr|非零/.test(o)&&"tool"===e.kind&&(t+=7),/skill|技能|SKILL\.md/i.test(o)&&"skill"===e.kind&&(t+=7),/timeout|超时|卡住/.test(o)&&(t+=3),{step:e,score:t}}).sort((e,t)=>t.score-e.score);if(d[0]?.score>0){let e=d[0].score>=7?"type_rule":"text_match",t=d[0].score>=7?.78:.58;return a(d[0].step,e,t,d[0].score>=7?"zh"===n?"根据错误内容和节点类型匹配":"Matched by error content and step type":"zh"===n?"根据错误上下文文本匹配":"Matched by error context text")}let c=[...t].reverse().find(e=>"llm"===e.kind||"tool"===e.kind||"skill"===e.kind)||[...t].reverse().find(e=>"skipped"!==e.status);return c?a(c,"fallback",.35,"zh"===n?"未找到精确锚点,回退到最后一个已执行关键节点":"Fell back to the latest meaningful executed step"):null}(e,t,n);return r?{...e,trace_anchor:r}:e}):e}function i(e){return[`- step_id: ${e.id}`,` step_index: ${e.stepIndex}`,` name: ${e.name}`,` kind: ${e.kind}`,` meta: ${e.meta||"-"}`,null!=e.interactionIndex?` interaction_index: ${e.interactionIndex}`:"",e.toolCallId?` tool_call_id: ${e.toolCallId}`:"",null!=e.startedAt?` started_at: ${e.startedAt}`:"",null!=e.completedAt?` completed_at: ${e.completedAt}`:"",e.rawText?` evidence_text: ${d(e.rawText,220)}`:""].filter(Boolean).join("\n")}function a(e,t,n,r){return{step_id:e.id,step_index:e.stepIndex,display_name:e.name,kind:e.kind,interaction_index:e.interactionIndex,event_index:e.eventIndex,tool_call_id:e.toolCallId,started_at:e.startedAt,completed_at:e.completedAt,match_method:t,confidence:n,evidence:r}}function s(e,t){let n=[];e.agentName&&n.push(e.agentName),e.subagentType&&n.push(`type ${e.subagentType}`);let r=[e.stats.llmCalls?`${e.stats.llmCalls} LLM`:"",e.stats.toolCalls?`${e.stats.toolCalls} tool`:"",e.stats.skillCalls?`${e.stats.skillCalls} skill`:"",e.stats.taskCalls?`${e.stats.taskCalls} task`:""].filter(Boolean).join(" · ");return r&&n.push(r),n.join(" · ")||("zh"===t?"执行 Agent":"Agent")}function o(e){if(null!=e){if("number"==typeof e&&Number.isFinite(e))return e>0&&e<1e10?1e3*e:e;if("string"==typeof e){let t=e.trim();if(!t)return;if(/^\d+(\.\d+)?$/.test(t)){let e=Number(t);if(!Number.isFinite(e))return;return e>0&&e<1e10?1e3*e:e}let n=Date.parse(t);return Number.isFinite(n)?n:void 0}}}function l(e){return e.toLowerCase().replace(/\s+/g," ").trim()}function u(e,t=300){if(null==e)return"";if("string"==typeof e)return d(e,t);try{return d(JSON.stringify(e),t)}catch{return d(String(e),t)}}function d(e,t){let n=String(e||"");return n.length>t?`${n.slice(0,t)}...`:n}e.s(["attachFailureAnchors",()=>r,"buildFaultPathSteps",()=>n,"formatFaultPathStepForPrompt",()=>i])},864609,e=>{"use strict";let t=globalThis,n=t.__wittyPendingMap??(t.__wittyPendingMap=new Map);function r(e){if(n.has(e.requestId))return Promise.reject(Error(`duplicate requestId: ${e.requestId}`));let t=e.ttlMs??3e5;return new Promise((r,i)=>{let a=setTimeout(()=>{let r=n.get(e.requestId);r&&(n.delete(e.requestId),r.reject(Error(`interaction ${e.kind}/${e.requestId} timed out after ${t}ms`)))},t);n.set(e.requestId,{requestId:e.requestId,kind:e.kind,user:e.user,streamId:e.streamId,resolve:r,reject:i,expiresAt:Date.now()+t,timer:a})})}function i(e,t,r){let i=n.get(e);if(!i)return!1;if(i.user!==t)throw Error("user mismatch on interaction reply");return n.delete(e),clearTimeout(i.timer),i.resolve(r),!0}function a(e,t="stream closed"){let r=0;for(let[i,a]of n)a.streamId===e&&(n.delete(i),clearTimeout(a.timer),a.reject(Error(t)),r++);return r}e.s(["awaitInteraction",()=>r,"cancelStream",()=>a,"resolveInteraction",()=>i])},875890,e=>{"use strict";var t=e.i(666680),n=e.i(902157),r=e.i(750227),i=e.i(596767);let a=r.default.join(".agent-insight","trace");function s(e){let s=e.workspaceDir,f=Array.isArray(e.interactions)?e.interactions:[],p=function(e){let n="";try{n=JSON.stringify(e??null)}catch{n=String(e??"")}return t.default.createHash("sha256").update(n).digest("hex")}(f),g=r.default.join(s,a),m=r.default.join(g,"manifest.json"),
|
|
5
|
-
`,"utf8")}function u(e){return String(e||"node").replace(/[^A-Za-z0-9._-]/g,"_").slice(0,120)||"node"}function d(e,t){let n=String(e||"");return n.length>t?`${n.slice(0,t)}...<truncated>`:n}function c(e){return e.split(r.default.sep).join("/")}e.s(["ensureTraceBundle",()=>s])},437163,e=>{"use strict";function t(e){let t=null;return(e||[]).map(e=>{if(!e)return e;let n=!1;if(Array.isArray(e.tool_calls))for(let r of e.tool_calls){if("task"!==(r?.function?.name||r?.name))continue;let e=r?.function?.arguments;if("string"==typeof e)try{let r=JSON.parse(e),i=r?.subagent_type;"string"==typeof i&&i.trim()&&(t=i.trim(),n=!0)}catch{}}let r=e;return"subagent"===e.role&&!e.subagent_name&&t&&(r={...e,subagent_name:t}),"assistant"!==e.role||n||(t=null),r})}e.s(["inferSubagentNamesFromInteractions",()=>t])},748684,e=>{"use strict";var t=e.i(666680),n=e.i(596767);function r(e){let n="";try{n=JSON.stringify(e??[])}catch{n=String(e??"")}return t.default.createHash("sha256").update(n).digest("hex")}function i(e){let t=Array.isArray(e)?e:[],r=(0,n.buildFaultPathSteps)(t,"zh"),i=new Map;for(let e of r){if(null==e.interactionIndex)continue;let t=i.get(e.interactionIndex)||[];t.push({id:e.id,kind:e.kind,stepIndex:e.stepIndex,label:[e.name,e.meta].filter(Boolean).join(" · "),toolCallId:e.toolCallId}),i.set(e.interactionIndex,t)}let p=[];return t.forEach((e,t)=>{var n,r,g,m,A
|
|
4
|
+
${d(n,2e3)}`))}a=l.length>0?l.join("\n\n---\n\n"):void 0;let c=function(e,t){if(!Array.isArray(e)||0===e.length)return"";let n=e.map(e=>e?.function?.name||e?.name||"tool").slice(0,3),r=e.length>n.length?", ...":"";return"zh"===t?`${e.length} 个工具调用: ${n.join(", ")}${r}`:`${e.length} tool call${e.length>1?"s":""}: ${n.join(", ")}${r}`}(t.interaction?.tool_calls,r);s=[t.interaction?.content,c].filter(Boolean).join("\n")||t.summary||""}else("tool"===t.kind||"skill"===t.kind||"task"===t.kind)&&(void 0!==t.args&&(a=u(t.args,2e3)),("tool"===t.kind||"skill"===t.kind)&&void 0!==t.output&&null!==t.output&&(s=u(t.output,2e3)));l({id:`event:${e.id}:${n}`,name:o.name,meta:o.meta,kind:t.kind,status:c,depth:e.depth+1,interactionIndex:t.interactionIndex,eventIndex:n,toolCallId:t._toolCallId,startedAt:t.startedAt,completedAt:t.completedAt,rawText:[o.name,o.meta,t.name,t.summary,u(t.args,500),u(t.output,500)].filter(Boolean).join(" "),rawInput:a||void 0,rawOutput:s||void 0})})}),0===a.length&&l({id:"system:missing-trace",name:"zh"===r?"链路详情缺失":"Trace unavailable",meta:"zh"===r?"未找到可还原的 interactions。":"No interactions were available.",kind:"system",status:"skipped",depth:0,rawText:""}),a}function r(e,t,n="zh"){return Array.isArray(e)&&0!==e.length?e.map(e=>{if(e.trace_anchor?.step_id&&t.some(t=>t.id===e.trace_anchor?.step_id))return e;let r=function(e,t,n="zh"){if(!t.length)return null;let r=String(e.anchor_step_id||e.trace_anchor?.step_id||"").trim();if(r){let e=t.find(e=>e.id===r);if(e)return a(e,"step_id",.98,"zh"===n?"LLM 返回了候选步骤 ID,且后端校验存在":"The model returned a valid step id")}let i=/推理判断|时间窗口匹配/i.test(e.step||"")?null:String(e.step||"").match(/第\s*(\d+)\s*步/i);if(i){let e=Number(i[1]),r=t.find(t=>t.stepIndex===e);if(r)return a(r,"step_index",.9,"zh"===n?"来自故障记录的步骤编号":"Matched by failure step index")}let s=function(e,t,n){let r=u(e,2e3),i=r.match(/(?:tool_call_id|toolCallId|call_)[\"':\s-]*([A-Za-z0-9_.:-]{6,})/)?.[1];if(i){let e=t.find(e=>e.toolCallId===i);if(e)return a(e,"tool_call_id",.99,"zh"===n?"根据 tool_call_id 精确匹配":"Matched exactly by tool_call_id")}let s=r.match(/(?:interaction_index|interactionIndex)[\"':\s-]*(\d+)/)?.[1];if(s){let e=Number(s),r=t.find(t=>t.interactionIndex===e);if(r)return a(r,"interaction_index",.94,"zh"===n?"根据 interaction_index 精确匹配":"Matched by interaction_index")}return null}(e,t,n);if(s)return s;let o=l([e.failure_type,e.description,e.context,e.recovery,e.step].filter(Boolean).join(" ")),d=t.map(e=>{let t=0,n=l(e.rawText||`${e.name} ${e.meta}`);for(let e of Array.from(new Set(o.split(/[^a-z0-9_\-.]+/i).map(e=>e.trim().toLowerCase()).filter(e=>e.length>=3))).slice(0,12))n.includes(e)&&(t+=e.length>4?2:1);return/401|authentication|unauthori[sz]ed|api[_\s-]?key|认证|鉴权|权限/.test(o)&&"llm"===e.kind&&(t+=8),/tool|工具|bash|command|exit code|stderr|非零/.test(o)&&"tool"===e.kind&&(t+=7),/skill|技能|SKILL\.md/i.test(o)&&"skill"===e.kind&&(t+=7),/timeout|超时|卡住/.test(o)&&(t+=3),{step:e,score:t}}).sort((e,t)=>t.score-e.score);if(d[0]?.score>0){let e=d[0].score>=7?"type_rule":"text_match",t=d[0].score>=7?.78:.58;return a(d[0].step,e,t,d[0].score>=7?"zh"===n?"根据错误内容和节点类型匹配":"Matched by error content and step type":"zh"===n?"根据错误上下文文本匹配":"Matched by error context text")}let c=[...t].reverse().find(e=>"llm"===e.kind||"tool"===e.kind||"skill"===e.kind)||[...t].reverse().find(e=>"skipped"!==e.status);return c?a(c,"fallback",.35,"zh"===n?"未找到精确锚点,回退到最后一个已执行关键节点":"Fell back to the latest meaningful executed step"):null}(e,t,n);return r?{...e,trace_anchor:r}:e}):e}function i(e){return[`- step_id: ${e.id}`,` step_index: ${e.stepIndex}`,` name: ${e.name}`,` kind: ${e.kind}`,` meta: ${e.meta||"-"}`,null!=e.interactionIndex?` interaction_index: ${e.interactionIndex}`:"",e.toolCallId?` tool_call_id: ${e.toolCallId}`:"",null!=e.startedAt?` started_at: ${e.startedAt}`:"",null!=e.completedAt?` completed_at: ${e.completedAt}`:"",e.rawText?` evidence_text: ${d(e.rawText,220)}`:""].filter(Boolean).join("\n")}function a(e,t,n,r){return{step_id:e.id,step_index:e.stepIndex,display_name:e.name,kind:e.kind,interaction_index:e.interactionIndex,event_index:e.eventIndex,tool_call_id:e.toolCallId,started_at:e.startedAt,completed_at:e.completedAt,match_method:t,confidence:n,evidence:r}}function s(e,t){let n=[];e.agentName&&n.push(e.agentName),e.subagentType&&n.push(`type ${e.subagentType}`);let r=[e.stats.llmCalls?`${e.stats.llmCalls} LLM`:"",e.stats.toolCalls?`${e.stats.toolCalls} tool`:"",e.stats.skillCalls?`${e.stats.skillCalls} skill`:"",e.stats.taskCalls?`${e.stats.taskCalls} task`:""].filter(Boolean).join(" · ");return r&&n.push(r),n.join(" · ")||("zh"===t?"执行 Agent":"Agent")}function o(e){if(null!=e){if("number"==typeof e&&Number.isFinite(e))return e>0&&e<1e10?1e3*e:e;if("string"==typeof e){let t=e.trim();if(!t)return;if(/^\d+(\.\d+)?$/.test(t)){let e=Number(t);if(!Number.isFinite(e))return;return e>0&&e<1e10?1e3*e:e}let n=Date.parse(t);return Number.isFinite(n)?n:void 0}}}function l(e){return e.toLowerCase().replace(/\s+/g," ").trim()}function u(e,t=300){if(null==e)return"";if("string"==typeof e)return d(e,t);try{return d(JSON.stringify(e),t)}catch{return d(String(e),t)}}function d(e,t){let n=String(e||"");return n.length>t?`${n.slice(0,t)}...`:n}e.s(["attachFailureAnchors",()=>r,"buildFaultPathSteps",()=>n,"formatFaultPathStepForPrompt",()=>i])},864609,e=>{"use strict";let t=globalThis,n=t.__wittyPendingMap??(t.__wittyPendingMap=new Map);function r(e){if(n.has(e.requestId))return Promise.reject(Error(`duplicate requestId: ${e.requestId}`));let t=e.ttlMs??3e5;return new Promise((r,i)=>{let a=setTimeout(()=>{let r=n.get(e.requestId);r&&(n.delete(e.requestId),r.reject(Error(`interaction ${e.kind}/${e.requestId} timed out after ${t}ms`)))},t);n.set(e.requestId,{requestId:e.requestId,kind:e.kind,user:e.user,streamId:e.streamId,resolve:r,reject:i,expiresAt:Date.now()+t,timer:a})})}function i(e,t,r){let i=n.get(e);if(!i)return!1;if(i.user!==t)throw Error("user mismatch on interaction reply");return n.delete(e),clearTimeout(i.timer),i.resolve(r),!0}function a(e,t="stream closed"){let r=0;for(let[i,a]of n)a.streamId===e&&(n.delete(i),clearTimeout(a.timer),a.reject(Error(t)),r++);return r}e.s(["awaitInteraction",()=>r,"cancelStream",()=>a,"resolveInteraction",()=>i])},875890,e=>{"use strict";var t=e.i(666680),n=e.i(902157),r=e.i(750227),i=e.i(596767);let a=r.default.join(".agent-insight","trace");function s(e){let s=e.workspaceDir,f=Array.isArray(e.interactions)?e.interactions:[],p=function(e){let n="";try{n=JSON.stringify(e??null)}catch{n=String(e??"")}return t.default.createHash("sha256").update(n).digest("hex")}(f),g=r.default.join(s,a),m=r.default.join(g,"manifest.json"),h=r.default.join(g,"trace-index.json"),A=function(e){try{return JSON.parse(n.default.readFileSync(e,"utf8"))}catch{return null}}(m);if(A&&1===A.schemaVersion&&A.executionId===e.executionId&&A.sourceHash===p&&n.default.existsSync(h))return{bundleRelDir:c(a),manifestRelPath:c(r.default.join(a,"manifest.json")),indexRelPath:c(r.default.join(a,"trace-index.json")),bundleDir:g,sourceHash:p,nodeCount:A.nodeCount,artifactCount:A.artifactCount,reused:!0};n.default.rmSync(g,{recursive:!0,force:!0}),n.default.mkdirSync(r.default.join(g,"nodes"),{recursive:!0}),n.default.mkdirSync(r.default.join(g,"artifacts"),{recursive:!0});let I=(0,i.buildFaultPathSteps)(f,"zh"),y=0,k=I.map(e=>{let t=`${u(e.id)}.json`,n=c(r.default.join(a,"nodes",t)),i=r.default.join(g,"nodes",t),s=o({bundleDir:g,step:e,field:"input",value:e.rawInput,artifactCounter:()=>++y}),f=o({bundleDir:g,step:e,field:"output",value:e.rawOutput,artifactCounter:()=>++y});return l(i,{id:e.id,stepIndex:e.stepIndex,name:e.name,kind:e.kind,status:e.status,depth:e.depth,meta:e.meta,interactionIndex:e.interactionIndex,eventIndex:e.eventIndex,toolCallId:e.toolCallId,startedAt:e.startedAt,completedAt:e.completedAt,rawTextPreview:d(e.rawText,700),input:s,output:f}),{id:e.id,stepIndex:e.stepIndex,name:e.name,kind:e.kind,status:e.status,depth:e.depth,meta:e.meta,interactionIndex:e.interactionIndex,eventIndex:e.eventIndex,toolCallId:e.toolCallId,startedAt:e.startedAt,completedAt:e.completedAt,nodeFile:n,hasInput:!!s,hasOutput:!!f,inputArtifact:s?.artifactPath,outputArtifact:f?.artifactPath}});return l(h,{schemaVersion:1,executionId:e.executionId,sourceHash:p,interactionCount:f.length,nodeCount:I.length,nodes:k}),l(m,{schemaVersion:1,executionId:e.executionId,taskId:e.executionId,sourceHash:p,interactionCount:f.length,nodeCount:I.length,artifactCount:y,generatedAt:new Date().toISOString(),indexFile:"trace-index.json",nodesDir:"nodes",artifactsDir:"artifacts"}),{bundleRelDir:c(a),manifestRelPath:c(r.default.join(a,"manifest.json")),indexRelPath:c(r.default.join(a,"trace-index.json")),bundleDir:g,sourceHash:p,nodeCount:I.length,artifactCount:y,reused:!1}}function o(e){let t=e.value||"";if(!t)return;if(t.length<=4e3)return{length:t.length,content:t};let i=e.artifactCounter(),s=`${u(e.step.id)}-${e.field}-${String(i).padStart(4,"0")}.txt`,o=r.default.join(e.bundleDir,"artifacts",s);return n.default.writeFileSync(o,t,"utf8"),{length:t.length,preview:d(t,700),artifactPath:c(r.default.join(a,"artifacts",s))}}function l(e,t){n.default.writeFileSync(e,`${JSON.stringify(t,null,2)}
|
|
5
|
+
`,"utf8")}function u(e){return String(e||"node").replace(/[^A-Za-z0-9._-]/g,"_").slice(0,120)||"node"}function d(e,t){let n=String(e||"");return n.length>t?`${n.slice(0,t)}...<truncated>`:n}function c(e){return e.split(r.default.sep).join("/")}e.s(["ensureTraceBundle",()=>s])},437163,e=>{"use strict";function t(e){let t=null;return(e||[]).map(e=>{if(!e)return e;let n=!1;if(Array.isArray(e.tool_calls))for(let r of e.tool_calls){if("task"!==(r?.function?.name||r?.name))continue;let e=r?.function?.arguments;if("string"==typeof e)try{let r=JSON.parse(e),i=r?.subagent_type;"string"==typeof i&&i.trim()&&(t=i.trim(),n=!0)}catch{}}let r=e;return"subagent"===e.role&&!e.subagent_name&&t&&(r={...e,subagent_name:t}),"assistant"!==e.role||n||(t=null),r})}e.s(["inferSubagentNamesFromInteractions",()=>t])},748684,e=>{"use strict";var t=e.i(666680),n=e.i(596767);function r(e){let n="";try{n=JSON.stringify(e??[])}catch{n=String(e??"")}return t.default.createHash("sha256").update(n).digest("hex")}function i(e){let t=Array.isArray(e)?e:[],r=(0,n.buildFaultPathSteps)(t,"zh"),i=new Map;for(let e of r){if(null==e.interactionIndex)continue;let t=i.get(e.interactionIndex)||[];t.push({id:e.id,kind:e.kind,stepIndex:e.stepIndex,label:[e.name,e.meta].filter(Boolean).join(" · "),toolCallId:e.toolCallId}),i.set(e.interactionIndex,t)}let p=[];return t.forEach((e,t)=>{var n,r,g,m,h,A;let I,y,k,T,x,_=o(e);if(!_)return;let E=String(_.role||""),b=o(_.responseMessage),N=String(b?.role||""),w="assistant"===(n=E||N)||"subagent"===n||"opencode"===n?n:null;if(!w)return;let S=a(_.content,b?.content,b?.text),R=a(_.reasoning,_.reasoning_content,_.thinking,b?.reasoning,b?.reasoning_content,b?.thinking),D=i.get(t)||[],$=(r=_,g=b,m=D,I=[...s(r.tool_calls),...s(r.toolCalls),...s(g?.tool_calls)],y=[],k=new Set,I.forEach((e,t)=>{let n=String(o(e.function)?.name||e.name||e.tool_name||"unknown"),r=function(e){if("string"!=typeof e)return e;let t=e.trim();if(!t)return"";try{return JSON.parse(t)}catch{return e}}(o(e.function)?.arguments??e.arguments??e.args??e.input),i=e.output??e.result??e.error??e.stderr,s=a(e.error,e.stderr,o(e.state)?.error),d=l(e.id)||l(e.callID)||l(e.tool_call_id),p=d?`id:${d}`:`sig:${n}:${function(e){try{return JSON.stringify(e)}catch{return String(e??"")}}(r)}:${t}`;if(k.has(p))return;k.add(p);let g=function(e,t,n){let r=e.filter(e=>["tool","skill","task"].includes(e.kind));if(n){let e=r.find(e=>e.toolCallId===n);if(e)return e}return r[t]||r[0]||e[0]}(m,t,d);y.push({id:d,name:n,args:r,output:i,status:function(e,t,n,r){var i;let a=c([t.state,t.status,t.error,t.stderr,o(t.state)?.status,o(t.state)?.error].map(e=>u(e,600)).join(" "));if(r||/\b(error|failed|failure|exception|rejected|invalid)\b|非零|失败|错误|异常/.test(a))return"error";let s=c(u(n,1200));return(i=e,/bash|shell|exec|python|node|npm|pnpm|yarn|pip/i.test(i)&&/exit code\s*[1-9]|no such file|command not found|traceback|assertionerror|npm err!|failed|失败|错误/.test(s))?"error":a||void 0!==n?"ok":"unknown"}(n,e,i,s),startedAt:f(o(e.timing)?.started_at)??f(e.startedAt),completedAt:f(o(e.timing)?.completed_at)??f(e.completedAt),anchorId:g?.id,traceStepIndex:g?.stepIndex,traceNodeLabel:g?.label,traceNodeKind:g?.kind,rawError:s||void 0})}),y),C=(h=D).find(e=>"llm"===e.kind)||h.find(e=>"agent"===e.kind)||h[0];(S.trim()||R.trim()||0!==$.length)&&p.push({turnIndex:p.length+1,sourceInteractionIndex:t,agentName:l(_.agent)||l(_.subagent_name),role:w,text:S,reasoningText:R||void 0,toolCalls:$,requestContextPreview:(T=[...Array.isArray(A=_.requestMessages)?A:[]].reverse().find(e=>o(e)?.role==="user"),(x=a(o(T)?.content))?d(x,1200):void 0),startedAt:f(o(_.timeInfo)?.created)??f(_.timestamp),completedAt:f(o(_.timeInfo)?.completed),anchorIds:D.map(e=>e.id),traceStepIndex:C?.stepIndex,traceNodeLabel:C?.label,traceNodeKind:C?.kind})}),p}function a(...e){for(let n of e){var t;let e=(null==(t=n)?"":"string"==typeof t?t:Array.isArray(t)?t.map(e=>{let t=o(e);return t?.text!=null?String(t.text):u(e,1e3)}).filter(Boolean).join("\n"):u(t,1200)).trim();if(e)return e}return""}function s(e){return Array.isArray(e)?e.map(o).filter(Boolean):[]}function o(e){return e&&"object"==typeof e?e:null}function l(e){return("string"==typeof e?e.trim():"")||void 0}function u(e,t=1e3){if(null==e)return"";if("string"==typeof e)return d(e,t);try{return d(JSON.stringify(e),t)}catch{return d(String(e),t)}}function d(e,t){return e.length>t?`${e.slice(0,t)}...`:e}function c(e){return e.toLowerCase().replace(/\s+/g," ").trim()}function f(e){if(null!=e){if("number"==typeof e&&Number.isFinite(e))return e>0&&e<1e10?1e3*e:e;if("string"==typeof e){let t=e.trim();if(!t)return;if(/^\d+(\.\d+)?$/.test(t)){let e=Number(t);return Number.isFinite(e)?e>0&&e<1e10?1e3*e:e:void 0}let n=Date.parse(t);return Number.isFinite(n)?n:void 0}}}e.s(["buildDebugTurns",()=>i,"hashInteractions",()=>r])},136212,e=>e.a(async(t,n)=>{try{var r=e.i(666680),i=e.i(854763),a=t([i]);async function s(){await i.prismaRaw.$executeRawUnsafe(`
|
|
6
6
|
CREATE TABLE IF NOT EXISTS "AgentDebugReport" (
|
|
7
7
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
8
8
|
"executionId" TEXT NOT NULL UNIQUE,
|
|
@@ -63,7 +63,7 @@ ${d(n,2e3)}`))}a=l.length>0?l.join("\n\n---\n\n"):void 0;let c=function(e,t){if(
|
|
|
63
63
|
"llmCallCount" = 0,
|
|
64
64
|
"durationMs" = NULL,
|
|
65
65
|
"updatedAt" = ?
|
|
66
|
-
WHERE "executionId" = ?${e.interactionsHash?' AND "interactionsHash" = ? AND "status" = \'running\'':""}`,...t),l(e.executionId)}async function f(e){await s(),await
|
|
66
|
+
WHERE "executionId" = ?${e.interactionsHash?' AND "interactionsHash" = ? AND "status" = \'running\'':""}`,...t),l(e.executionId)}async function f(e){await s(),await h(e),await i.prismaRaw.$executeRawUnsafe('DELETE FROM "AgentDebugReport" WHERE "executionId" = ?',e)}async function p(e){return await o(),(await i.prismaRaw.$queryRawUnsafe('SELECT * FROM "AgentDebugSkillsAnalysis" WHERE "executionId" = ? LIMIT 1',e))[0]||null}async function g(e){await o();let t=await p(e.executionId),n=new Date().toISOString(),a=Array.isArray(e.skillsAnalysis.keyActionResults)?e.skillsAnalysis.keyActionResults.length:0;t?await i.prismaRaw.$executeRawUnsafe(`UPDATE "AgentDebugSkillsAnalysis"
|
|
67
67
|
SET "user" = ?,
|
|
68
68
|
"interactionsHash" = ?,
|
|
69
69
|
"status" = ?,
|
|
@@ -80,6 +80,6 @@ ${d(n,2e3)}`))}a=l.length>0?l.join("\n\n---\n\n"):void 0;let c=function(e,t){if(
|
|
|
80
80
|
"analysisJson" = ?,
|
|
81
81
|
"keyActionCount" = ?,
|
|
82
82
|
"updatedAt" = ?
|
|
83
|
-
WHERE "executionId" = ? AND "interactionsHash" = ? AND "status" = 'running'`,e.user??null,e.skillsAnalysis.status,e.skillsAnalysis.errorMessage??null,JSON.stringify(e.skillsAnalysis),n,t,e.executionId,e.interactionsHash),p(e.executionId)}async function
|
|
83
|
+
WHERE "executionId" = ? AND "interactionsHash" = ? AND "status" = 'running'`,e.user??null,e.skillsAnalysis.status,e.skillsAnalysis.errorMessage??null,JSON.stringify(e.skillsAnalysis),n,t,e.executionId,e.interactionsHash),p(e.executionId)}async function h(e){await o(),await i.prismaRaw.$executeRawUnsafe('DELETE FROM "AgentDebugSkillsAnalysis" WHERE "executionId" = ?',e)}function A(e){if(!e?.reportJson)return null;try{return y(JSON.parse(e.reportJson))}catch{return null}}function I(e){if(!e?.analysisJson)return null;try{return JSON.parse(e.analysisJson)}catch{return null}}function y(e){let{skillsAnalysis:t,...n}=e;return n}[i]=a.then?(await a)():a,e.s(["deleteAgentDebugReport",()=>f,"findAgentDebugReport",()=>l,"findAgentDebugSkillsAnalysis",()=>p,"markAgentDebugReportDone",()=>d,"markAgentDebugReportFailed",()=>c,"parseReportPayload",()=>A,"parseSkillsAnalysisPayload",()=>I,"updateRunningAgentDebugSkillsAnalysis",()=>m,"upsertAgentDebugSkillsAnalysis",()=>g,"upsertRunningAgentDebugReport",()=>u]),n()}catch(e){n(e)}},!1),332080,e=>{"use strict";function t(e,t){return`${e}:${t}`}function n(){return globalThis.__agentDebugBackgroundJobs||(globalThis.__agentDebugBackgroundJobs=new Map),globalThis.__agentDebugBackgroundJobs}function r(e,r,i){let a=n().get(t(e,r))||null;return!!a&&(!i||a.interactionsHash===i)}function i(e){n().set(t(e.kind,e.executionId),e)}function a(e,r,i){let a=t(e,r),s=n().get(a);!s||i&&s.interactionsHash!==i||n().delete(a)}e.s(["clearActiveAgentDebugBackgroundJob",()=>a,"hasActiveAgentDebugBackgroundJob",()=>r,"setActiveAgentDebugBackgroundJob",()=>i])},631190,e=>e.a(async(t,n)=>{try{var r=e.i(437163),i=e.i(997215),a=e.i(854763),s=t([a]);async function o(e){let t=await a.db.findExecutionById(e).catch(()=>null);if(t||(t=(await a.db.findExecutions({taskId:e},{timestamp:"desc"}).catch(()=>[]))[0]||null),!t?.id)return null;let n=t.taskId||e,s=await a.db.findSessionByTaskId(n).catch(()=>null),o=function(e){if(Array.isArray(e))return e;if(!e||"string"!=typeof e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}(s?.interactions);return"claudecode"===t.framework&&(o=(0,i.normalizeClaudeCodeInteractionsForStorage)(o)),o=(0,r.inferSubagentNamesFromInteractions)(o),{execution:t,interactions:o}}[a]=s.then?(await s)():s,e.s(["resolveAgentDebugExecution",()=>o]),n()}catch(e){n(e)}},!1),484695,e=>{e.v(e=>Promise.resolve().then(()=>e(759453)))},419781,e=>{e.v(e=>Promise.resolve().then(()=>e(106411)))},335270,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_1466262d._.js","server/chunks/src_34fb142e._.js","server/chunks/_4b744f5c._.js","server/chunks/src_lib_c6d9db51._.js","server/chunks/src_9c08bd78._.js"].map(t=>e.l(t))).then(()=>t(982505)))}];
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=
|
|
85
|
+
//# sourceMappingURL=src_lib_e361eb76._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[841212,e=>e.a(async(t,n)=>{try{var i=e.i(469240),o=e.i(151223),s=e.i(378673),a=e.i(106411),r=e.i(759453);e.i(810880);var l=e.i(163014);e.i(637253);var c=e.i(60427),u=e.i(211614),d=e.i(
|
|
1
|
+
module.exports=[841212,e=>e.a(async(t,n)=>{try{var i=e.i(469240),o=e.i(151223),s=e.i(378673),a=e.i(106411),r=e.i(759453);e.i(810880);var l=e.i(163014);e.i(637253);var c=e.i(60427),u=e.i(211614),d=e.i(666680),m=e.i(982505),p=e.i(111911),_=e.i(191717),y=e.i(580077),k=t([o,a,r,m,_]);[o,a,r,m,_]=k.then?(await k)():k;class E extends Error{constructor(e){super(e),this.name="TrajectoryEvalConfigError"}}let N="trace-quality-evaluator",C=`你是 Agent Insight 的「关键动作轨迹分析器」。你会收到一个 case、可能存在的 Skill 已提取关键动作列表,以及已经处理过的扁平化 trace 步骤。
|
|
2
2
|
|
|
3
3
|
当 comparison_mode=skill_key_actions 时,你的核心任务是:逐个关键动作独立判断它是否被扁平化 trace 覆盖,并为每个关键动作直接生成 trace 比较分析与 Skill 改进建议。
|
|
4
4
|
当 comparison_mode=trace_only 时,说明当前 trace 未关联 Skill 或没有可用关键动作;此时不要做关键动作分析,只评估工具选择与冗余,完整性不计分。
|
|
@@ -111,18 +111,18 @@ comparison_mode=trace_only 时,输出同一个 schema,但必须满足:
|
|
|
111
111
|
- key_action_results 为 []。
|
|
112
112
|
- reason_text 中的完整性行必须写清“当前 trace 未关联 Skill,本维度不参与计分”。
|
|
113
113
|
|
|
114
|
-
只输出严格 JSON。`;function
|
|
114
|
+
只输出严格 JSON。`;function f(e){var t;return`# Key Action Trace Analysis Input
|
|
115
115
|
|
|
116
116
|
\`\`\`json
|
|
117
117
|
${JSON.stringify((t=e,{schema_version:"key-action-trace-analysis@1.0",comparison_mode:t.comparisonMode||"skill_key_actions",has_skill:"skill_key_actions"===t.comparisonMode,task:{case_id:t.caseId,input:t.caseInput,expected_output:t.referenceOutput||"",evaluation_focus:t.evaluationFocus||"",task_id:t.taskId||"",execution_id:t.executionId||""},skill_context:t.skillContext||null,reference_key_actions:Array.isArray(t.referenceKeyActions)?t.referenceKeyActions:[],reference_key_actions_text:t.referenceKeyActionsText||"",actual_flat_trace_steps:Array.isArray(t.actualExtractedSteps)?t.actualExtractedSteps:[],actual_flat_trace_steps_text:t.actualExtractedStepsText||"",instructions:{language:"zh-CN",analyze_each_key_action_independently:!0,only_use_actual_flat_trace_steps_as_trace_basis:!0,actual_trace_granularity:"event_level_user_llm_tool_skill_task",do_not_generate_path_deviation_items:!0,do_not_merge_or_dedupe_suggestions:!0,do_not_infer_extra_key_actions:!0,skip_key_action_analysis:"trace_only"===t.comparisonMode,completeness_is_not_scored:"trace_only"===t.comparisonMode,score_only_tool_choice_and_redundancy:"trace_only"===t.comparisonMode,covered_suggestion_text:"路径已覆盖该动作,无 Skill 改进点"}}),null,2)}
|
|
118
118
|
\`\`\`
|
|
119
119
|
|
|
120
|
-
请严格按 system prompt 输出 JSON。不要输出 Markdown、解释性前言或额外文本。`}function
|
|
120
|
+
请严格按 system prompt 输出 JSON。不要输出 Markdown、解释性前言或额外文本。`}function g(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}function h(e){if("number"==typeof e)return e;if("string"==typeof e){let t=parseFloat(e);return Number.isFinite(t)?t:NaN}return NaN}function v(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function S(e,t=0,n="skill_key_actions",i=[]){var o;let s,a,r,l,c,u,d,m,p,_=(0,y.normalizeTrajectoryRedundancyDetails)(v(e),i),k=v(_.overall),f="trace_only"===n,w=f?[]:(o=_.key_action_results??_.keyActionResults,(Array.isArray(o)?o:[]).map(v).filter(e=>Object.keys(e).length>0).map(e=>{var t,n;let i,o,s=String(e.action_id??e.actionId??"").trim(),a=String(e.action_content??e.actionContent??"").trim(),r=e.has_skill_improvement??e.hasSkillImprovement,l=String(e.skill_improvement_suggestion??e.skillImprovementSuggestion??"").trim();return{actionId:s,actionContent:a,coverage:(t=e.coverage,i=String(t||"").toLowerCase().replace(/[\s-]+/g,"_"),"covered"===i?"covered":"partial"===i||"partially_covered"===i?"partial":"not_applicable"===i||"na"===i||"n/a"===i?"not_applicable":"missing"),severity:(n=e.severity,o=String(n||"").toLowerCase(),"high"===o?"high":"low"===o?"low":"medium"),matchedTraceSteps:function(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t="number"==typeof e?e:Number(e);Number.isFinite(t)&&n.push(t)}return Array.from(new Set(n))}(e.matched_trace_steps??e.matchedTraceSteps),traceComparisonAnalysis:String(e.trace_comparison_analysis??e.traceComparisonAnalysis??"").trim(),hasSkillImprovement:!0===r,skillImprovementSuggestion:l||(!0===r?"":"路径已覆盖该动作,无 Skill 改进点"),skillIssueSummary:String(e.skill_issue_summary??e.skillIssueSummary??"").trim()||void 0,skillIssueEvidence:String(e.skill_issue_evidence??e.skillIssueEvidence??"").trim()||void 0,confidence:Number.isFinite(h(e.confidence))?g(h(e.confidence)):void 0}}));if(!f&&t>0&&w.length!==t)throw Error(`关键动作评估结果数量不匹配:期望 ${t} 条,实际 ${w.length} 条`);for(let e of w){if(!e.actionId)throw Error(`关键动作评估结果缺少 action_id: ${e.actionContent||"(unknown action)"}`);if(!e.actionContent)throw Error(`关键动作评估结果缺少 action_content: ${e.actionId}`);if(!e.traceComparisonAnalysis)throw Error(`关键动作评估结果缺少 trace_comparison_analysis: ${e.actionId||e.actionContent}`);if(!e.skillImprovementSuggestion)throw Error(`关键动作评估结果缺少 skill_improvement_suggestion: ${e.actionId||e.actionContent}`)}let x=h(k.score);if(!f&&!Number.isFinite(x))throw Error("关键动作评估结果缺少 overall.score");let b=Number.isFinite(x)?g(x):0;if(f){let e=v(_.dimension_scores??_.dimensionScores);if(!Number.isFinite(h(e.tool_choice??e.toolChoice))||!Number.isFinite(h(e.redundancy)))throw Error("无 Skill 轨迹评测缺少 dimension_scores.tool_choice 或 dimension_scores.redundancy")}let A=(s=v(_.dimension_scores??_.dimensionScores),a=h(s.completeness),r=h(s.tool_choice??s.toolChoice),l=h(s.redundancy),{completeness:f?null:Number.isFinite(a)?g(a):b,toolChoice:Number.isFinite(r)?g(r):1,redundancy:Number.isFinite(l)?g(l):1}),{trajectoryScore:$,rawWeightedScore:I,scoreAggregation:E}=function(e,t,n){if("trace_only"===n){let t=Math.round((.35*g(e.toolChoice)+.2*g(e.redundancy))/.55*1e3)/1e3;return{trajectoryScore:t,rawWeightedScore:t,scoreAggregation:{mode:"trace_only",reason:"当前 trace 未关联 Skill,完整性不参与计分;最终分只由工具选择和冗余归一化计算。",rawWeightedScore:t,finalScore:t,highCount:0,mediumCount:0}}}let i=Math.round((.45*g("number"==typeof e.completeness?e.completeness:0)+.35*g(e.toolChoice)+.2*g(e.redundancy))*1e3)/1e3,o=t.filter(e=>"covered"!==e.coverage&&"not_applicable"!==e.coverage),s=o.filter(e=>"high"===e.severity).length,a=o.filter(e=>"medium"===e.severity).length,r=`轨迹分按完整性/工具选择/冗余加权计算;关键动作严重度仅用于诊断展示(high ${s},medium ${a}),不调整最终分。`;return{trajectoryScore:g(i),rawWeightedScore:i,scoreAggregation:{mode:"skill_key_actions",reason:r,rawWeightedScore:i,finalScore:g(i),highCount:s,mediumCount:a}}}(A,w,n),N=String(_.reason_text||_.reasonText||"").trim()||(c=v(_.dimension_details??_.dimensionDetails),u=v(c.completeness),d=v(c.tool_choice??c.toolChoice),m=v(c.redundancy),p=null==A.completeness?"不计分":A.completeness.toFixed(2),`完整性(${p}):${String(u.explanation||"评估器未给出完整性说明。")}
|
|
121
121
|
|
|
122
|
-
工具选择(${
|
|
122
|
+
工具选择(${A.toolChoice.toFixed(2)}):${String(d.explanation||"评估器未给出工具选择说明。")}
|
|
123
123
|
|
|
124
|
-
冗余(${
|
|
124
|
+
冗余(${A.redundancy.toFixed(2)}):${String(m.explanation||"评估器未给出冗余说明。")}
|
|
125
125
|
|
|
126
|
-
关键偏差:${E.reason}`);return{trajectoryScore:A,rawWeightedScore:I,scoreAggregation:E,dimensionScores:$,deviationSteps:[],keyActionResults:w,reasonText:N,rawAnalysis:{...y,schema_version:y.schema_version||(S?"trace-only-analysis@1.0":"key-action-trace-analysis@1.0"),comparison_mode:n,keyActionResults:w,score_aggregation:E,dimension_scores:{completeness:$.completeness,tool_choice:$.toolChoice,redundancy:$.redundancy,key_action_coverage:S?null:b}}}}async function S(e,t){let n=new l.ChatOpenAI({apiKey:t.apiKey||"no-api-key",model:t.model||"deepseek-chat",configuration:{baseURL:t.baseUrl||"https://api.deepseek.com"},temperature:0,topP:1,modelKwargs:{seed:42}}),i=await n.invoke([new u.SystemMessage(A),new c.HumanMessage(k(e))]),o="string"==typeof i.content?i.content:JSON.stringify(i.content),s=w(o),a=h(s);if(void 0===(a.key_action_results??a.keyActionResults)&&void 0===(a.dimension_scores??a.dimensionScores))throw Error(`直接 LLM 评测未产出有效 JSON。模型输出前 800 字符:${o.slice(0,800)}`);return v(a,Array.isArray(e.referenceKeyActions)?e.referenceKeyActions.length:0,e.comparisonMode,e.actualExtractedSteps)}function w(e){let t=e.trim(),n=t.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);n&&(t=n[1]);try{return JSON.parse(t)}catch{let e=t.indexOf("{"),n=t.lastIndexOf("}");if(-1!==e&&-1!==n&&n>e)try{return JSON.parse(t.substring(e,n+1))}catch{}return null}}async function x(e,t,n,l){return(0,s.withBackgroundOpencodeSlot)(async()=>(0,o.runWithEphemeralOpencodeServer)({user:t||void 0,verbose:!1,isolateHome:!0},async n=>{var o;let s=await (0,a.getActiveConfig)(t);if(!s)throw new b("未配置评测模型,请先在「模型配置」中激活一个模型。");let l=k(e),c=t?await (0,r.loadServerModelForUser)(t):null,u=c?.providerID||(o=s,(0,r.normalizeProviderID)(o.provider||(0,r.inferProviderFromBaseUrl)(o.baseUrl))),p=c?.modelID||s.model||"deepseek-chat",y={text:l,agent:"build",model:{providerID:u,modelID:p,apiKey:c?.apiKey||s.apiKey,baseURL:c?.baseURL||s.baseUrl},modelOptions:{temperature:0,top_p:1,seed:42},system:A,permission:[{permission:"external_directory",pattern:"/tmp/*",action:"allow"}]},f="",g=null,x="",I=null,E=null;try{E=new i.AgentInsight({baseURL:n,logLevel:"warn"});let o=await E.createSession({title:`${$}-${e.caseId}-${Date.now()}`}),s=String(o?.id||o?.ID||"");if(!s)throw Error("Failed to create opencode session for trajectory evaluation");x=s;let a=await (0,_.getSystemAgentId)("opencode",$),r=(0,_.findSystemAgentDefinition)("opencode",$);if((0,m.tagOpencodeSession)(s,{agentName:$,agentId:a,skill:r?.traceSkill,displayQuery:e.caseInput,user:t||void 0}),f=(await E.chat(s,y,{onText:e=>{f+=e.delta},onError:e=>{g=e},onSubagent:e=>{I=e.agent||e.sessionID||"unknown-subagent",console.warn(`[opencode-trajectory-eval] unexpected subagent spawned: ${I}`)},onTool:e=>{"task"===e.name&&(I=I||"task",console.warn("[opencode-trajectory-eval] unexpected task tool invocation detected")),console.log(`[opencode-trajectory-eval] tool ${e.name}: phase=${e.phase}`)}},{streamTimeoutMs:6e5,idleTimeoutMs:18e4})).text||f,await (0,d.recordEvaluatorExecution)(E,{taskId:s,agentName:$,user:t,query:e.caseInput}),I)throw Error(`轨迹评估器不允许派发子代理,但实际派发了:${I}`);let l=function(e){let t=e.match(/```json\s*([\s\S]*?)\s*```/);if(t){let e=w(t[1]),n=h(e);if(void 0!==n.key_action_results||void 0!==n.keyActionResults||void 0!==n.dimension_scores||void 0!==n.dimensionScores||void 0!==n.trajectory_score)return n}let n=e.match(/\{[\s\S]*"dimension_scores"[\s\S]*\}/);if(n){let e=w(n[0]);if(e)return e}let i=e.match(/\{[\s\S]*"key_action_results"[\s\S]*\}/);if(i){let e=w(i[0]);if(e)return e}let o=e.match(/\{[\s\S]*"trajectory_score"[\s\S]*\}/);return o?w(o[0]):null}(f);if(l){let t=v(l,Array.isArray(e.referenceKeyActions)?e.referenceKeyActions.length:0,e.comparisonMode,e.actualExtractedSteps);return{...t,rawAnalysis:{...t.rawAnalysis||{},evaluatorSessionId:x}}}}catch(e){g=e instanceof Error?e:Error(String(e))}if(x&&E)try{await (0,d.recordEvaluatorExecution)(E,{taskId:x,agentName:$,user:t,query:e.caseInput})}catch(e){console.warn("[opencode-trajectory-eval] failed to persist evaluator execution:",e?.message||e)}console.warn("[opencode-trajectory-eval] opencode evaluator did not produce JSON, falling back to direct LLM evaluator:",g?.message||f.slice(0,300));try{let t=await S(e,s);return{...t,rawAnalysis:{...t.rawAnalysis||{},evaluatorSessionId:x||void 0,unexpectedSubagent:I||void 0}}}catch(n){let e=g?.message||`Agent 输出前 800 字符:${f.slice(0,800)}`,t=n instanceof Error?n.message:String(n);throw Error(`轨迹评估器未产出有效 JSON。opencode 评测失败:${e};直接 LLM 评测也失败:${t}`)}}),{taskType:"trajectory-eval",user:t??void 0,skill:n??void 0,skillVersion:l??null,label:`trajectory: ${(e.caseInput||"").slice(0,40)}`,silent:!0})}new Date().toISOString(),e.s(["TrajectoryEvalConfigError",()=>b,"evaluateTrajectoryViaOpencode",()=>x]),n()}catch(e){n(e)}},!1),190014,e=>e.a(async(t,n)=>{try{var i=e.i(854763),o=e.i(8129),s=e.i(520813),a=t([i,o]);function r(e,t){let n=(0,s.getRootSkillFromInteractions)(t),i=n?.name||e?.skill,o=String(i||"").trim();return o?[{skill:o,version:n?.version??function(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e&&e.trim()){let t=Number(e);if(Number.isFinite(t))return t}return null}(e?.skillVersion)}]:[]}async function l(e,t,n){let o=r(e,t);if(0===o.length)return;let s=[];for(let e of o){let t=await i.db.findSkill(e.skill,n||null);if(!t?.id){s.push({name:e.skill,version:e.version});continue}let o=await i.db.findSkillById(t.id),a=e.version??o?.activeVersion??o?.versions?.[0]?.version??null,r=null!=a?await i.db.findSkillVersion(t.id,a).catch(()=>null):null,l=String(r?.content||"").trim();s.push({name:e.skill,version:a,content:l?l.slice(0,12e3):void 0})}return s.length>0?{invokedSkills:s}:void 0}async function c(e,t){let n=[];for(let s of e){let e=await i.db.findSkill(s.skill,t||null);if(!e?.id)continue;let a=await i.db.findSkillById(e.id),r=s.version??a?.activeVersion??a?.versions?.[0]?.version??null;if(null==r)continue;let l=await i.db.findParsedFlow(e.id,r,t||null);if(!l?.flowJson)continue;let c=JSON.parse(l.flowJson),u=(0,o.extractKeyActionsFromFlow)(c).map(e=>({...e,skillSource:e.skillSource||s.skill}));u.length>0&&n.push({name:s.skill,actions:u})}return 0===n.length?[]:1===n.length?n[0].actions:(0,o.mergeKeyActionsFromMultipleSkills)(n)}async function u(e,t){var n;if(!e)return{status:"no-extracted-steps"};let s=await i.db.findExecutionMatch(e),a=s?.extractedSteps?JSON.parse(s.extractedSteps):[],r=Array.isArray(a)?a:[];if(0===r.length){if(!(await (0,o.analyzeDynamicOnly)(e,t)).success)return{status:"dynamic-analysis-failed"};let n=await i.db.findExecutionMatch(e),s=n?.extractedSteps?JSON.parse(n.extractedSteps):[];r=Array.isArray(s)?s:[]}return 0===r.length?{status:"no-extracted-steps"}:{status:"ok",steps:r,text:(n=r,0===n.length?"":n.map((e,t)=>{var n;let i=(n=e.description||"",String(n||"").replace(/\s+/g," ").trim()),o="number"==typeof e.uiStepIndex?` [step=${e.uiStepIndex}]`:"",s=null!=e.dialogStartIndex&&null!=e.dialogEndIndex?` [dialog=${e.dialogStartIndex}-${e.dialogEndIndex}]`:"";return`${t+1}. ${e.name||i||"未命名步骤"}${e.type?` [${e.type}]`:""}${o}${s}${i&&i!==e.name?` - ${i}`:""}`}).join("\n"))}}async function d(e,t,n,i){let o=await m(e,n,i);if("ok"!==o.status)return o;let s=await u(t,n);return"ok"!==s.status?{status:s.status}:{status:"ok",referenceKeyActionsText:o.referenceKeyActionsText,actualExtractedStepsText:s.text,referenceKeyActions:o.referenceKeyActions,actualExtractedSteps:s.steps}}async function m(e,t,n){let s=r(e,n);if(0===s.length)return{status:"no-skill-targets"};let a=[],l=[];for(let e of s){let n=await i.db.findSkill(e.skill,t||null);if(!n?.id){a.push(e.skill);continue}let s=await i.db.findSkillById(n.id),r=e.version??s?.activeVersion??s?.versions?.[0]?.version??null;if(null==r){l.push(e.skill);continue}let c=await i.db.findParsedFlow(n.id,r,t||null);if(!c?.flowJson){let s=await i.db.findSkillVersion(n.id,r),a=s?.content;if(!a||!a.trim()){console.warn(`[key-action-trace-analysis] auto-parse skipped: SkillVersion ${n.id}/v${r} is empty`),l.push(e.skill);continue}console.log(`[key-action-trace-analysis] auto-parsing skill flow for ${e.skill} v${r}...`);let u=Date.now(),d=await (0,o.parseSkillFlow)(a,n.id,r,t||null),m=((Date.now()-u)/1e3).toFixed(1);if(!d.success){console.warn(`[key-action-trace-analysis] auto-parse failed for ${e.skill} v${r} (${m}s): ${d.error||"unknown"}`),l.push(e.skill);continue}console.log(`[key-action-trace-analysis] auto-parsed skill flow for ${e.skill} v${r} in ${m}s`),c=await i.db.findParsedFlow(n.id,r,t||null),c?.flowJson||(console.warn(`[key-action-trace-analysis] auto-parse reported success but DB has no flowJson for ${e.skill} v${r}`),l.push(e.skill))}}if(a.length>0)return{status:"missing-skill",missingSkills:a};if(l.length>0)return{status:"missing-parsed-flow",missingSkills:l};let u=await c(s,t);return 0===u.length?{status:"no-key-actions"}:{status:"ok",referenceKeyActionsText:0===u.length?"":u.map((e,t)=>{let n=[e.skillSource?`skill=${e.skillSource}`:"","required"!==e.controlFlowType?`type=${e.controlFlowType}`:"",e.branchLabel?`branch=${e.branchLabel}`:"",e.loopCondition?`loop=${e.loopCondition}`:""].filter(Boolean).join(", ");return`${t+1}. ${e.content}${n?` [${n}]`:""}`}).join("\n"),referenceKeyActions:u}}function _(e){return"ok"===e.status?"":"missing-skill"===e.status?`Skills Hub 中未管理该 Skill:${e.missingSkills?.join(", ")||"unknown"},无法读取关键动作定义。`:"missing-parsed-flow"===e.status?`Skill 流程尚未解析或解析失败:${e.missingSkills?.join(", ")||"unknown"}`:"dynamic-analysis-failed"===e.status?"无法提取 trace 实际执行步骤":"no-extracted-steps"===e.status?"trace 中没有可用于关键动作分析的实际步骤":"no-key-actions"===e.status?"Skill 中没有可用于分析的关键动作":"当前 trace 未关联可分析的 Skill"}[i,o]=a.then?(await a)():a,e.s(["buildSkillKeyActionComparison",()=>d,"buildSkillKeyActionReference",()=>m,"getPrimaryExecutionSkillTargets",()=>r,"loadTaskCompletionSkillContext",()=>l,"skillKeyActionComparisonMessage",()=>_]),n()}catch(e){n(e)}},!1)];
|
|
126
|
+
关键偏差:${E.reason}`);return{trajectoryScore:$,rawWeightedScore:I,scoreAggregation:E,dimensionScores:A,deviationSteps:[],keyActionResults:w,reasonText:N,rawAnalysis:{..._,schema_version:_.schema_version||(f?"trace-only-analysis@1.0":"key-action-trace-analysis@1.0"),comparison_mode:n,keyActionResults:w,score_aggregation:E,dimension_scores:{completeness:A.completeness,tool_choice:A.toolChoice,redundancy:A.redundancy,key_action_coverage:f?null:b}}}}function w(e){return new l.ChatOpenAI({apiKey:e.apiKey||"no-api-key",model:e.model||"deepseek-chat",configuration:{baseURL:e.baseUrl||"https://api.deepseek.com"},temperature:0,topP:1,timeout:18e4,maxRetries:2,modelKwargs:{seed:42}})}async function x(e,t){let n=w(t),i=await n.invoke([new u.SystemMessage(C),new c.HumanMessage(f(e))]),o="string"==typeof i.content?i.content:JSON.stringify(i.content),s=$(o);if(!s)throw Error(`直接 LLM 评测未产出有效 JSON。模型输出前 800 字符:${o.slice(0,800)}`);return S(v(s),Array.isArray(e.referenceKeyActions)?e.referenceKeyActions.length:0,e.comparisonMode,e.actualExtractedSteps)}async function b(e,t,n){let i=w(t),o=f(e),s=await i.invoke([new u.SystemMessage(C),new c.HumanMessage(o)]),a="string"==typeof s.content?s.content:JSON.stringify(s.content),r=$(a);if(!r)throw Error(`直接 LLM 轨迹评测未产出有效 JSON。模型输出前 800 字符:${a.slice(0,800)}`);let l=S(v(r),Array.isArray(e.referenceKeyActions)?e.referenceKeyActions.length:0,e.comparisonMode,e.actualExtractedSteps),p=`${N}-${(e.caseId||"case").slice(0,24)}-${(0,d.randomUUID)()}`,y=(0,_.findSystemAgentDefinition)("opencode",N);return await (0,m.recordDirectEvaluatorExecution)({taskId:p,agentName:N,user:n,query:e.caseInput,systemPrompt:C,userMessage:o,assistantOutput:a,usage:function(e){let t=e?.usage_metadata;if(t&&("number"==typeof t.input_tokens||"number"==typeof t.output_tokens))return{input:t.input_tokens,output:t.output_tokens,total:t.total_tokens};let n=e?.response_metadata?.tokenUsage;return n&&("number"==typeof n.promptTokens||"number"==typeof n.completionTokens)?{input:n.promptTokens,output:n.completionTokens,total:n.totalTokens}:null}(s),modelID:t.model,skill:y?.traceSkill??null}).catch(e=>{console.warn("[opencode-trajectory-eval] failed to record direct evaluator trace:",e?.message||e)}),{...l,rawAnalysis:{...l.rawAnalysis||{},evaluatorSessionId:p}}}function A(e){let t=e.trim(),n=t.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);n&&(t=n[1]);try{return JSON.parse(t)}catch{let e=t.indexOf("{"),n=t.lastIndexOf("}");if(-1!==e&&-1!==n&&n>e)try{return JSON.parse(t.substring(e,n+1))}catch{}return null}}function $(e){let t=e.match(/```json\s*([\s\S]*?)\s*```/);if(t){let e=A(t[1]),n=v(e);if(void 0!==n.key_action_results||void 0!==n.keyActionResults||void 0!==n.dimension_scores||void 0!==n.dimensionScores||void 0!==n.trajectory_score)return n}let n=e.match(/\{[\s\S]*"dimension_scores"[\s\S]*\}/);if(n){let e=A(n[0]);if(e)return e}let i=e.match(/\{[\s\S]*"key_action_results"[\s\S]*\}/);if(i){let e=A(i[0]);if(e)return e}let o=e.match(/\{[\s\S]*"trajectory_score"[\s\S]*\}/);return o?A(o[0]):null}async function I(e,t,n,l){return(0,s.withBackgroundOpencodeSlot)(async()=>{if(!(0,m.shouldForceOpencodeEvalTransport)()){let n=await (0,a.getActiveConfig)(t);if(!n)throw new E("未配置评测模型,请先在「模型配置」中激活一个模型。");try{return await b(e,n,t)}catch(e){if(e instanceof E)throw e;console.warn("[opencode-trajectory-eval] direct LLM path failed, falling back to opencode transport:",e?.message||e)}}return(0,o.runWithEphemeralOpencodeServer)({user:t||void 0,verbose:!1,isolateHome:!0},async n=>{var o;let s=await (0,a.getActiveConfig)(t);if(!s)throw new E("未配置评测模型,请先在「模型配置」中激活一个模型。");let l=f(e),c=t?await (0,r.loadServerModelForUser)(t):null,u=c?.providerID||(o=s,(0,r.normalizeProviderID)(o.provider||(0,r.inferProviderFromBaseUrl)(o.baseUrl))),d=c?.modelID||s.model||"deepseek-chat",y={text:l,agent:"build",model:{providerID:u,modelID:d,apiKey:c?.apiKey||s.apiKey,baseURL:c?.baseURL||s.baseUrl},modelOptions:{temperature:0,top_p:1,seed:42},system:C,permission:[{permission:"external_directory",pattern:"/tmp/*",action:"allow"}]},k="",g=null,h="",v=null,w=null;try{w=new i.AgentInsight({baseURL:n,logLevel:"warn"});let o=await w.createSession({title:`${N}-${e.caseId}-${Date.now()}`}),s=String(o?.id||o?.ID||"");if(!s)throw Error("Failed to create opencode session for trajectory evaluation");h=s;let a=await (0,_.getSystemAgentId)("opencode",N),r=(0,_.findSystemAgentDefinition)("opencode",N);if((0,p.tagOpencodeSession)(s,{agentName:N,agentId:a,skill:r?.traceSkill,displayQuery:e.caseInput,user:t||void 0}),k=(await w.chat(s,y,{onText:e=>{k+=e.delta},onError:e=>{g=e},onSubagent:e=>{v=e.agent||e.sessionID||"unknown-subagent",console.warn(`[opencode-trajectory-eval] unexpected subagent spawned: ${v}`)},onTool:e=>{"task"===e.name&&(v=v||"task",console.warn("[opencode-trajectory-eval] unexpected task tool invocation detected")),console.log(`[opencode-trajectory-eval] tool ${e.name}: phase=${e.phase}`)}},{streamTimeoutMs:6e5,idleTimeoutMs:18e4})).text||k,await (0,m.recordEvaluatorExecution)(w,{taskId:s,agentName:N,user:t,query:e.caseInput}),v)throw Error(`轨迹评估器不允许派发子代理,但实际派发了:${v}`);let l=$(k);if(l){let t=S(l,Array.isArray(e.referenceKeyActions)?e.referenceKeyActions.length:0,e.comparisonMode,e.actualExtractedSteps);return{...t,rawAnalysis:{...t.rawAnalysis||{},evaluatorSessionId:h}}}}catch(e){g=e instanceof Error?e:Error(String(e))}if(h&&w)try{await (0,m.recordEvaluatorExecution)(w,{taskId:h,agentName:N,user:t,query:e.caseInput})}catch(e){console.warn("[opencode-trajectory-eval] failed to persist evaluator execution:",e?.message||e)}console.warn("[opencode-trajectory-eval] opencode evaluator did not produce JSON, falling back to direct LLM evaluator:",g?.message||k.slice(0,300));try{let t=await x(e,s);return{...t,rawAnalysis:{...t.rawAnalysis||{},evaluatorSessionId:h||void 0,unexpectedSubagent:v||void 0}}}catch(n){let e=g?.message||`Agent 输出前 800 字符:${k.slice(0,800)}`,t=n instanceof Error?n.message:String(n);throw Error(`轨迹评估器未产出有效 JSON。opencode 评测失败:${e};直接 LLM 评测也失败:${t}`)}})},{taskType:"trajectory-eval",user:t??void 0,skill:n??void 0,skillVersion:l??null,label:`trajectory: ${(e.caseInput||"").slice(0,40)}`,silent:!0})}new Date().toISOString(),e.s(["TrajectoryEvalConfigError",()=>E,"evaluateTrajectoryViaOpencode",()=>I]),n()}catch(e){n(e)}},!1),190014,e=>e.a(async(t,n)=>{try{var i=e.i(854763),o=e.i(8129),s=e.i(520813),a=t([i,o]);function r(e,t){let n=(0,s.getRootSkillFromInteractions)(t),i=n?.name||e?.skill,o=String(i||"").trim();return o?[{skill:o,version:n?.version??function(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e&&e.trim()){let t=Number(e);if(Number.isFinite(t))return t}return null}(e?.skillVersion)}]:[]}async function l(e,t,n){let o=r(e,t);if(0===o.length)return;let s=[];for(let e of o){let t=await i.db.findSkill(e.skill,n||null);if(!t?.id){s.push({name:e.skill,version:e.version});continue}let o=await i.db.findSkillById(t.id),a=e.version??o?.activeVersion??o?.versions?.[0]?.version??null,r=null!=a?await i.db.findSkillVersion(t.id,a).catch(()=>null):null,l=String(r?.content||"").trim();s.push({name:e.skill,version:a,content:l?l.slice(0,12e3):void 0})}return s.length>0?{invokedSkills:s}:void 0}async function c(e,t){let n=[];for(let s of e){let e=await i.db.findSkill(s.skill,t||null);if(!e?.id)continue;let a=await i.db.findSkillById(e.id),r=s.version??a?.activeVersion??a?.versions?.[0]?.version??null;if(null==r)continue;let l=await i.db.findParsedFlow(e.id,r,t||null);if(!l?.flowJson)continue;let c=JSON.parse(l.flowJson),u=(0,o.extractKeyActionsFromFlow)(c).map(e=>({...e,skillSource:e.skillSource||s.skill}));u.length>0&&n.push({name:s.skill,actions:u})}return 0===n.length?[]:1===n.length?n[0].actions:(0,o.mergeKeyActionsFromMultipleSkills)(n)}async function u(e,t){var n;if(!e)return{status:"no-extracted-steps"};let s=await i.db.findExecutionMatch(e),a=s?.extractedSteps?JSON.parse(s.extractedSteps):[],r=Array.isArray(a)?a:[];if(0===r.length){if(!(await (0,o.analyzeDynamicOnly)(e,t)).success)return{status:"dynamic-analysis-failed"};let n=await i.db.findExecutionMatch(e),s=n?.extractedSteps?JSON.parse(n.extractedSteps):[];r=Array.isArray(s)?s:[]}return 0===r.length?{status:"no-extracted-steps"}:{status:"ok",steps:r,text:(n=r,0===n.length?"":n.map((e,t)=>{var n;let i=(n=e.description||"",String(n||"").replace(/\s+/g," ").trim()),o="number"==typeof e.uiStepIndex?` [step=${e.uiStepIndex}]`:"",s=null!=e.dialogStartIndex&&null!=e.dialogEndIndex?` [dialog=${e.dialogStartIndex}-${e.dialogEndIndex}]`:"";return`${t+1}. ${e.name||i||"未命名步骤"}${e.type?` [${e.type}]`:""}${o}${s}${i&&i!==e.name?` - ${i}`:""}`}).join("\n"))}}async function d(e,t,n,i){let o=await m(e,n,i);if("ok"!==o.status)return o;let s=await u(t,n);return"ok"!==s.status?{status:s.status}:{status:"ok",referenceKeyActionsText:o.referenceKeyActionsText,actualExtractedStepsText:s.text,referenceKeyActions:o.referenceKeyActions,actualExtractedSteps:s.steps}}async function m(e,t,n){let s=r(e,n);if(0===s.length)return{status:"no-skill-targets"};let a=[],l=[];for(let e of s){let n=await i.db.findSkill(e.skill,t||null);if(!n?.id){a.push(e.skill);continue}let s=await i.db.findSkillById(n.id),r=e.version??s?.activeVersion??s?.versions?.[0]?.version??null;if(null==r){l.push(e.skill);continue}let c=await i.db.findParsedFlow(n.id,r,t||null);if(!c?.flowJson){let s=await i.db.findSkillVersion(n.id,r),a=s?.content;if(!a||!a.trim()){console.warn(`[key-action-trace-analysis] auto-parse skipped: SkillVersion ${n.id}/v${r} is empty`),l.push(e.skill);continue}console.log(`[key-action-trace-analysis] auto-parsing skill flow for ${e.skill} v${r}...`);let u=Date.now(),d=await (0,o.parseSkillFlow)(a,n.id,r,t||null),m=((Date.now()-u)/1e3).toFixed(1);if(!d.success){console.warn(`[key-action-trace-analysis] auto-parse failed for ${e.skill} v${r} (${m}s): ${d.error||"unknown"}`),l.push(e.skill);continue}console.log(`[key-action-trace-analysis] auto-parsed skill flow for ${e.skill} v${r} in ${m}s`),c=await i.db.findParsedFlow(n.id,r,t||null),c?.flowJson||(console.warn(`[key-action-trace-analysis] auto-parse reported success but DB has no flowJson for ${e.skill} v${r}`),l.push(e.skill))}}if(a.length>0)return{status:"missing-skill",missingSkills:a};if(l.length>0)return{status:"missing-parsed-flow",missingSkills:l};let u=await c(s,t);return 0===u.length?{status:"no-key-actions"}:{status:"ok",referenceKeyActionsText:0===u.length?"":u.map((e,t)=>{let n=[e.skillSource?`skill=${e.skillSource}`:"","required"!==e.controlFlowType?`type=${e.controlFlowType}`:"",e.branchLabel?`branch=${e.branchLabel}`:"",e.loopCondition?`loop=${e.loopCondition}`:""].filter(Boolean).join(", ");return`${t+1}. ${e.content}${n?` [${n}]`:""}`}).join("\n"),referenceKeyActions:u}}function p(e){return"ok"===e.status?"":"missing-skill"===e.status?`Skills Hub 中未管理该 Skill:${e.missingSkills?.join(", ")||"unknown"},无法读取关键动作定义。`:"missing-parsed-flow"===e.status?`Skill 流程尚未解析或解析失败:${e.missingSkills?.join(", ")||"unknown"}`:"dynamic-analysis-failed"===e.status?"无法提取 trace 实际执行步骤":"no-extracted-steps"===e.status?"trace 中没有可用于关键动作分析的实际步骤":"no-key-actions"===e.status?"Skill 中没有可用于分析的关键动作":"当前 trace 未关联可分析的 Skill"}[i,o]=a.then?(await a)():a,e.s(["buildSkillKeyActionComparison",()=>d,"buildSkillKeyActionReference",()=>m,"getPrimaryExecutionSkillTargets",()=>r,"loadTaskCompletionSkillContext",()=>l,"skillKeyActionComparisonMessage",()=>p]),n()}catch(e){n(e)}},!1)];
|
|
127
127
|
|
|
128
128
|
//# sourceMappingURL=src_lib_engine_evaluation_d6ad3d54._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[982505,t=>t.a(async(e,r)=>{try{var i=t.i(948594),n=e([i]);function o(t){let e="number"==typeof t?t:"string"==typeof t?Number(t):NaN;return Number.isFinite(e)?e:void 0}function a(t){if("number"==typeof t&&Number.isFinite(t))return t;if("string"!=typeof t)return null;let e=t.trim();if(!e)return null;if(/^\d+$/.test(e)){let t=Number(e);return Number.isFinite(t)?t:null}let r=Date.parse(e);return Number.isFinite(r)?r:null}function
|
|
1
|
+
module.exports=[982505,t=>t.a(async(e,r)=>{try{var i=t.i(948594),n=e([i]);function o(t){let e="number"==typeof t?t:"string"==typeof t?Number(t):NaN;return Number.isFinite(e)?e:void 0}function a(t){if("number"==typeof t&&Number.isFinite(t))return t;if("string"!=typeof t)return null;let e=t.trim();if(!e)return null;if(/^\d+$/.test(e)){let t=Number(e);return Number.isFinite(t)?t:null}let r=Date.parse(e);return Number.isFinite(r)?r:null}function s(t){return t.map(t=>t&&"object"==typeof t&&"text"===String(t.type||"").toLowerCase()?String(t.text||""):"").filter(Boolean).join("")}function u(t){return Array.isArray(t)&&0!==t.length?t.map(t=>{var e;let r,i,n,u,l,m;if(!function(t){if(!t||"object"!=typeof t)return!1;let e=t.info;if(!e||"object"!=typeof e)return!1;let r=t.parts;return Array.isArray(r)||Array.isArray(e.parts)}(t))return null;let p=t.info||{},c=Array.isArray(t.parts)?t.parts:Array.isArray(p.parts)?p.parts:[],d=(e=p.role,"string"==typeof e&&e.trim()?e.trim():"assistant"),f=p.time?.created,g=p.time?.completed,y=a(f),v="user"===d?s(c)||String(p.system||""):s(c),k=c.map(t=>{if(!t||"object"!=typeof t||"tool"!==String(t.type||"").toLowerCase())return null;let e=t.state&&"object"==typeof t.state?t.state:{};return{id:t.callID||t.callId||t.id,type:"function",function:{name:t.tool,arguments:function(t){if("string"==typeof t)return t;try{return JSON.stringify(t??{})}catch{return"{}"}}(e.input)},state:e.status||e.state,output:e.output}}).filter(Boolean),S=p.tokens&&"object"==typeof p.tokens?p.tokens:void 0,_=S?{input:o(S.input),output:o(S.output),reasoning:o(S.reasoning),cache:{read:o(S.cache?.read),write:o(S.cache?.write)},total:(r=o(S?.input)||0,i=o(S?.output)||0,n=o(S?.reasoning)||0,u=o(S?.cache?.read)||0,l=o(S?.cache?.write)||0,m=n>0&&i<n?i+n:i,{input:r,output:m,reasoning:n,cacheRead:u,cacheWrite:l,total:r+m+n+u+l}).total}:void 0;return{role:d,content:v||void 0,tool_calls:k.length>0?k:void 0,usage:_,timestamp:null!==y?new Date(y).toISOString():void 0,timeInfo:null!=f||null!=g?{created:f,completed:g}:void 0,agent:"string"==typeof p.agent?p.agent:void 0,modelID:"string"==typeof p.modelID?p.modelID:void 0,providerID:"string"==typeof p.providerID?p.providerID:void 0,cost:p.cost}}).filter(t=>null!==t).sort((t,e)=>(a(t.timeInfo?.created)||0)-(a(e.timeInfo?.created)||0)):[]}function l(t){let e=t.map(t=>a(t.timeInfo?.created)??a(t.timestamp)).find(t=>Number.isFinite(t));return e?new Date(e):new Date}function m(t,e){let r,i,n,o,a=t.some(t=>"assistant"===t.role&&"string"==typeof t.content&&t.content.trim().length>0),s=(r=new Date().toISOString(),i=String(e.query||"").trim(),n=String(e.fallbackOutput||"").trim(),o=[],i&&o.push({role:"user",content:i,timestamp:r}),n&&o.push({role:"assistant",content:n,timestamp:r,agent:String(e.agentName||"").trim()||void 0}),o);if(0===t.length)return s;if(a||!String(e.fallbackOutput||"").trim())return t;let u=s.find(t=>"assistant"===t.role);return u?[...t,u]:t}async function p(t,e){let r=String(e.taskId||"").trim(),n=String(e.agentName||"").trim();if(!r||!n)return 0;let o=await t.listMessages(r),a=m(u(Array.isArray(o)?o:[]),e);return await (0,i.saveExecutionRecord)({task_id:r,upload_id:r,query:String(e.query||"").trim()||void 0,framework:e.framework||"opencode",user:e.user??null,agent:n,agentName:n,final_result:String(e.fallbackOutput||"").trim()||void 0,skill:e.skill??void 0,skill_version:e.skillVersion??void 0,interactions:a,timestamp:l(a),skip_evaluation:!0,skip_internal_judgment:!0,failures:[],skill_issues:[],force_query_update:!0,opencode_cli_completed:!0}),a.length}function c(t){let e=t.timestampISO||new Date().toISOString(),r=[],i=String(t.systemPrompt||"").trim();i&&r.push({role:"system",content:i,timestamp:e});let n=String(t.userMessage||t.query||"").trim();n&&r.push({role:"user",content:n,timestamp:e});let o=String(t.assistantOutput||"").trim();if(o){let i=t.usage?{input:t.usage.input,output:t.usage.output,total:"number"==typeof t.usage.total?t.usage.total:(t.usage.input||0)+(t.usage.output||0)}:void 0;r.push({role:"assistant",content:o,timestamp:e,agent:t.agentName||void 0,modelID:t.modelID||void 0,usage:i})}return r}async function d(t){let e=String(t.taskId||"").trim(),r=String(t.agentName||"").trim();if(!e||!r)return 0;let n=c(t);return 0===n.length?0:(await (0,i.saveExecutionRecord)({task_id:e,upload_id:e,query:String(t.query||"").trim()||void 0,framework:t.framework||"direct-llm",user:t.user??null,agent:r,agentName:r,model:t.modelID??void 0,final_result:String(t.assistantOutput||"").trim()||void 0,skill:t.skill??void 0,skill_version:t.skillVersion??void 0,interactions:n,timestamp:l(n),skip_evaluation:!0,skip_internal_judgment:!0,failures:[],skill_issues:[],force_query_update:!0,opencode_cli_completed:!0}),n.length)}function f(){return"1"===process.env.EVAL_FORCE_OPENCODE_TRANSPORT}[i]=n.then?(await n)():n,t.s(["buildDirectEvaluatorInteractions",()=>c,"ensureEvaluatorExecutionInteractions",()=>m,"normalizeEvaluatorExecutionInteractions",()=>u,"recordDirectEvaluatorExecution",()=>d,"recordEvaluatorExecution",()=>p,"shouldForceOpencodeEvalTransport",()=>f]),r()}catch(t){r(t)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_lib_engine_evaluation_evaluator-execution-recorder_ts_d7fedcdd._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[750696,e=>e.a(async(t,n)=>{try{var s=e.i(854763),i=t([s]);async function
|
|
1
|
+
module.exports=[750696,e=>e.a(async(t,n)=>{try{var s=e.i(854763),i=t([s]);async function r(e,t,n){if(!e)return null;let i=[],r=await s.db.findSkill(e,t);if(r&&i.push({source:"user",record:r}),!r){let t=await s.db.findSkill(e,null);t&&i.push({source:"global",record:t})}if(0===i.length)return null;let{source:l,record:a}=i[0],o=Array.isArray(a.versions)?a.versions:[];if(0===o.length)return null;let c=null;return("number"==typeof n&&(c=o.find(e=>e.version===n)||null),c||null==a.activeVersion||(c=o.find(e=>e.version===a.activeVersion)||null),c||(c=o[0]),c&&c.content)?{name:a.name,version:"number"==typeof c.version?c.version:null,semanticVersion:c.semanticVersion??null,content:String(c.content),source:l,assetPath:c.assetPath??null}:null}[s]=i.then?(await i)():i,e.s(["resolveSkill",()=>r]),n()}catch(e){n(e)}},!1),239944,e=>{"use strict";var t=e.i(660526);let n=/(^|[\s::'"((=])~(?=\/)/g;function s(e,i=t.default.homedir()){return e&&i&&e.includes("~")?e.replace(n,(e,t)=>`${t}${i}`):e}e.s(["expandHomePathsInText",()=>s])},461375,e=>{"use strict";var t=e.i(902157),n=e.i(750227);function s(e,s){let i=n.default.join(s,".opencode","skills",e.name),r=n.default.join(i,"SKILL.md");if(t.default.existsSync(r))try{if(t.default.readFileSync(r,"utf-8")===e.content)return{targetDir:i,deployed:!1}}catch{}if(t.default.mkdirSync(i,{recursive:!0}),t.default.writeFileSync(r,e.content,"utf-8"),e.assetPath){let s=n.default.resolve(e.assetPath);if(t.default.existsSync(s))for(let e of t.default.readdirSync(s))"SKILL.md"!==e&&function e(s,i){if(t.default.existsSync(s))if(t.default.statSync(s).isDirectory())for(let r of(t.default.mkdirSync(i,{recursive:!0}),t.default.readdirSync(s)))e(n.default.join(s,r),n.default.join(i,r));else t.default.mkdirSync(n.default.dirname(i),{recursive:!0}),t.default.copyFileSync(s,i)}(n.default.join(s,e),n.default.join(i,e))}return{targetDir:i,deployed:!0}}e.s(["deploySkillToWorkspace",()=>s])},317331,e=>e.a(async(t,n)=>{try{var s=e.i(666680),i=e.i(936689),r=e.i(469240),l=e.i(151223),a=e.i(750696),o=e.i(239944),c=e.i(759453),u=e.i(134526),d=e.i(461375),p=e.i(111911),f=e.i(191717),m=e.i(68987),y=t([l,a,c,f]);[l,a,c,f]=y.then?(await y)():y;let h=!1;function E(){if(h)return;h=!0;let e=Number(process.env.GENERAL_AGENT_FETCH_TIMEOUT_MS)||18e5;(0,i.setGlobalDispatcher)(new i.Agent({connections:64,headersTimeout:e,bodyTimeout:e}))}let _=new Map;async function g(e){E();let t=await (0,l.ensureOpencodeServer)({user:e}),n=_.get(e);if(n&&n.baseURL===t)return n.client;let s=new r.AgentInsight({baseURL:t,timeout:18e4,maxRetries:2,logLevel:process.env.OPENCODE_LOG_LEVEL||"warn"});return _.set(e,{baseURL:t,client:s}),s}async function k(e){let t=await (0,c.loadServerModelForUser)(e).catch(e=>(console.warn("[general-agent] loadServerModelForUser failed, falling back to env:",e?.message||e),null));if(t)return t;let n=process.env.GENERAL_AGENT_PROVIDER_ID||process.env.OPENCODE_PROVIDER_ID||"deepseek-official";return{providerID:n,modelID:process.env.GENERAL_AGENT_MODEL_ID||process.env.OPENCODE_MODEL_ID||"deepseek-chat",apiKey:process.env.GENERAL_AGENT_API_KEY||process.env.OPENCODE_API_KEY||process.env.DEEPSEEK_API_KEY,baseURL:process.env.GENERAL_AGENT_PROVIDER_BASE_URL||process.env.OPENCODE_PROVIDER_BASE_URL||("deepseek"===n||"deepseek-official"===n?"https://api.deepseek.com":void 0),headers:process.env.OPENCODE_PROVIDER_HEADERS?JSON.parse(process.env.OPENCODE_PROVIDER_HEADERS):void 0}}async function S(e){let t=String(e.user||"").trim();if(!t)throw Error("user is required");let n=(0,o.expandHomePathsInText)(String(e.query||"").trim());if(!n)throw Error("query is required");if(e.ephemeralServer)return E(),(0,l.runWithEphemeralOpencodeServer)({user:t,verbose:!1,isolateHome:!0},async s=>{let i=new r.AgentInsight({baseURL:s,timeout:18e4,maxRetries:2,logLevel:process.env.OPENCODE_LOG_LEVEL||"warn"});return v(e,t,n,i)});let s=await g(t);return v(e,t,n,s)}async function v(t,n,i,r){let l,o;(0,u.ensureUserWorkspace)(n);let c=t.workspaceTag||t.sessionId||`task-${Date.now()}-${(0,s.randomUUID)().slice(0,8)}`,y=(0,u.ensureSessionWorkspace)(n,c),E=t.system?.trim()||void 0,g=E,S=null;if(t.skill){var v,h,_;let e,s,i=await (0,a.resolveSkill)(t.skill,n,t.skillVersion);if(!i)throw Error(`skill not found: ${t.skill}`);let r=(0,d.deploySkillToWorkspace)(i,y);console.log(`[general-agent] skill deployed: ${i.name}@v${i.version} → ${r.targetDir} (deployed=${r.deployed})`),v=i.name,h=i.version,_=E,e=null!==h?`(版本 v${h})`:"",s=`[SKILL 加载约束 - 强制执行]
|
|
2
2
|
你当前的运行环境已预置了技能(Skill)文件。在处理任何用户请求之前,你必须遵守以下规则:
|
|
3
3
|
|
|
4
4
|
1. **必须**首先调用 load_skill 工具,加载技能名称为 "${v}" 的 Skill${e}。
|
|
@@ -8,8 +8,8 @@ module.exports=[750696,e=>e.a(async(t,n)=>{try{var s=e.i(854763),i=t([s]);async
|
|
|
8
8
|
5. 严禁将 Skill 加载步骤省略或内化——必须通过显式的工具调用来完成。
|
|
9
9
|
|
|
10
10
|
当前配置的 Skill:**${v}**${e}
|
|
11
|
-
`,
|
|
11
|
+
`,g=_?`${s}
|
|
12
12
|
[附加指令]
|
|
13
|
-
${
|
|
13
|
+
${_}`:s,S={name:i.name,version:i.version,semanticVersion:i.semanticVersion,source:i.source}}let D=(0,u.buildPermissionsForWorkspace)(y),w=String(t.sessionId||"").trim();if(!w){let e=await r.createSession({title:t.sessionTitle||`general-agent \xb7 ${n} \xb7 ${c}`,permission:D,directory:y});if(!(w=String(e?.id??"")))throw Error("failed to create opencode session")}if(t.systemAgentName){let e=await (0,f.getSystemAgentId)("opencode",t.systemAgentName),s=(0,f.findSystemAgentDefinition)("opencode",t.systemAgentName);(0,p.tagOpencodeSession)(w,{agentName:t.systemAgentName,agentId:e,skill:s?.traceSkill||t.skill||t.tagSkill,displayQuery:i,user:n})}let $={...await k(n),...t.model||{}};if(console.log("[general-agent] final model config:",{providerID:$.providerID,modelID:$.modelID,baseURL:$.baseURL,hasApiKey:!!$.apiKey,apiKeyPrefix:$.apiKey?$.apiKey.slice(0,8)+"...":"(none)"}),!$.apiKey)throw Error("model.apiKey missing: configure an active model in your user settings, or set GENERAL_AGENT_API_KEY / OPENCODE_API_KEY / DEEPSEEK_API_KEY env, or pass model.apiKey explicitly");let I={text:i,agent:t.agent||process.env.OPENCODE_AGENT||"build",model:$,modelOptions:t.modelOptions||{temperature:.7,maxTokens:2048},permission:D,directory:y,...g?{system:g}:{}},A=t.interactionPolicy||"auto-allow",O=[];if("manual"===A){if(!t.handlers?.onPermission||!t.handlers?.onQuestion)throw Error("interactionPolicy='manual' requires both handlers.onPermission and handlers.onQuestion")}else{let e="auto-allow"===A?"once":"reject";l=t=>(O.push({kind:"permission",id:t.id,reply:e,meta:{title:t.title,type:t.type,pattern:t.pattern,callID:t.callID},ts:Date.now()}),e),o=e=>(O.push({kind:"question",id:e.id,reply:null,meta:{questions:e.questions,messageID:e.messageID},ts:Date.now()}),null)}let P=t.handlers||{},L=P.onPermission?async e=>{let t=await P.onPermission(e);return O.push({kind:"permission",id:e.id,reply:t,meta:{title:e.title,type:e.type,pattern:e.pattern,callID:e.callID,fromCaller:!0},ts:Date.now()}),t}:l,N=P.onQuestion?async e=>{let t=await P.onQuestion(e);return O.push({kind:"question",id:e.id,reply:t??null,meta:{questions:e.questions,messageID:e.messageID,fromCaller:!0},ts:Date.now()}),t}:o,R={...P,onPermission:L,onQuestion:N},T={streamTimeoutMs:t.timeoutMs??3e5,idleTimeoutMs:6e4,...t.chatOptions||{}};console.log("[general-agent] calling client.chat, sessionId:",w);let x=await r.chat(w,I,R,T);if(console.log("[general-agent] client.chat done:",{textLen:x.text.length,stats:x.stats}),t.recordTraceAs)try{let{recordEvaluatorExecution:n}=await e.A(335270);await n(r,{taskId:w,agentName:t.recordTraceAs,user:t.user,query:t.query,skill:S?.name??t.skill??t.tagSkill,skillVersion:S?.version??t.skillVersion,fallbackOutput:x.text})}catch(e){console.warn(`[general-agent] recordTraceAs failed for session ${w}:`,e?.message||e)}let K={totalTokens:0,tokens:{input:0,output:0,reasoning:0,cache:{read:0,write:0}}};try{let{normalizeEvaluatorExecutionInteractions:t}=await e.A(335270),n=await r.listMessages(w),s=(0,m.deriveOpencodeExecutionFields)(t(Array.isArray(n)?n:[]));K={totalTokens:s.tokens,tokens:{input:s.input_tokens,output:s.output_tokens,reasoning:s.reasoning_tokens,cache:{read:s.cache_read_input_tokens,write:s.cache_creation_input_tokens}}}}catch(e){console.warn(`[general-agent] token usage derivation failed for session ${w}:`,e?.message||e)}return{sessionId:w,workspaceDir:y,skillResolved:null!==S,skillMeta:S,output:x.text,fullOutput:x.transcriptText||x.text,interactions:O,stats:{...x.stats,...K}}}e.s(["runGeneralAgent",()=>S]),n()}catch(e){n(e)}},!1),5697,e=>{"use strict";var t=e.i(902157),n=e.i(750227);let s=new Map;function i(){return process.env.SYSTEM_SKILLS_ROOT||n.default.join(process.cwd(),"skills")}function r(e){let r,l=i(),a=`${l.replace(/[/\\]$/,"")}${n.default.sep}${e}`,o=`${a}${n.default.sep}SKILL.md`;try{r=t.default.statSync(o)}catch{throw Error(`file-based skill not found: ${o}`)}let c=s.get(e);if(c&&c.mtimeMs===r.mtimeMs)return c.content;let u=t.default.readFileSync(o,"utf-8");return s.set(e,{mtimeMs:r.mtimeMs,content:u}),u}function l(e){try{let s=i(),r=`${s.replace(/[/\\]$/,"")}${n.default.sep}${e}${n.default.sep}SKILL.md`;return t.default.statSync(r).isFile()}catch{return!1}}function a(e,s){let r=i(),l=t.default.existsSync,a=t.default.lstatSync,o=`${r.replace(/[/\\]$/,"")}${n.default.sep}${e}`;if(!l(o))return{mounted:[],mountPoint:null};let c=`${s.replace(/[/\\]$/,"")}${n.default.sep}.${e}`;try{t.default.mkdirSync(c,{recursive:!0})}catch{return{mounted:[],mountPoint:null}}let u=[];for(let e of["SKILL.md","references","scripts","templates"]){let s=`${o.replace(/[/\\]$/,"")}${n.default.sep}${e}`;if(!l(s))continue;let i=`${c.replace(/[/\\]$/,"")}${n.default.sep}${e}`;try{if(l(i)||a(i).isSymbolicLink?.())continue}catch{}try{t.default.symlinkSync(s,i),u.push(e)}catch{}}return{mounted:u,mountPoint:c}}e.s(["fileBasedSkillExists",()=>l,"loadFileBasedSkillPrompt",()=>r,"mountFileBasedSkillResources",()=>a])},773613,e=>e.a(async(t,n)=>{try{var s=e.i(317331),i=e.i(750696);e.i(134526),e.i(864609);var r=e.i(759453);e.i(5697),e.i(461375);var l=t([s,i,r]);[s,i,r]=l.then?(await l)():l,e.s([]),n()}catch(e){n(e)}},!1)];
|
|
14
14
|
|
|
15
15
|
//# sourceMappingURL=src_lib_engine_general-agent_970b1dfe._.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module.exports=[100451,e=>{"use strict";var t=e.i(714827);let s=/^[a-z0-9-]+$/;function i(e){let i=[],n=e.length,r=e.split(/\r?\n/).length;n>5e3&&i.push({ruleId:"length_chars_exceeded",severity:"low",dimension:"structure",summary:"SKILL.md 字符数超过建议上限(5000)",evidence:`当前 ${n} 字符`,reasoning:"渐进式披露:SKILL.md 应作为目录,详细内容外置到 references/。过长会挤占 LLM 上下文。",suggestedFix:"把详细 API/示例/历史记录拆到 references/ 子文件,SKILL.md 只保留索引与触发条件。"}),r>500&&i.push({ruleId:"length_lines_exceeded",severity:"low",dimension:"structure",summary:"SKILL.md 行数超过建议上限(500)",evidence:`当前 ${r} 行`,reasoning:"同上:SKILL.md 应作为目录索引,长内容应外置。",suggestedFix:"把长段落、代码块、多步骤示例拆到 references/。"});let
|
|
1
|
+
module.exports=[100451,e=>{"use strict";var t=e.i(714827);let s=/^[a-z0-9-]+$/;function i(e){let i=[],n=e.length,r=e.split(/\r?\n/).length;n>5e3&&i.push({ruleId:"length_chars_exceeded",severity:"low",dimension:"structure",summary:"SKILL.md 字符数超过建议上限(5000)",evidence:`当前 ${n} 字符`,reasoning:"渐进式披露:SKILL.md 应作为目录,详细内容外置到 references/。过长会挤占 LLM 上下文。",suggestedFix:"把详细 API/示例/历史记录拆到 references/ 子文件,SKILL.md 只保留索引与触发条件。"}),r>500&&i.push({ruleId:"length_lines_exceeded",severity:"low",dimension:"structure",summary:"SKILL.md 行数超过建议上限(500)",evidence:`当前 ${r} 行`,reasoning:"同上:SKILL.md 应作为目录索引,长内容应外置。",suggestedFix:"把长段落、代码块、多步骤示例拆到 references/。"});let l=null;try{let s=(0,t.default)(e);l={data:s.data||{},raw:s.matter??""}}catch(e){i.push({ruleId:"frontmatter_invalid_yaml",severity:"high",dimension:"structure",summary:"YAML frontmatter 语法错误",evidence:String(e?.message||e),reasoning:"YAML 解析失败,框架将无法读取 name/description。",suggestedFix:"修正 YAML 语法(缩进、引号、冒号空格)。"})}if(l){let{data:e}=l;if("name"in e&&"string"==typeof e.name&&e.name.trim()){let t=e.name;t.length>64&&i.push({ruleId:"name_too_long",severity:"medium",dimension:"structure",summary:`\`name\` 长度超过 64 字符上限`,evidence:`name="${t}" (${t.length} chars)`,reasoning:"Skill 规范:name ≤ 64 字符。",suggestedFix:"缩短为简洁的 kebab-case 短语。"}),s.test(t)||i.push({ruleId:"name_not_kebab_case",severity:"low",dimension:"structure",summary:"`name` 不是 kebab-case",evidence:`name="${t}"`,reasoning:"规范:仅允许小写字母、数字、连字符。",suggestedFix:`重命名为小写连字符形式(如 \`${t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}\`)。`})}else i.push({ruleId:"frontmatter_missing_name",severity:"high",dimension:"structure",summary:"frontmatter 缺少 `name` 字段",evidence:l.raw||"(整个 frontmatter 块缺失)",reasoning:"name 是 Skill 的主键标识,必填。",suggestedFix:"在 frontmatter 添加 `name: <kebab-case-name>`。如完全没有 frontmatter,请在文件开头加 ```---\\nname: ...\\ndescription: ...\\n---```。"});if("description"in e&&"string"==typeof e.description&&e.description.trim()){let t=e.description;t.length>1024&&i.push({ruleId:"description_too_long",severity:"medium",dimension:"structure",summary:`\`description\` 长度超过 1024 字符上限`,evidence:`description=${t.length} chars`,reasoning:"过长 description 会挤占 LLM 上下文。",suggestedFix:"保留触发信号词与场景,把详细背景搬到正文。"})}else i.push({ruleId:"frontmatter_missing_description",severity:"high",dimension:"structure",summary:"frontmatter 缺少 `description` 字段",evidence:l.raw||"(整个 frontmatter 块缺失)",reasoning:"description 是 LLM 选择 Skill 时的核心信号;缺失则触发不到。",suggestedFix:"添加第三人称、含具体触发信号词的 description。例:`Used when the user asks to extract tables from PDF files.`"})}return i}let n=[{name:"AWS Access Key",regex:/\b(AKIA[0-9A-Z]{16})\b/g,valueGroup:1},{name:"GitHub Token",regex:/\b(gh[ps]_[A-Za-z0-9]{36,})\b/g,valueGroup:1},{name:"OpenAI API Key",regex:/\b(sk-[A-Za-z0-9]{20,})\b/g,valueGroup:1},{name:"Slack Token",regex:/\b(xox[bpoa]-[A-Za-z0-9-]{10,})\b/g,valueGroup:1},{name:"Snyk Token",regex:/\b(snyk_[A-Za-z0-9_]{20,})\b/g,valueGroup:1},{name:"通用 API Key / Token",regex:/\b(?:api[_-]?key|access[_-]?token|secret[_-]?key|password|auth[_-]?token|bearer)\s*[=:]\s*["']([A-Za-z0-9_\-]{16,})["']/gi,valueGroup:1}];function r(e,t){let s=1;for(let i=0;i<t&&i<e.length;i++)"\n"===e[i]&&s++;return s}function l(e,t,s){let i="--- 文件: ",n=" ---\n",l=e.slice(0,t).lastIndexOf(i);if(l<0)return`${s}:${r(e,t)}`;let a=e.indexOf(n,l);if(a<0)return`${s}:${r(e,t)}`;let o=e.slice(l+i.length,a),u=a+n.length,c=e.slice(u,t).split("\n").length;return`${o}:${c}`}function a(e,t){if(!e)return[];let s=[],i=new Set;for(let r of n){let n,a=new RegExp(r.regex.source,r.regex.flags);for(;null!==(n=a.exec(e));){let a=n[r.valueGroup];if(!a)continue;let o=`${r.name}:${a.slice(0,8)}`;if(i.has(o))continue;i.add(o);let u=l(e,n.index,t);s.push({ruleId:"security_W008_hardcoded_secret",severity:"high",dimension:"security",summary:`${u.split(":")[0]} 含硬编码 ${r.name}`,evidence:`${u} → ${a.length<=6?"***":`${a.slice(0,4)}${"*".repeat(Math.min(a.length-4,16))}`}`,reasoning:'API key / token / 私钥等敏感凭据被直接嵌入 skill 文本,会随 skill 内容外泄;同时违反"凭据用环境变量"原则。',suggestedFix:`改为从环境变量读取(如 \`os.environ["${r.name.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}"]\`),缺失时硬 throw。`})}}return s}let o=[{name:"短链 (bit.ly 等)",regex:/https?:\/\/(?:bit\.ly|tinyurl\.com|goo\.gl|t\.co|ow\.ly|is\.gd)\/\S+/gi,severity:"high"},{name:"可执行文件 URL",regex:/https?:\/\/\S+?\.(?:exe|dmg|msi|ps1)(?:\?\S*)?/gi,severity:"high"},{name:"Pastebin / Gist raw",regex:/https?:\/\/(?:pastebin\.com\/raw|gist\.githubusercontent\.com)\/\S+/gi,severity:"medium"}];function u(e,t){if(!e)return[];let s=[],i=new Set;for(let n of o){let r,a=new RegExp(n.regex.source,n.regex.flags);for(;null!==(r=a.exec(e));){let a=r[0];if(i.has(a))continue;i.add(a);let o=l(e,r.index,t);s.push({ruleId:"security_E005_suspicious_url",severity:n.severity,dimension:"security",summary:`${o.split(":")[0]} 含可疑下载 URL(${n.name})`,evidence:`${o} → ${a.length>120?a.slice(0,117)+"...":a}`,reasoning:"短链 / 可执行文件 / 个人代码 raw 是恶意载荷的典型分发渠道;指引用户从此类源下载可能导致 RCE。",suggestedFix:"改为指向官方仓库(GitHub release / npmjs / PyPI),并附 checksum 验证。"})}}return s}let c=[{name:"curl|sh",regex:/curl\s+[^\n|]*\|\s*(?:sh|bash|zsh)\b/gi},{name:"wget|sh",regex:/wget\s+[^\n|]*\|\s*(?:sh|bash|zsh)\b/gi},{name:"eval(fetch())",regex:/eval\s*\(\s*(?:await\s+)?(?:fetch|requests\.get|axios\.get|urllib\.request\.urlopen)\b/gi},{name:"exec(http content)",regex:/(?:exec|Function)\s*\(\s*(?:await\s+)?(?:fetch|requests\.get|axios\.get|urllib)/gi}];function d(e,t){if(!e)return[];let s=[],i=new Set;for(let n of c){let r,a=new RegExp(n.regex.source,n.regex.flags);for(;null!==(r=a.exec(e));){let a=r[0],o=`${n.name}:${a.slice(0,32)}`;if(i.has(o))continue;i.add(o);let u=l(e,r.index,t);s.push({ruleId:"security_W012_runtime_fetch_exec",severity:"high",dimension:"security",summary:`${u.split(":")[0]} 运行时拉远程指令并执行(${n.name})`,evidence:`${u} → ${a.length>100?a.slice(0,97)+"...":a}`,reasoning:'运行时从外部 URL 拉取代码或脚本并直接执行,相当于"未验证的远程代码注入入口",无法审计、无法 pin 版本。',suggestedFix:"把依赖代码内嵌到 skill 本体,或锁定到具体版本的官方包(npm/pypi);如确需下载,先 checksum 校验再执行。"})}}return s}function m(e,t){let s=[];return s.push(...a(e,"SKILL.md")),s.push(...a(t,"bundle")),s.push(...u(e,"SKILL.md")),s.push(...u(t,"bundle")),s.push(...d(e,"SKILL.md")),s.push(...d(t,"bundle")),s}e.s(["lintSecurity",()=>m,"lintSkillContent",()=>i])},668472,e=>{"use strict";var t=e.i(522734),s=e.i(814747);function i(e,i){let n=s.default.join(e,i);if(!t.default.existsSync(n)||!t.default.statSync(n).isDirectory())return[];let r=[],l=(e,n)=>{for(let a of t.default.readdirSync(e,{withFileTypes:!0})){let o=s.default.join(e,a.name),u=n?s.default.join(n,a.name):a.name;if(a.isDirectory()){l(o,u);continue}try{let e=t.default.readFileSync(o,"utf8");r.push({relPath:s.default.join(i,u),content:e,subdir:i})}catch{}}};return l(n,""),r}function n(e){return`--- 文件: ${e.relPath} ---
|
|
2
2
|
${e.content}
|
|
3
3
|
|
|
4
|
-
`}function r(e){if(!e)return{references:"",scripts:"",totalChars:0,fileCount:0,bundleTextFull:"",bundleChunks:[]};let t=s.default.resolve(e),r=i(t,"references"),
|
|
5
|
-
`,n=0,r=1;for(;n<t.content.length;){let i=Math.max(8e4-e.length-64,1024),
|
|
6
|
-
${
|
|
4
|
+
`}function r(e){if(!e)return{references:"",scripts:"",totalChars:0,fileCount:0,bundleTextFull:"",bundleChunks:[]};let t=s.default.resolve(e),r=i(t,"references"),l=i(t,"scripts"),a=[...r,...l],o=a.map(n).join(""),u=a.length>0?function(e,t){let s=[],i="";for(let t of e){let e=n(t);if(e.length>8e4){i&&(s.push(i),i="");let e=`--- 文件: ${t.relPath} ---
|
|
5
|
+
`,n=0,r=1;for(;n<t.content.length;){let i=Math.max(8e4-e.length-64,1024),l=t.content.slice(n,n+i);s.push(`${e}[第 ${r} 片,offset ${n}]
|
|
6
|
+
${l}
|
|
7
7
|
|
|
8
|
-
`),n+=i,r++}continue}i&&i.length+e.length>8e4&&(s.push(i),i=""),i+=e}return i&&s.push(i),s}(
|
|
8
|
+
`),n+=i,r++}continue}i&&i.length+e.length>8e4&&(s.push(i),i=""),i+=e}return i&&s.push(i),s}(a,0):[],c=function(e,t){let s=e.map(n).join(""),i=t.map(n).join("");if(s.length+i.length>8e4){let e=Math.min(s.length,4e4),t=8e4-(s=s.slice(0,e)+"\n\n[... truncated ...]").length;i=i.slice(0,t)+"\n\n[... truncated ...]"}return{references:s,scripts:i}}(r,l);return{references:c.references,scripts:c.scripts,totalChars:o.length,fileCount:a.length,bundleTextFull:o,bundleChunks:u}}e.s(["loadAssetBundle",()=>r])},401202,e=>{"use strict";let t=`每条 issue 必须包含:
|
|
9
9
|
- "summary":一句话描述问题(≤30 字)
|
|
10
10
|
- "severity":"high" | "medium" | "low"
|
|
11
11
|
- "evidence":引用 Skill 内容的原文片段作为证据
|
|
@@ -53,6 +53,10 @@ issues 是数组:score 越低条数应越多;score=5 时 issues 可为空数
|
|
|
53
53
|
|
|
54
54
|
评估指令自由度是否与任务的风险等级和确定性匹配。
|
|
55
55
|
|
|
56
|
+
### 评分前必须先判定任务风险档位(扣分要按风险加权)
|
|
57
|
+
- 高风险:会修改系统状态/数据、执行不可逆或对外操作(删除、转账、改配置、远程执行、登录远程主机等)。
|
|
58
|
+
- 低风险:只读 / 离线 / 纯分析,且 SKILL.md 明确声明「不执行、不连远程、仅给建议」——出错后果有限。
|
|
59
|
+
|
|
56
60
|
### 自由度档位
|
|
57
61
|
- 低自由度(固定脚本):高风险或确定性流程。
|
|
58
62
|
- 中自由度(参数化模板):半结构化任务、有首选方案但允许调整。
|
|
@@ -61,7 +65,8 @@ issues 是数组:score 越低条数应越多;score=5 时 issues 可为空数
|
|
|
61
65
|
### 评分标准
|
|
62
66
|
- 5 分:自由度与任务风险完全匹配。
|
|
63
67
|
- 3 分:基本匹配,少量场景过严或过松。
|
|
64
|
-
- 1
|
|
68
|
+
- 1-2 分:**仅用于高风险方向的严重错配**——高风险/不可逆操作却让 LLM 自由判断(欠约束,可能造成不可逆后果)。
|
|
69
|
+
- 对「低风险任务过度刚性」(如只读/离线分析却强制无脑全跑、禁止按上下文跳过明显无关的步骤):这是效率/适配问题,不是安全错配,**最低只扣到 3 分,不得给 1-2 分**;只有当刚性已严重妨碍任务完成时才可更低。
|
|
65
70
|
|
|
66
71
|
---
|
|
67
72
|
|
|
@@ -308,6 +313,6 @@ ${t}
|
|
|
308
313
|
- 每条 issue 的 summary 必须以规则代号 (E004/E006/W007/W009/W011/W013) 开头。
|
|
309
314
|
- critical 级(E004/E006)的 severity 字段填 "high"(schema 兼容性;前端会按 ruleId 识别 critical)。
|
|
310
315
|
- 命中规则要给 evidence;无命中则 issues 为空数组。
|
|
311
|
-
`;e.s(["PROMPT_ROBUSTNESS",0,i,"PROMPT_SECURITY",0,n,"PROMPT_SKILL_META",0,s])},421742,e=>e.a(async(t,s)=>{try{e.i(889228);var i=e.i(88045),n=e.i(254799),r=e.i(762545),a=e.i(106411),l=e.i(637351),o=e.i(401202),u=t([a]);[a]=u.then?(await u)():u;let f=Number(process.env.STATIC_EVAL_LLM_TIMEOUT_MS||12e4);function c(e){return(0,n.createHash)("sha1").update(e).digest("hex").slice(0,6)}async function d(e,t,s){let i=new AbortController,n=setTimeout(()=>i.abort(),f);try{let n=await e.chat.completions.create({model:t,messages:[{role:"user",content:s}],response_format:{type:"json_object"},max_tokens:2048},{signal:i.signal});return n.choices?.[0]?.message?.content||""}finally{clearTimeout(n)}}function m(e,t){let s;try{s=function(e){let t=(e||"").trim(),s=t.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(s&&(t=s[1].trim()),!t.startsWith("{")){let e=t.indexOf("{"),s=t.lastIndexOf("}");-1!==e&&s>e&&(t=t.slice(e,s+1))}try{return JSON.parse(t)}catch(e){try{let s=(0,r.jsonrepair)(t);return console.warn(`[static-eval] JSON.parse failed (${e.message}), recovered by jsonrepair (len=${t.length})`),JSON.parse(s)}catch(s){throw console.warn(`[static-eval] jsonrepair also failed: ${s.message}; raw len=${t.length}, head=${t.slice(0,120)}`),e}}}(e)}catch{return{comment:"",dims:[]}}let i="string"==typeof s?.overall_comment?s.overall_comment:"",n=(Array.isArray(s?.detailed_evaluation)?s.detailed_evaluation:[]).map(e=>({dimension:"string"==typeof e?.dimension?e.dimension:t,score:Number(e?.score)||0,justification:"string"==typeof e?.justification?e.justification:"",issues:Array.isArray(e?.issues)?e.issues.filter(e=>"string"==typeof e?.summary&&e.summary.trim()).map(e=>({summary:String(e.summary),severity:"string"==typeof e?.severity?e.severity:void 0,evidence:"string"==typeof e?.evidence?e.evidence:void 0,suggestedFix:"string"==typeof e?.suggestedFix?e.suggestedFix:void 0})):[]}));return{comment:i,dims:n}}function g(e){if(0===e.length)return{comment:"",dimensionScores:{},issues:[]};if(1===e.length)return e[0];let t={};for(let s of e)for(let[e,i]of Object.entries(s.dimensionScores))(void 0===t[e]||i<t[e])&&(t[e]=i);let s=new Set,i=[];for(let t of e)for(let e of t.issues)s.has(e.ruleId)||(s.add(e.ruleId),i.push(e));let n=e.map(e=>e.comment).filter(Boolean);return{comment:n.length>1?n.map((e,t)=>`[chunk ${t+1}] ${e}`).join(" "):n[0]||"",dimensionScores:t,issues:i}}async function h(e){let t,s=Date.now(),n={},r={},u=[];try{t=await (0,a.getActiveConfig)(e.user)}catch(e){return{ok:!1,errorMessage:`获取 LLM 配置失败: ${e?.message||e}`,durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u}}if(!t)return{ok:!1,errorMessage:"未配置可用的 LLM。请到「配置」页设置评估模型。",durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u};let{customFetch:h}=(0,l.getProxyConfig)(),f=new i.OpenAI({apiKey:t.apiKey||"no-api-key-required",baseURL:t.baseUrl||"https://api.deepseek.com",fetch:h}),p=t.model||"deepseek-chat",v=e.bundleChunks.length>0?e.bundleChunks:["(无附属脚本/参考)"];async function y(e,t,s){let i=await d(f,p,e),n=m(i,t);if(0===n.dims.length){console.warn(`[static-eval] ${s} empty dims on attempt 1 (raw len=${i.length}, head="${i.slice(0,80)}"), retrying`);let r=await d(f,p,e);n=m(r,t),0===n.dims.length&&console.warn(`[static-eval] ${s} still empty after retry (raw len=${r.length}, head="${r.slice(0,80)}")`)}return n}function S(e,t){let s={};for(let t of e.dims)t.score&&(s[t.dimension]=t.score);return{comment:e.comment,dimensionScores:s,issues:function(e,t){let s=[];for(let a of e){var i,n,r;let e=(i=a.score,!Number.isFinite(i)||i>=5?null:i>=4?"low":i>=3?"medium":"high");if(null!==e||0!==a.issues.length){if(0===a.issues.length){let i=e||"low";s.push({ruleId:`dim:${t}:${a.dimension}:${c(a.justification||a.dimension)}`,dimension:a.dimension,severity:i,summary:`${a.dimension}:评分 ${a.score}/5`,evidence:void 0,reasoning:a.justification,suggestedFix:void 0});continue}for(let i of a.issues){let l=(n=i.severity,r=e||"medium","high"===n||"medium"===n||"low"===n?n:r);s.push({ruleId:`dim:${t}:${a.dimension}:${c(i.summary)}`,dimension:a.dimension,severity:l,summary:i.summary,evidence:i.evidence,reasoning:a.justification,suggestedFix:i.suggestedFix})}}}return s}(e.dims,t)}}let k=async()=>{let t=o.PROMPT_SKILL_META.replace("${content}",e.skillContent);return S(await y(t,"SKILL.md","META"),"meta")},L=async t=>{let s=o.PROMPT_ROBUSTNESS.replace("${skillContent}",e.skillContent).replace("${bundleContent}",t);return S(await y(s,"工程健壮性","ROBUSTNESS"),"robustness")},I=async t=>{let s=o.PROMPT_SECURITY.replace("${skillContent}",e.skillContent).replace("${bundleContent}",t);return S(await y(s,"安全风险性","SECURITY"),"security")},[w,x,$]=await Promise.allSettled([k(),Promise.all(v.map(L)).then(g),Promise.all(v.map(I)).then(g)]),b=[];return("fulfilled"===w.status?(r.meta=w.value.comment,Object.assign(n,w.value.dimensionScores),u.push(...w.value.issues)):b.push(`META: ${String(w.reason?.message||w.reason)}`),"fulfilled"===x.status?(r.robustness=x.value.comment,Object.assign(n,x.value.dimensionScores),u.push(...x.value.issues)):b.push(`ROBUSTNESS: ${String(x.reason?.message||x.reason)}`),"fulfilled"===$.status?(r.security=$.value.comment,Object.assign(n,$.value.dimensionScores),u.push(...$.value.issues)):b.push(`SECURITY: ${String($.reason?.message||$.reason)}`),0===Object.keys(n).length&&0===u.length&&b.length>0)?{ok:!1,errorMessage:`LLM 评估全部失败: ${b.join("; ")}`,durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u}:{ok:!0,errorMessage:b.length>0?`部分阶段失败: ${b.join("; ")}`:void 0,durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u}}e.s(["runLlmStaticEvaluation",()=>h]),s()}catch(e){s(e)}},!1),814461,e=>e.a(async(t,s)=>{try{var i=e.i(254799),n=e.i(854763),r=e.i(106411),a=e.i(100451),l=e.i(668472),o=e.i(421742),u=t([n,r,o]);function c(e){return!!e&&e.includes("+llm")}[n,r,o]=u.then?(await u)():u;let m={high:2,medium:3,low:4},g={structure:"结构规范性",security:"安全风险性"};async function d(e){var t,s;let u=Date.now();if(!await (0,r.getActiveConfig)(e.user))return{status:"skipped",issuesCount:0,skipReason:"未配置评估模型,跳过评估"};let c=await n.prismaRaw.skillVersion.findUnique({where:{skillId_version:{skillId:e.skillId,version:e.version}}});if(!c)return{status:"failed",issuesCount:0,errorMessage:"SkillVersion not found"};let d=c.content??"",h=(0,i.createHash)("sha256").update(d).digest("hex").slice(0,16),f="static-evaluator@0.2+llm";if("auto-upload"===e.trigger){let t=new Date(Date.now()-864e5),s=await n.prismaRaw.evaluation.findFirst({where:{skillId:e.skillId,version:e.version,type:"static",contentHash:h,generator:f,status:"ok",ranAt:{gte:t}},select:{id:!0,ranAt:!0}});if(s)return{status:"skipped",evaluationId:s.id,issuesCount:0,skipReason:`24h 内已有同 contentHash + ${f} 的成功评估`}}let p=await n.prismaRaw.evaluation.create({data:{type:"static",skillId:e.skillId,version:e.version,user:e.user,contentHash:h,generator:f,status:"pending"}}),v=[],y=null,S=null;try{let i=(0,l.loadAssetBundle)(c.assetPath),r=[...(0,a.lintSkillContent)(d),...(0,a.lintSecurity)(d,i.bundleTextFull)];for(let s of r)v.push({evaluationId:(t={evaluationId:p.id,skillId:e.skillId,version:e.version,user:e.user}).evaluationId,source:"static",skillId:t.skillId,version:t.version,user:t.user,dedupKey:s.ruleId,severity:s.severity,summary:s.summary,evidence:s.evidence??null,reasoning:s.reasoning??null,suggestedFix:s.suggestedFix??null,ruleId:s.ruleId,dimension:s.dimension});let h={},f={},k=!1,L=await (0,o.runLlmStaticEvaluation)({user:e.user,skillContent:d,bundleChunks:i.bundleChunks});if(L.ok){for(let t of(k=!0,h=L.dimensionScores,f=L.overallComments,L.issues))v.push({evaluationId:(s={evaluationId:p.id,skillId:e.skillId,version:e.version,user:e.user}).evaluationId,source:"static",skillId:s.skillId,version:s.version,user:s.user,dedupKey:t.ruleId,severity:t.severity,summary:t.summary,evidence:t.evidence??null,reasoning:t.reasoning??null,suggestedFix:t.suggestedFix??null,ruleId:t.ruleId,dimension:t.dimension});L.errorMessage&&(S=L.errorMessage)}else S=L.errorMessage||"LLM 评估失败";if(k){let e=function(e,t){let s={};for(let t of e){let e=g[t.dimension];if(!e)continue;let i=m[t.severity];(void 0===s[e]||i<s[e])&&(s[e]=i)}let i={...t};for(let[e,t]of Object.entries(s)){let s=i[e];i[e]=void 0===s?t:Math.min(s,t)}return i}(r,h);Object.keys(e).length>0&&(y=JSON.stringify({scores:e,comments:f}))}v.length>0&&await n.prismaRaw.skillIssue.createMany({data:v});let I=S?"partial":"ok";return await n.prismaRaw.evaluation.update({where:{id:p.id},data:{status:I,durationMs:Date.now()-u,l2ScoresJson:y,errorMessage:S}}),{status:I,evaluationId:p.id,issuesCount:v.length,errorMessage:S??void 0}}catch(t){let e=String(t?.message||t);return await n.prismaRaw.evaluation.update({where:{id:p.id},data:{status:"failed",durationMs:Date.now()-u,errorMessage:e}}).catch(()=>void 0),{status:"failed",evaluationId:p.id,issuesCount:0,errorMessage:e}}}e.s(["isLlmScoredGenerator",()=>c,"runStaticEvaluation",()=>d]),s()}catch(e){s(e)}},!1)];
|
|
316
|
+
`;e.s(["PROMPT_ROBUSTNESS",0,i,"PROMPT_SECURITY",0,n,"PROMPT_SKILL_META",0,s])},421742,e=>e.a(async(t,s)=>{try{e.i(889228);var i=e.i(88045),n=e.i(254799),r=e.i(762545),l=e.i(106411),a=e.i(637351),o=e.i(401202),u=t([l]);[l]=u.then?(await u)():u;let p=Number(process.env.STATIC_EVAL_LLM_TIMEOUT_MS||12e4),y=Number(process.env.STATIC_EVAL_TEMPERATURE??0),v=Math.max(1,Number(process.env.STATIC_EVAL_SAMPLES||3));function c(e){return(0,n.createHash)("sha1").update(e).digest("hex").slice(0,6)}async function d(e,t,s){let i=new AbortController,n=setTimeout(()=>i.abort(),p);try{let n=await e.chat.completions.create({model:t,messages:[{role:"user",content:s}],response_format:{type:"json_object"},max_tokens:2048,temperature:y},{signal:i.signal});return n.choices?.[0]?.message?.content||""}finally{clearTimeout(n)}}function m(e,t){let s;try{s=function(e){let t=(e||"").trim(),s=t.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(s&&(t=s[1].trim()),!t.startsWith("{")){let e=t.indexOf("{"),s=t.lastIndexOf("}");-1!==e&&s>e&&(t=t.slice(e,s+1))}try{return JSON.parse(t)}catch(e){try{let s=(0,r.jsonrepair)(t);return console.warn(`[static-eval] JSON.parse failed (${e.message}), recovered by jsonrepair (len=${t.length})`),JSON.parse(s)}catch(s){throw console.warn(`[static-eval] jsonrepair also failed: ${s.message}; raw len=${t.length}, head=${t.slice(0,120)}`),e}}}(e)}catch{return{comment:"",dims:[]}}let i="string"==typeof s?.overall_comment?s.overall_comment:"",n=(Array.isArray(s?.detailed_evaluation)?s.detailed_evaluation:[]).map(e=>({dimension:"string"==typeof e?.dimension?e.dimension:t,score:Number(e?.score)||0,justification:"string"==typeof e?.justification?e.justification:"",issues:Array.isArray(e?.issues)?e.issues.filter(e=>"string"==typeof e?.summary&&e.summary.trim()).map(e=>({summary:String(e.summary),severity:"string"==typeof e?.severity?e.severity:void 0,evidence:"string"==typeof e?.evidence?e.evidence:void 0,suggestedFix:"string"==typeof e?.suggestedFix?e.suggestedFix:void 0})):[]}));return{comment:i,dims:n}}function g(e){if(0===e.length)return{comment:"",dimensionScores:{},issues:[]};if(1===e.length)return e[0];let t={};for(let s of e)for(let[e,i]of Object.entries(s.dimensionScores))(void 0===t[e]||i<t[e])&&(t[e]=i);let s=new Set,i=[];for(let t of e)for(let e of t.issues)s.has(e.ruleId)||(s.add(e.ruleId),i.push(e));let n=e.map(e=>e.comment).filter(Boolean);return{comment:n.length>1?n.map((e,t)=>`[chunk ${t+1}] ${e}`).join(" "):n[0]||"",dimensionScores:t,issues:i}}async function f(e,t){if(t<=1)return e();let s=await Promise.allSettled(Array.from({length:t},()=>e())),i=s.filter(e=>"fulfilled"===e.status).map(e=>e.value);if(0===i.length){let e=s.find(e=>"rejected"===e.status);throw e?.reason??Error("all samples failed")}return function(e){if(0===e.length)return{comment:"",dimensionScores:{},issues:[]};if(1===e.length)return e[0];let t=new Set;for(let s of e)for(let e of Object.keys(s.dimensionScores))t.add(e);let s={},i=[],n="";for(let r of t){let t=e.filter(e=>"number"==typeof e.dimensionScores[r]);if(0===t.length)continue;let l=function(e){let t=[...e].sort((e,t)=>e-t);return t[Math.floor((t.length-1)/2)]}(t.map(e=>e.dimensionScores[r]));s[r]=l;let a=t.find(e=>e.dimensionScores[r]===l)||t[0];i.push(...a.issues.filter(e=>e.dimension===r)),!n&&a.comment&&(n=a.comment)}return{comment:n,dimensionScores:s,issues:i}}(i)}async function h(e){let t,s=Date.now(),n={},r={},u=[];try{t=await (0,l.getActiveConfig)(e.user)}catch(e){return{ok:!1,errorMessage:`获取 LLM 配置失败: ${e?.message||e}`,durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u}}if(!t)return{ok:!1,errorMessage:"未配置可用的 LLM。请到「配置」页设置评估模型。",durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u};let{customFetch:h}=(0,a.getProxyConfig)(),p=new i.OpenAI({apiKey:t.apiKey||"no-api-key-required",baseURL:t.baseUrl||"https://api.deepseek.com",fetch:h}),y=t.model||"deepseek-chat",S=e.bundleChunks.length>0?e.bundleChunks:["(无附属脚本/参考)"];async function k(e,t,s){let i=await d(p,y,e),n=m(i,t);if(0===n.dims.length){console.warn(`[static-eval] ${s} empty dims on attempt 1 (raw len=${i.length}, head="${i.slice(0,80)}"), retrying`);let r=await d(p,y,e);n=m(r,t),0===n.dims.length&&console.warn(`[static-eval] ${s} still empty after retry (raw len=${r.length}, head="${r.slice(0,80)}")`)}return n}function L(e,t){let s={};for(let t of e.dims)t.score&&(s[t.dimension]=t.score);return{comment:e.comment,dimensionScores:s,issues:function(e,t){let s=[];for(let l of e){var i,n,r;let e=(i=l.score,!Number.isFinite(i)||i>=5?null:i>=4?"low":i>=3?"medium":"high");if(null!==e||0!==l.issues.length){if(0===l.issues.length){let i=e||"low";s.push({ruleId:`dim:${t}:${l.dimension}:${c(l.justification||l.dimension)}`,dimension:l.dimension,severity:i,summary:`${l.dimension}:评分 ${l.score}/5`,evidence:void 0,reasoning:l.justification,suggestedFix:void 0});continue}for(let i of l.issues){let a=(n=i.severity,r=e||"medium","high"===n||"medium"===n||"low"===n?n:r);s.push({ruleId:`dim:${t}:${l.dimension}:${c(i.summary)}`,dimension:l.dimension,severity:a,summary:i.summary,evidence:i.evidence,reasoning:l.justification,suggestedFix:i.suggestedFix})}}}return s}(e.dims,t)}}let I=async()=>{let t=o.PROMPT_SKILL_META.replace("${content}",e.skillContent);return L(await k(t,"SKILL.md","META"),"meta")},w=async t=>{let s=o.PROMPT_ROBUSTNESS.replace("${skillContent}",e.skillContent).replace("${bundleContent}",t);return L(await k(s,"工程健壮性","ROBUSTNESS"),"robustness")},$=async t=>{let s=o.PROMPT_SECURITY.replace("${skillContent}",e.skillContent).replace("${bundleContent}",t);return L(await k(s,"安全风险性","SECURITY"),"security")},[x,b,_]=await Promise.allSettled([f(I,v),f(()=>Promise.all(S.map(w)).then(g),v),f(()=>Promise.all(S.map($)).then(g),v)]),M=[];return("fulfilled"===x.status?(r.meta=x.value.comment,Object.assign(n,x.value.dimensionScores),u.push(...x.value.issues)):M.push(`META: ${String(x.reason?.message||x.reason)}`),"fulfilled"===b.status?(r.robustness=b.value.comment,Object.assign(n,b.value.dimensionScores),u.push(...b.value.issues)):M.push(`ROBUSTNESS: ${String(b.reason?.message||b.reason)}`),"fulfilled"===_.status?(r.security=_.value.comment,Object.assign(n,_.value.dimensionScores),u.push(..._.value.issues)):M.push(`SECURITY: ${String(_.reason?.message||_.reason)}`),0===Object.keys(n).length&&0===u.length&&M.length>0)?{ok:!1,errorMessage:`LLM 评估全部失败: ${M.join("; ")}`,durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u}:{ok:!0,errorMessage:M.length>0?`部分阶段失败: ${M.join("; ")}`:void 0,durationMs:Date.now()-s,dimensionScores:n,overallComments:r,issues:u}}e.s(["runLlmStaticEvaluation",()=>h]),s()}catch(e){s(e)}},!1),814461,e=>e.a(async(t,s)=>{try{var i=e.i(254799),n=e.i(854763),r=e.i(106411),l=e.i(100451),a=e.i(668472),o=e.i(421742),u=t([n,r,o]);function c(e){return!!e&&e.includes("+llm")}[n,r,o]=u.then?(await u)():u;let m={high:2,medium:3,low:4},g={structure:"结构规范性",security:"安全风险性"};async function d(e){var t,s;let u=Date.now();if(!await (0,r.getActiveConfig)(e.user))return{status:"skipped",issuesCount:0,skipReason:"未配置评估模型,跳过评估"};let c=await n.prismaRaw.skillVersion.findUnique({where:{skillId_version:{skillId:e.skillId,version:e.version}}});if(!c)return{status:"failed",issuesCount:0,errorMessage:"SkillVersion not found"};let d=c.content??"",f=(0,i.createHash)("sha256").update(d).digest("hex").slice(0,16),h="static-evaluator@0.2+llm";if("auto-upload"===e.trigger){let t=new Date(Date.now()-864e5),s=await n.prismaRaw.evaluation.findFirst({where:{skillId:e.skillId,version:e.version,type:"static",contentHash:f,generator:h,status:"ok",ranAt:{gte:t}},select:{id:!0,ranAt:!0}});if(s)return{status:"skipped",evaluationId:s.id,issuesCount:0,skipReason:`24h 内已有同 contentHash + ${h} 的成功评估`}}let p=await n.prismaRaw.evaluation.create({data:{type:"static",skillId:e.skillId,version:e.version,user:e.user,contentHash:f,generator:h,status:"pending"}}),y=[],v=null,S=null;try{let i=(0,a.loadAssetBundle)(c.assetPath),r=function(e){let t;if(!e)return 0;try{t=JSON.parse(e)}catch{return 0}return Array.isArray(t)?t.filter(e=>"string"==typeof e&&/^(references|scripts)\//.test(e)).length:0}(c.files);if(r>0&&0===i.fileCount)throw Error(`资产 bundle 加载为空,但 SkillVersion.files 声明了 ${r} 个 references/scripts 附件(assetPath=${c.assetPath??"null"},cwd=${process.cwd()})。多半是运行工作目录与存储根不一致(如在 git worktree 内运行)。已中止评估以避免对工程健壮性/安全风险性盲评出假阴性;请从存储根目录运行,或修正 assetPath / 存储路径。`);let f=[...(0,l.lintSkillContent)(d),...(0,l.lintSecurity)(d,i.bundleTextFull)];for(let s of f)y.push({evaluationId:(t={evaluationId:p.id,skillId:e.skillId,version:e.version,user:e.user}).evaluationId,source:"static",skillId:t.skillId,version:t.version,user:t.user,dedupKey:s.ruleId,severity:s.severity,summary:s.summary,evidence:s.evidence??null,reasoning:s.reasoning??null,suggestedFix:s.suggestedFix??null,ruleId:s.ruleId,dimension:s.dimension});let h={},k={},L=!1,I=await (0,o.runLlmStaticEvaluation)({user:e.user,skillContent:d,bundleChunks:i.bundleChunks});if(I.ok){for(let t of(L=!0,h=I.dimensionScores,k=I.overallComments,I.issues))y.push({evaluationId:(s={evaluationId:p.id,skillId:e.skillId,version:e.version,user:e.user}).evaluationId,source:"static",skillId:s.skillId,version:s.version,user:s.user,dedupKey:t.ruleId,severity:t.severity,summary:t.summary,evidence:t.evidence??null,reasoning:t.reasoning??null,suggestedFix:t.suggestedFix??null,ruleId:t.ruleId,dimension:t.dimension});I.errorMessage&&(S=I.errorMessage)}else S=I.errorMessage||"LLM 评估失败";if(L){let e=function(e,t){let s={};for(let t of e){let e=g[t.dimension];if(!e)continue;let i=m[t.severity];(void 0===s[e]||i<s[e])&&(s[e]=i)}let i={...t};for(let[e,t]of Object.entries(s)){let s=i[e];i[e]=void 0===s?t:Math.min(s,t)}return i}(f,h);Object.keys(e).length>0&&(v=JSON.stringify({scores:e,comments:k}))}y.length>0&&await n.prismaRaw.skillIssue.createMany({data:y});let w=S?"partial":"ok";return await n.prismaRaw.evaluation.update({where:{id:p.id},data:{status:w,durationMs:Date.now()-u,l2ScoresJson:v,errorMessage:S}}),{status:w,evaluationId:p.id,issuesCount:y.length,errorMessage:S??void 0}}catch(t){let e=String(t?.message||t);return await n.prismaRaw.evaluation.update({where:{id:p.id},data:{status:"failed",durationMs:Date.now()-u,errorMessage:e}}).catch(()=>void 0),{status:"failed",evaluationId:p.id,issuesCount:0,errorMessage:e}}}e.s(["isLlmScoredGenerator",()=>c,"runStaticEvaluation",()=>d]),s()}catch(e){s(e)}},!1)];
|
|
312
317
|
|
|
313
318
|
//# sourceMappingURL=src_lib_engine_skill-issues_static-evaluator_5e9f2d8a._.js.map
|