niceeval 0.13.2 → 0.13.3-canary.37
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/dist/agents/claude-code-native.cjs +213 -0
- package/dist/agents/claude-code-native.cjs.map +1 -0
- package/dist/agents/claude-code-native.d.cts +5 -0
- package/dist/agents/claude-code-native.d.mts +5 -0
- package/dist/agents/claude-code-native.d.ts +5 -0
- package/dist/agents/claude-code-native.js +6 -0
- package/dist/agents/claude-code-native.js.map +1 -0
- package/dist/agents/claude-code.cjs +26 -80
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex-app-server.cjs +315 -0
- package/dist/agents/codex-app-server.cjs.map +1 -0
- package/dist/agents/codex-app-server.d.cts +9 -0
- package/dist/agents/codex-app-server.d.mts +9 -0
- package/dist/agents/codex-app-server.d.ts +9 -0
- package/dist/agents/codex-app-server.js +6 -0
- package/dist/agents/codex-app-server.js.map +1 -0
- package/dist/agents/codex.cjs +16 -65
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/index.cjs +3 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +1 -0
- package/dist/agents/index.d.mts +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.js +84 -82
- package/dist/agents/index.mjs +84 -82
- package/dist/agents/managed-jsonl.cjs +207 -0
- package/dist/agents/managed-jsonl.cjs.map +1 -0
- package/dist/agents/managed-jsonl.d.cts +39 -0
- package/dist/agents/managed-jsonl.d.mts +39 -0
- package/dist/agents/managed-jsonl.d.ts +39 -0
- package/dist/agents/managed-jsonl.js +6 -0
- package/dist/agents/managed-jsonl.js.map +1 -0
- package/dist/agents/managed-process.cjs +31 -0
- package/dist/agents/managed-process.cjs.map +1 -0
- package/dist/agents/managed-process.d.cts +3 -0
- package/dist/agents/managed-process.d.mts +3 -0
- package/dist/agents/managed-process.d.ts +3 -0
- package/dist/agents/managed-process.js +6 -0
- package/dist/agents/managed-process.js.map +1 -0
- package/dist/agents/omp.cjs +18 -1
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +8 -0
- package/dist/agents/types.d.mts +8 -0
- package/dist/agents/types.d.ts +8 -0
- package/dist/context/assert-first.cjs +1 -0
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +1 -0
- package/dist/context/assert-first.d.mts +1 -0
- package/dist/context/assert-first.d.ts +1 -0
- package/dist/context/attempt-resources.cjs +13 -0
- package/dist/context/attempt-resources.cjs.map +1 -0
- package/dist/context/attempt-resources.d.cts +3 -0
- package/dist/context/attempt-resources.d.mts +3 -0
- package/dist/context/attempt-resources.d.ts +3 -0
- package/dist/context/attempt-resources.js +8 -0
- package/dist/context/attempt-resources.js.map +1 -0
- package/dist/context/session.cjs +4 -3
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +1 -0
- package/dist/context/session.d.mts +1 -0
- package/dist/context/session.d.ts +1 -0
- package/dist/report/assets/styles.css +4 -0
- package/dist/report/components/attempt-detail/compute.cjs +4 -2
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +2 -2
- package/dist/report/components/attempt-detail/compute.d.mts +2 -2
- package/dist/report/components/attempt-detail/compute.d.ts +2 -2
- package/dist/report/components/attempt-detail/content.cjs +1 -0
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/attempt-detail/validate.cjs +3 -2
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
- package/dist/report/components/summaries/index.cjs +5 -1
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/definition/primitives/conversation.cjs +7 -0
- package/dist/report/definition/primitives/conversation.cjs.map +1 -1
- package/dist/report/definition/primitives/conversation.d.cts +2 -0
- package/dist/report/definition/primitives/conversation.d.mts +2 -0
- package/dist/report/definition/primitives/conversation.d.ts +2 -0
- package/dist/report/definition/primitives/turn-trace.cjs +53 -3
- package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
- package/dist/report/react/styles.css +4 -0
- package/dist/runner/attempt-resources.cjs +60 -0
- package/dist/runner/attempt-resources.cjs.map +1 -0
- package/dist/runner/attempt-resources.d.cts +13 -0
- package/dist/runner/attempt-resources.d.mts +13 -0
- package/dist/runner/attempt-resources.d.ts +13 -0
- package/dist/runner/attempt-resources.js +6 -0
- package/dist/runner/attempt-resources.js.map +1 -0
- package/dist/runner/attempt.cjs +37 -3
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/sandbox/backend.cjs +32 -2
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +12 -1
- package/dist/sandbox/backend.d.mts +12 -1
- package/dist/sandbox/backend.d.ts +12 -1
- package/dist/sandbox/backend.js +28 -22
- package/dist/sandbox/docker.cjs +140 -0
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +3 -1
- package/dist/sandbox/docker.d.mts +3 -1
- package/dist/sandbox/docker.d.ts +3 -1
- package/dist/sandbox/e2b.cjs +42 -0
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/e2b.d.cts +2 -0
- package/dist/sandbox/e2b.d.mts +2 -0
- package/dist/sandbox/e2b.d.ts +2 -0
- package/dist/sandbox/local.cjs +64 -0
- package/dist/sandbox/local.cjs.map +1 -1
- package/dist/sandbox/local.d.cts +3 -1
- package/dist/sandbox/local.d.mts +3 -1
- package/dist/sandbox/local.d.ts +3 -1
- package/dist/sandbox/managed-process.cjs +49 -0
- package/dist/sandbox/managed-process.cjs.map +1 -0
- package/dist/sandbox/managed-process.d.cts +11 -0
- package/dist/sandbox/managed-process.d.mts +11 -0
- package/dist/sandbox/managed-process.d.ts +11 -0
- package/dist/sandbox/managed-process.js +6 -0
- package/dist/sandbox/managed-process.js.map +1 -0
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +24 -0
- package/dist/sandbox/types.d.mts +24 -0
- package/dist/sandbox/types.d.ts +24 -0
- package/dist/sandbox/vercel.cjs +1 -0
- package/dist/sandbox/vercel.cjs.map +1 -1
- package/dist/sandbox/vercel.d.cts +1 -0
- package/dist/sandbox/vercel.d.mts +1 -0
- package/dist/sandbox/vercel.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["content.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content 投影:compute 领域结果 → 原语 Content 形状。\n// 输入全部是当前闭合 DomainView 派生的普通值。\nimport { Text, TurnTrace } from \"../../definition/primitives.tsx\";\nimport type { ReportNode } from \"../../definition/tree.ts\";\nimport type { CalloutGroup, CalloutItem } from \"../../definition/primitives/callouts-logic.ts\";\nimport type { CopyBlockContent } from \"../../definition/primitives/copy-block.tsx\";\nimport type { CommandEvidenceContent, ConversationContent, ConversationEntry, ConversationTurn } from \"../../definition/primitives/conversation.tsx\";\nimport { ToolEvidence } from \"../../definition/primitives/tool-evidence.tsx\";\nimport type { DiffContent } from \"../../definition/primitives/diff-lines.ts\";\nimport type { SourceBlockContent, SourceContent, SourceLine, SourceLineTone, } from \"../../definition/primitives/source-view.tsx\";\nimport type { WaterfallContent, WaterfallNode } from \"../../definition/primitives/waterfall.tsx\";\nimport type { TableContent, TableContentRow } from \"../../definition/cell.ts\";\nimport type { ClosedTimingInterval } from \"../../../analysis/index.ts\";\nimport { formatDurationMs, formatPointsSuffix } from \"../../model/format.ts\";\nimport { localizedMessage } from \"../../model/locale.ts\";\nimport { normalizeTurnLabel } from \"../../../shared/turn-label.ts\";\nimport type { AttemptAssertionsData, AttemptAssertionView, AttemptCommandEvidenceData, AttemptConversationData, AttemptConversationReply, AttemptDiagnosticsData, AttemptDiffData, AttemptErrorData, AttemptFixPromptData, AttemptSourceData, AttemptSourceItemView, AttemptTimelineData, AttemptTraceData, } from \"./compute.ts\";\n// ───────────────────────── AttemptSource ─────────────────────────\n/** 该行 assertion 的判定摘要行 tone:与源码行状态同一套色。 */\nfunction assertionToneClass(assertion: AttemptAssertionView): string {\n if (assertion.outcome === \"unavailable\")\n return \"niceeval-tone-na\";\n if (assertion.outcome === \"passed\")\n return \"niceeval-tone-good\";\n return assertion.severity === \"gate\" ? \"niceeval-tone-bad\" : \"niceeval-tone-warn\";\n}\n/**\n * 一条 assertion 在展开区里的呈现:一行判定摘要,再接一段详情正文\n * (docs/feature/reports/library.md「源码行展开区里有什么」)。\n */\nfunction assertionNodes(assertion: AttemptAssertionView, key: string): ReportNode[] {\n const points = assertion.outcome !== \"unavailable\" && assertion.score !== undefined\n ? ` ${formatPointsSuffix(assertion.score.state === \"earned\" ? assertion.score.earned ?? 0 : 0)}`\n : \"\";\n const head = `${assertion.name} · ${assertion.severity} ${assertion.outcome}${points}`;\n const nodes: ReportNode[] = [\n <Text key={`${key}:head`} className={`niceeval-source-assertion ${assertionToneClass(assertion)}`}>\n {head}\n </Text>,\n ];\n if (assertion.detail.length > 0) {\n nodes.push(<Text key={`${key}:body`} className=\"niceeval-source-assertion-body\">\n {assertion.detail}\n </Text>);\n }\n return nodes;\n}\nfunction lineToneOf(assertions: readonly AttemptAssertionView[]): SourceLineTone | undefined {\n if (assertions.some((assertion) => assertion.outcome === \"failed\" && assertion.severity === \"gate\"))\n return \"gate-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"failed\"))\n return \"soft-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"unavailable\"))\n return \"unavailable\";\n if (assertions.some((assertion) => assertion.outcome === \"passed\"))\n return \"passed\";\n return undefined;\n}\ninterface SiteLineBinding {\n readonly entry: AttemptAssertionView;\n readonly role: string;\n readonly line: number;\n}\n/** sourceSites → 每行注解绑定:detail 落在起始行,tone 覆盖整个行区间。 */\nfunction siteBindingsOf(data: AttemptSourceData): ReadonlyMap<string, readonly SiteLineBinding[]> {\n const entriesById = new Map(data.entries.map((entry) => [entry.entryId, entry] as const));\n const bindings = new Map<string, SiteLineBinding[]>();\n for (const site of data.sites) {\n const entry = entriesById.get(site.entryId);\n if (entry === undefined)\n continue;\n for (let line = site.startLine; line <= site.endLine; line += 1) {\n const bucket = bindings.get(`${site.sourceItemId}:${line}`) ?? [];\n bucket.push({ entry, role: site.role, line: site.startLine });\n bindings.set(`${site.sourceItemId}:${line}`, bucket);\n }\n }\n return bindings;\n}\nfunction sourceItemBlock(item: AttemptSourceItemView, data: AttemptSourceData, bindings: ReadonlyMap<string, readonly SiteLineBinding[]>): SourceBlockContent {\n const lines: SourceLine[] = item.lines.map((text, index): SourceLine => {\n const line = index + 1;\n const bound = bindings.get(`${item.sourceItemId}:${line}`) ?? [];\n const assertions = bound.filter((binding) => binding.role !== \"score\").map((binding) => binding.entry);\n const details = bound\n .filter((binding) => binding.line === line && binding.role !== \"score\")\n .map((binding, detailIndex) => assertionNodes(binding.entry, `${item.path}:${line}:${detailIndex}`))\n .flat();\n const points = bound\n .filter((binding) => binding.role === \"score\")\n .reduce((sum, binding) => sum + (binding.entry.score?.state === \"earned\" ? binding.entry.score.earned ?? 0 : 0), 0);\n const hasPoints = bound.some((binding) => binding.role === \"score\" && binding.entry.score !== undefined);\n const tone = lineToneOf(assertions);\n const turnIds = (data.navigation?.rows ?? [])\n .filter((row) => row.source.state === \"mapped\" &&\n row.source.sourceItemId === item.sourceItemId &&\n row.source.sha256 === item.sha256 &&\n row.source.start.line === line)\n .sort((left, right) => (left.sourceOrder ?? Number.MAX_SAFE_INTEGER) - (right.sourceOrder ?? Number.MAX_SAFE_INTEGER) ||\n (left.turnId < right.turnId ? -1 : left.turnId > right.turnId ? 1 : 0))\n .map((row) => row.turnId);\n return {\n number: line,\n text,\n ...(turnIds.length > 0 ? { interaction: \"send\" as const, turnIds } : {}),\n ...(tone !== undefined ? { tone } : {}),\n ...(hasPoints ? { pill: formatPointsSuffix(points) } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n });\n return { path: item.path, lines };\n}\n/**\n * 闭合 Sources + sourceSites → SourceView Content。spine 是第一个 source item,\n * 其余是 detached;没有 sourceSite 的 attention 断言进 unmapped 区,不丢弃。\n */\nexport function projectedSourceContent(data: AttemptSourceData | null, locator?: AttemptSourceData[\"locator\"]): SourceContent | null {\n if (data === null)\n return null;\n const bindings = siteBindingsOf(data);\n const referenced = new Set(data.sites.map((site) => site.entryId));\n const unmapped: ReportNode[] = data.entries\n .filter((entry) => !referenced.has(entry.entryId))\n .flatMap((entry, index) => assertionNodes(entry, `unmapped:${index}`));\n const spine = sourceItemBlock(data.items[0]!, data, bindings);\n const detached = data.items.slice(1).map((item) => sourceItemBlock(item, data, bindings));\n return {\n spine,\n detached,\n ...(unmapped.length > 0 ? { unmapped } : {}),\n ...(locator !== undefined ? { locator } : {}),\n };\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\nexport function attemptAssertionsContent(data: AttemptAssertionsData | null): TableContent | null {\n if (data === null || (data.attention.length === 0 && data.passedGroups.length === 0))\n return null;\n const rows: TableContentRow[] = [];\n for (const assertion of data.attention) {\n rows.push({\n key: assertion.entryId,\n cells: {\n name: { kind: \"text\", text: assertion.name },\n severity: { kind: \"text\", text: assertion.severity },\n outcome: { kind: \"verdict\", verdict: assertion.outcome === \"unavailable\" ? \"skipped\" : assertion.outcome },\n detail: assertion.detail.length > 0\n ? { kind: \"text\", text: assertion.detail }\n : { kind: \"notApplicable\" },\n },\n });\n }\n return {\n columns: [\n { key: \"name\", header: localizedMessage(\"attemptAssertions.name\") },\n { key: \"severity\", header: localizedMessage(\"attemptAssertions.severity\") },\n { key: \"outcome\", header: localizedMessage(\"attemptAssertions.outcome\") },\n { key: \"detail\", header: localizedMessage(\"attemptAssertions.detail\") },\n ],\n rows,\n };\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\nfunction timingTree(intervals: readonly ClosedTimingInterval[]): readonly WaterfallNode[] {\n const children = new Map<string | null, ClosedTimingInterval[]>();\n for (const interval of intervals) {\n const siblings = children.get(interval.parentIntervalId) ?? [];\n siblings.push(interval);\n children.set(interval.parentIntervalId, siblings);\n }\n const build = (parent: string | null): WaterfallNode[] => (children.get(parent) ?? [])\n .sort(compareIntervals)\n .map((interval) => {\n const phase = interval.phase;\n return {\n key: interval.intervalId,\n label: interval.label,\n kind: phase,\n startOffsetMs: interval.startOffsetMs,\n durationMs: interval.durationMs,\n ...(interval.outcome === \"failed\" || interval.outcome === \"interrupted\" ? { failed: true as const } : {}),\n // 主干默认展开:直接看到 eval.run 与 agent.send 内部活动。\n ...(phase === \"eval.run\" || phase === \"agent.send\" ? { open: true as const } : {}),\n ...(build(interval.intervalId).length > 0 ? { children: build(interval.intervalId) } : {}),\n };\n });\n return build(null);\n}\nfunction compareIntervals(left: ClosedTimingInterval, right: ClosedTimingInterval): number {\n return left.startOffsetMs - right.startOffsetMs || compareText(left.intervalId, right.intervalId);\n}\nfunction timingSpan(intervals: readonly ClosedTimingInterval[]): number | null {\n if (intervals.length === 0)\n return null;\n const start = Math.min(...intervals.map((interval) => interval.startOffsetMs));\n const end = Math.max(...intervals.map((interval) => interval.startOffsetMs + interval.durationMs));\n return Math.max(0, end - start);\n}\n/** 执行时间树:root 区间是 phase 主链,children 是采集侧层级。 */\nexport function attemptTimelineContent(data: AttemptTimelineData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\nexport function attemptTraceContent(data: AttemptTraceData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\n/** 工具出入参等结构化值:JSON 化后交原语收口成单行预览(Conversation 的 preview 契约)。 */\nfunction jsonPreview(value: string | undefined): string {\n return value === undefined ? \"\" : value;\n}\nfunction conversationEntryOf(reply: AttemptConversationReply): ConversationEntry {\n switch (reply.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n return { kind: reply.kind, preview: reply.text, failed: reply.kind === \"error\" };\n case \"context\":\n return { kind: \"context\", preview: reply.text };\n case \"tool\": {\n const finished = reply.outputSummary !== undefined;\n const raw = finished ? reply.outputSummary : reply.inputSummary;\n return {\n kind: \"tool\",\n preview: finished\n ? `${reply.name} result`\n : `${reply.name}(${jsonPreview(reply.inputSummary)})`,\n raw,\n callId: reply.callId,\n callPhase: finished ? \"finished\" : \"started\",\n ...(reply.failed === true ? { failed: true } : {}),\n detail: (<ToolEvidence content={{\n phase: finished ? \"finished\" : \"started\",\n tool: reply.name,\n callId: reply.callId,\n inputSummary: reply.inputSummary,\n ...(reply.outputSummary === undefined ? {} : { outputSummary: reply.outputSummary }),\n ...(reply.outcome === undefined ? {} : { outcome: reply.outcome }),\n }}/>),\n };\n }\n case \"subagent\":\n return {\n kind: \"subagent\",\n preview: reply.name,\n ...(reply.failed === true ? { failed: true } : {}),\n ...(reply.summary ? { detail: <Text>{reply.summary}</Text> } : {}),\n };\n case \"skill\":\n return { kind: \"skill\", preview: reply.text ? `${reply.skill}: ${reply.text}` : reply.skill };\n case \"input\":\n return {\n kind: \"input\",\n preview: `${reply.request.state} · ${reply.request.promptSummary}`,\n ...(reply.request.responseSummary !== null\n ? { detail: <Text>{reply.request.responseSummary}</Text> }\n : {}),\n };\n case \"compaction\":\n return { kind: \"compaction\", preview: reply.text || \"context compacted\" };\n }\n}\nfunction turnVerdictOf(outcome: AttemptConversationData[\"rounds\"][number][\"outcome\"]): ConversationTurn[\"verdict\"] {\n switch (outcome) {\n case \"completed\":\n return undefined;\n case \"failed\":\n return \"failed\";\n case \"cancelled\":\n return \"skipped\";\n case \"interrupted\":\n return \"errored\";\n }\n}\nexport function attemptConversationContent(data: AttemptConversationData | null): ConversationContent | null {\n if (data === null || data.rounds.length === 0)\n return null;\n const turns: ConversationTurn[] = data.rounds.map((round) => ({\n key: round.turnId,\n label: `Turn ${round.sequence}`,\n ...(round.durationMs === undefined ? {} : { durationMs: round.durationMs }),\n verdict: turnVerdictOf(round.outcome),\n entries: round.replies.map(conversationEntryOf),\n }));\n return { turns, locator: data.locator };\n}\n// ───────────────────────── AttemptCommandEvidence ─────────────────────────\nexport function attemptCommandEvidenceContent(data: AttemptCommandEvidenceData | null): CommandEvidenceContent | null {\n if (data === null || data.commands.length === 0)\n return null;\n return { locator: data.locator, commands: data.commands };\n}\n// ───────────────────────── AttemptDiagnostics / AttemptError ─────────────────────────\nexport const executionEvidenceUnavailableCallouts: readonly CalloutGroup[] = [\n {\n title: \"Execution evidence unavailable\",\n items: [\n {\n level: \"warning\",\n message: \"The events artifact is missing or was not published.\",\n },\n ],\n },\n];\nexport function attemptDiagnosticsContent(data: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return data.groups.map((group) => ({\n title: group.phase,\n items: group.items.map((diagnostic): CalloutItem => ({\n level: diagnostic.level,\n message: `${diagnostic.code}: ${diagnostic.summary}`,\n })),\n }));\n}\nexport function attemptErrorContent(data: AttemptErrorData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return [\n {\n title: data.phase,\n items: [{ level: \"error\", message: `${data.code}: ${data.message}` }],\n },\n ];\n}\nexport function attemptFixPromptContent(data: AttemptFixPromptData | null): CopyBlockContent | null {\n if (data === null)\n return null;\n return { title: { en: \"Fix prompt\", \"zh-CN\": \"修复 prompt\" }, text: data.prompt };\n}\n/** 投影已经是 `DiffFile[]`,这里只把「没有证据」与「没有改动」都收成组件的零输出。 */\nexport function attemptDiffContent(data: AttemptDiffData | null): DiffContent | null {\n if (data === null || data.files.length === 0)\n return null;\n return data.files.map((file) => ({\n ...file,\n windows: file.windows.map((window) => ({\n ...window,\n window: normalizeTurnLabel(window.window),\n })),\n }));\n}\nexport function attemptNoticesContent(error: AttemptErrorData | null, diagnostics: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n const groups = [...(attemptErrorContent(error) ?? []), ...(attemptDiagnosticsContent(diagnostics) ?? [])];\n return groups.length > 0 ? groups : null;\n}\n// ───────────────────────── Conversation 嵌入源码 ─────────────────────────\n/**\n * 只按已验证的 navigation turnId 将 Conversation 轮嵌入源码 send 行;没有\n * mapped row 的轮留在页尾。这里禁止按标签、源码顺序或数组位置补配。\n */\nexport function embedConversationInSource(source: SourceContent | null, conversation: ConversationContent | null): {\n source: SourceContent | null;\n conversation: ConversationContent | null;\n} {\n const turns = conversation?.turns ?? [];\n const turnById = new Map(turns.map((turn) => [turn.key, turn] as const));\n const mappedTurnIds = new Set<string>();\n const cloneLine = (line: SourceLine): SourceLine => {\n const lineTurns = (line.turnIds ?? []).flatMap((turnId) => {\n const turn = turnById.get(turnId);\n if (turn === undefined)\n return [];\n mappedTurnIds.add(turnId);\n return [turn];\n });\n const details = line.details === undefined && lineTurns.length === 0\n ? undefined\n : [\n ...(line.details ?? []),\n ...(lineTurns.length === 0 ? [] : [<TurnTrace data={{ turns: lineTurns }}/>]),\n ];\n return {\n ...line,\n ...(details === undefined ? {} : { details }),\n };\n };\n const cloneBlock = (block: SourceBlockContent): SourceBlockContent => ({\n ...block,\n lines: block.lines.map(cloneLine),\n });\n const embeddedSource = source === null\n ? null\n : {\n ...source,\n spine: cloneBlock(source.spine),\n detached: source.detached.map(cloneBlock),\n };\n const remainingTurns = turns.filter((turn) => !mappedTurnIds.has(turn.key));\n const remainingConversation = conversation === null || remainingTurns.length === 0\n ? null\n : { ...conversation, turns: remainingTurns };\n return { source: embeddedSource, conversation: remainingConversation };\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["content.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content 投影:compute 领域结果 → 原语 Content 形状。\n// 输入全部是当前闭合 DomainView 派生的普通值。\nimport { Text, TurnTrace } from \"../../definition/primitives.tsx\";\nimport type { ReportNode } from \"../../definition/tree.ts\";\nimport type { CalloutGroup, CalloutItem } from \"../../definition/primitives/callouts-logic.ts\";\nimport type { CopyBlockContent } from \"../../definition/primitives/copy-block.tsx\";\nimport type { CommandEvidenceContent, ConversationContent, ConversationEntry, ConversationTurn } from \"../../definition/primitives/conversation.tsx\";\nimport { ToolEvidence } from \"../../definition/primitives/tool-evidence.tsx\";\nimport type { DiffContent } from \"../../definition/primitives/diff-lines.ts\";\nimport type { SourceBlockContent, SourceContent, SourceLine, SourceLineTone, } from \"../../definition/primitives/source-view.tsx\";\nimport type { WaterfallContent, WaterfallNode } from \"../../definition/primitives/waterfall.tsx\";\nimport type { TableContent, TableContentRow } from \"../../definition/cell.ts\";\nimport type { ClosedTimingInterval } from \"../../../analysis/index.ts\";\nimport { formatDurationMs, formatPointsSuffix } from \"../../model/format.ts\";\nimport { localizedMessage } from \"../../model/locale.ts\";\nimport { normalizeTurnLabel } from \"../../../shared/turn-label.ts\";\nimport type { AttemptAssertionsData, AttemptAssertionView, AttemptCommandEvidenceData, AttemptConversationData, AttemptConversationReply, AttemptDiagnosticsData, AttemptDiffData, AttemptErrorData, AttemptFixPromptData, AttemptSourceData, AttemptSourceItemView, AttemptTimelineData, AttemptTraceData, } from \"./compute.ts\";\n// ───────────────────────── AttemptSource ─────────────────────────\n/** 该行 assertion 的判定摘要行 tone:与源码行状态同一套色。 */\nfunction assertionToneClass(assertion: AttemptAssertionView): string {\n if (assertion.outcome === \"unavailable\")\n return \"niceeval-tone-na\";\n if (assertion.outcome === \"passed\")\n return \"niceeval-tone-good\";\n return assertion.severity === \"gate\" ? \"niceeval-tone-bad\" : \"niceeval-tone-warn\";\n}\n/**\n * 一条 assertion 在展开区里的呈现:一行判定摘要,再接一段详情正文\n * (docs/feature/reports/library.md「源码行展开区里有什么」)。\n */\nfunction assertionNodes(assertion: AttemptAssertionView, key: string): ReportNode[] {\n const points = assertion.outcome !== \"unavailable\" && assertion.score !== undefined\n ? ` ${formatPointsSuffix(assertion.score.state === \"earned\" ? assertion.score.earned ?? 0 : 0)}`\n : \"\";\n const head = `${assertion.name} · ${assertion.severity} ${assertion.outcome}${points}`;\n const nodes: ReportNode[] = [\n <Text key={`${key}:head`} className={`niceeval-source-assertion ${assertionToneClass(assertion)}`}>\n {head}\n </Text>,\n ];\n if (assertion.detail.length > 0) {\n nodes.push(<Text key={`${key}:body`} className=\"niceeval-source-assertion-body\">\n {assertion.detail}\n </Text>);\n }\n return nodes;\n}\nfunction lineToneOf(assertions: readonly AttemptAssertionView[]): SourceLineTone | undefined {\n if (assertions.some((assertion) => assertion.outcome === \"failed\" && assertion.severity === \"gate\"))\n return \"gate-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"failed\"))\n return \"soft-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"unavailable\"))\n return \"unavailable\";\n if (assertions.some((assertion) => assertion.outcome === \"passed\"))\n return \"passed\";\n return undefined;\n}\ninterface SiteLineBinding {\n readonly entry: AttemptAssertionView;\n readonly role: string;\n readonly line: number;\n}\n/** sourceSites → 每行注解绑定:detail 落在起始行,tone 覆盖整个行区间。 */\nfunction siteBindingsOf(data: AttemptSourceData): ReadonlyMap<string, readonly SiteLineBinding[]> {\n const entriesById = new Map(data.entries.map((entry) => [entry.entryId, entry] as const));\n const bindings = new Map<string, SiteLineBinding[]>();\n for (const site of data.sites) {\n const entry = entriesById.get(site.entryId);\n if (entry === undefined)\n continue;\n for (let line = site.startLine; line <= site.endLine; line += 1) {\n const bucket = bindings.get(`${site.sourceItemId}:${line}`) ?? [];\n bucket.push({ entry, role: site.role, line: site.startLine });\n bindings.set(`${site.sourceItemId}:${line}`, bucket);\n }\n }\n return bindings;\n}\nfunction sourceItemBlock(item: AttemptSourceItemView, data: AttemptSourceData, bindings: ReadonlyMap<string, readonly SiteLineBinding[]>): SourceBlockContent {\n const lines: SourceLine[] = item.lines.map((text, index): SourceLine => {\n const line = index + 1;\n const bound = bindings.get(`${item.sourceItemId}:${line}`) ?? [];\n const assertions = bound.filter((binding) => binding.role !== \"score\").map((binding) => binding.entry);\n const details = bound\n .filter((binding) => binding.line === line && binding.role !== \"score\")\n .map((binding, detailIndex) => assertionNodes(binding.entry, `${item.path}:${line}:${detailIndex}`))\n .flat();\n const points = bound\n .filter((binding) => binding.role === \"score\")\n .reduce((sum, binding) => sum + (binding.entry.score?.state === \"earned\" ? binding.entry.score.earned ?? 0 : 0), 0);\n const hasPoints = bound.some((binding) => binding.role === \"score\" && binding.entry.score !== undefined);\n const tone = lineToneOf(assertions);\n const turnIds = (data.navigation?.rows ?? [])\n .filter((row) => row.source.state === \"mapped\" &&\n row.source.sourceItemId === item.sourceItemId &&\n row.source.sha256 === item.sha256 &&\n row.source.start.line === line)\n .sort((left, right) => (left.sourceOrder ?? Number.MAX_SAFE_INTEGER) - (right.sourceOrder ?? Number.MAX_SAFE_INTEGER) ||\n (left.turnId < right.turnId ? -1 : left.turnId > right.turnId ? 1 : 0))\n .map((row) => row.turnId);\n return {\n number: line,\n text,\n ...(turnIds.length > 0 ? { interaction: \"send\" as const, turnIds } : {}),\n ...(tone !== undefined ? { tone } : {}),\n ...(hasPoints ? { pill: formatPointsSuffix(points) } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n });\n return { path: item.path, lines };\n}\n/**\n * 闭合 Sources + sourceSites → SourceView Content。spine 是第一个 source item,\n * 其余是 detached;没有 sourceSite 的 attention 断言进 unmapped 区,不丢弃。\n */\nexport function projectedSourceContent(data: AttemptSourceData | null, locator?: AttemptSourceData[\"locator\"]): SourceContent | null {\n if (data === null)\n return null;\n const bindings = siteBindingsOf(data);\n const referenced = new Set(data.sites.map((site) => site.entryId));\n const unmapped: ReportNode[] = data.entries\n .filter((entry) => !referenced.has(entry.entryId))\n .flatMap((entry, index) => assertionNodes(entry, `unmapped:${index}`));\n const spine = sourceItemBlock(data.items[0]!, data, bindings);\n const detached = data.items.slice(1).map((item) => sourceItemBlock(item, data, bindings));\n return {\n spine,\n detached,\n ...(unmapped.length > 0 ? { unmapped } : {}),\n ...(locator !== undefined ? { locator } : {}),\n };\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\nexport function attemptAssertionsContent(data: AttemptAssertionsData | null): TableContent | null {\n if (data === null || (data.attention.length === 0 && data.passedGroups.length === 0))\n return null;\n const rows: TableContentRow[] = [];\n for (const assertion of data.attention) {\n rows.push({\n key: assertion.entryId,\n cells: {\n name: { kind: \"text\", text: assertion.name },\n severity: { kind: \"text\", text: assertion.severity },\n outcome: { kind: \"verdict\", verdict: assertion.outcome === \"unavailable\" ? \"skipped\" : assertion.outcome },\n detail: assertion.detail.length > 0\n ? { kind: \"text\", text: assertion.detail }\n : { kind: \"notApplicable\" },\n },\n });\n }\n return {\n columns: [\n { key: \"name\", header: localizedMessage(\"attemptAssertions.name\") },\n { key: \"severity\", header: localizedMessage(\"attemptAssertions.severity\") },\n { key: \"outcome\", header: localizedMessage(\"attemptAssertions.outcome\") },\n { key: \"detail\", header: localizedMessage(\"attemptAssertions.detail\") },\n ],\n rows,\n };\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\nfunction timingTree(intervals: readonly ClosedTimingInterval[]): readonly WaterfallNode[] {\n const children = new Map<string | null, ClosedTimingInterval[]>();\n for (const interval of intervals) {\n const siblings = children.get(interval.parentIntervalId) ?? [];\n siblings.push(interval);\n children.set(interval.parentIntervalId, siblings);\n }\n const build = (parent: string | null): WaterfallNode[] => (children.get(parent) ?? [])\n .sort(compareIntervals)\n .map((interval) => {\n const phase = interval.phase;\n return {\n key: interval.intervalId,\n label: interval.label,\n kind: phase,\n startOffsetMs: interval.startOffsetMs,\n durationMs: interval.durationMs,\n ...(interval.outcome === \"failed\" || interval.outcome === \"interrupted\" ? { failed: true as const } : {}),\n // 主干默认展开:直接看到 eval.run 与 agent.send 内部活动。\n ...(phase === \"eval.run\" || phase === \"agent.send\" ? { open: true as const } : {}),\n ...(build(interval.intervalId).length > 0 ? { children: build(interval.intervalId) } : {}),\n };\n });\n return build(null);\n}\nfunction compareIntervals(left: ClosedTimingInterval, right: ClosedTimingInterval): number {\n return left.startOffsetMs - right.startOffsetMs || compareText(left.intervalId, right.intervalId);\n}\nfunction timingSpan(intervals: readonly ClosedTimingInterval[]): number | null {\n if (intervals.length === 0)\n return null;\n const start = Math.min(...intervals.map((interval) => interval.startOffsetMs));\n const end = Math.max(...intervals.map((interval) => interval.startOffsetMs + interval.durationMs));\n return Math.max(0, end - start);\n}\n/** 执行时间树:root 区间是 phase 主链,children 是采集侧层级。 */\nexport function attemptTimelineContent(data: AttemptTimelineData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\nexport function attemptTraceContent(data: AttemptTraceData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\n/** 工具出入参等结构化值:JSON 化后交原语收口成单行预览(Conversation 的 preview 契约)。 */\nfunction jsonPreview(value: string | undefined): string {\n return value === undefined ? \"\" : value;\n}\nfunction conversationEntryOf(reply: AttemptConversationReply): ConversationEntry {\n switch (reply.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n return { kind: reply.kind, preview: reply.text, failed: reply.kind === \"error\" };\n case \"context\":\n return { kind: \"context\", preview: reply.text };\n case \"tool\": {\n const finished = reply.outputSummary !== undefined;\n const raw = finished ? reply.outputSummary : reply.inputSummary;\n return {\n kind: \"tool\",\n preview: finished\n ? `${reply.name} result`\n : `${reply.name}(${jsonPreview(reply.inputSummary)})`,\n raw,\n callId: reply.callId,\n callPhase: finished ? \"finished\" : \"started\",\n ...(reply.outcome === undefined ? {} : { callOutcome: reply.outcome }),\n ...(reply.failed === true ? { failed: true } : {}),\n detail: (<ToolEvidence content={{\n phase: finished ? \"finished\" : \"started\",\n tool: reply.name,\n callId: reply.callId,\n inputSummary: reply.inputSummary,\n ...(reply.outputSummary === undefined ? {} : { outputSummary: reply.outputSummary }),\n ...(reply.outcome === undefined ? {} : { outcome: reply.outcome }),\n }}/>),\n };\n }\n case \"subagent\":\n return {\n kind: \"subagent\",\n preview: reply.name,\n ...(reply.failed === true ? { failed: true } : {}),\n ...(reply.summary ? { detail: <Text>{reply.summary}</Text> } : {}),\n };\n case \"skill\":\n return { kind: \"skill\", preview: reply.text ? `${reply.skill}: ${reply.text}` : reply.skill };\n case \"input\":\n return {\n kind: \"input\",\n preview: `${reply.request.state} · ${reply.request.promptSummary}`,\n ...(reply.request.responseSummary !== null\n ? { detail: <Text>{reply.request.responseSummary}</Text> }\n : {}),\n };\n case \"compaction\":\n return { kind: \"compaction\", preview: reply.text || \"context compacted\" };\n }\n}\nfunction turnVerdictOf(outcome: AttemptConversationData[\"rounds\"][number][\"outcome\"]): ConversationTurn[\"verdict\"] {\n switch (outcome) {\n case \"completed\":\n return undefined;\n case \"failed\":\n return \"failed\";\n case \"cancelled\":\n return \"skipped\";\n case \"interrupted\":\n return \"errored\";\n }\n}\nexport function attemptConversationContent(data: AttemptConversationData | null): ConversationContent | null {\n if (data === null || data.rounds.length === 0)\n return null;\n const turns: ConversationTurn[] = data.rounds.map((round) => ({\n key: round.turnId,\n label: `Turn ${round.sequence}`,\n ...(round.durationMs === undefined ? {} : { durationMs: round.durationMs }),\n verdict: turnVerdictOf(round.outcome),\n entries: round.replies.map(conversationEntryOf),\n }));\n return { turns, locator: data.locator };\n}\n// ───────────────────────── AttemptCommandEvidence ─────────────────────────\nexport function attemptCommandEvidenceContent(data: AttemptCommandEvidenceData | null): CommandEvidenceContent | null {\n if (data === null || data.commands.length === 0)\n return null;\n return { locator: data.locator, commands: data.commands };\n}\n// ───────────────────────── AttemptDiagnostics / AttemptError ─────────────────────────\nexport const executionEvidenceUnavailableCallouts: readonly CalloutGroup[] = [\n {\n title: \"Execution evidence unavailable\",\n items: [\n {\n level: \"warning\",\n message: \"The events artifact is missing or was not published.\",\n },\n ],\n },\n];\nexport function attemptDiagnosticsContent(data: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return data.groups.map((group) => ({\n title: group.phase,\n items: group.items.map((diagnostic): CalloutItem => ({\n level: diagnostic.level,\n message: `${diagnostic.code}: ${diagnostic.summary}`,\n })),\n }));\n}\nexport function attemptErrorContent(data: AttemptErrorData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return [\n {\n title: data.phase,\n items: [{ level: \"error\", message: `${data.code}: ${data.message}` }],\n },\n ];\n}\nexport function attemptFixPromptContent(data: AttemptFixPromptData | null): CopyBlockContent | null {\n if (data === null)\n return null;\n return { title: { en: \"Fix prompt\", \"zh-CN\": \"修复 prompt\" }, text: data.prompt };\n}\n/** 投影已经是 `DiffFile[]`,这里只把「没有证据」与「没有改动」都收成组件的零输出。 */\nexport function attemptDiffContent(data: AttemptDiffData | null): DiffContent | null {\n if (data === null || data.files.length === 0)\n return null;\n return data.files.map((file) => ({\n ...file,\n windows: file.windows.map((window) => ({\n ...window,\n window: normalizeTurnLabel(window.window),\n })),\n }));\n}\nexport function attemptNoticesContent(error: AttemptErrorData | null, diagnostics: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n const groups = [...(attemptErrorContent(error) ?? []), ...(attemptDiagnosticsContent(diagnostics) ?? [])];\n return groups.length > 0 ? groups : null;\n}\n// ───────────────────────── Conversation 嵌入源码 ─────────────────────────\n/**\n * 只按已验证的 navigation turnId 将 Conversation 轮嵌入源码 send 行;没有\n * mapped row 的轮留在页尾。这里禁止按标签、源码顺序或数组位置补配。\n */\nexport function embedConversationInSource(source: SourceContent | null, conversation: ConversationContent | null): {\n source: SourceContent | null;\n conversation: ConversationContent | null;\n} {\n const turns = conversation?.turns ?? [];\n const turnById = new Map(turns.map((turn) => [turn.key, turn] as const));\n const mappedTurnIds = new Set<string>();\n const cloneLine = (line: SourceLine): SourceLine => {\n const lineTurns = (line.turnIds ?? []).flatMap((turnId) => {\n const turn = turnById.get(turnId);\n if (turn === undefined)\n return [];\n mappedTurnIds.add(turnId);\n return [turn];\n });\n const details = line.details === undefined && lineTurns.length === 0\n ? undefined\n : [\n ...(line.details ?? []),\n ...(lineTurns.length === 0 ? [] : [<TurnTrace data={{ turns: lineTurns }}/>]),\n ];\n return {\n ...line,\n ...(details === undefined ? {} : { details }),\n };\n };\n const cloneBlock = (block: SourceBlockContent): SourceBlockContent => ({\n ...block,\n lines: block.lines.map(cloneLine),\n });\n const embeddedSource = source === null\n ? null\n : {\n ...source,\n spine: cloneBlock(source.spine),\n detached: source.detached.map(cloneBlock),\n };\n const remainingTurns = turns.filter((turn) => !mappedTurnIds.has(turn.key));\n const remainingConversation = conversation === null || remainingTurns.length === 0\n ? null\n : { ...conversation, turns: remainingTurns };\n return { source: embeddedSource, conversation: remainingConversation };\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
@@ -50,8 +50,9 @@ function assertionViewProblem(value, path) {
|
|
|
50
50
|
return `"${path}.entryId" must be a string`;
|
|
51
51
|
if (typeof value.name !== "string")
|
|
52
52
|
return `"${path}.name" must be a string`;
|
|
53
|
-
if (value.severity !== "gate" && value.severity !== "soft")
|
|
54
|
-
return `"${path}.severity" must be "gate"
|
|
53
|
+
if (value.severity !== "gate" && value.severity !== "recorded" && value.severity !== "soft") {
|
|
54
|
+
return `"${path}.severity" must be "gate" | "recorded" | "soft"`;
|
|
55
|
+
}
|
|
55
56
|
if (value.outcome !== "passed" && value.outcome !== "failed" && value.outcome !== "unavailable") {
|
|
56
57
|
return `"${path}.outcome" must be "passed" | "failed" | "unavailable"`;
|
|
57
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["validate.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content / Data 形状校验。\n// 数据契约照 docs/feature/reports/library.md;这些不是持久化\n// 格式,没有 format / schemaVersion 信封,兼容性跟随 npm 版本(组件消费 data 时校验\n// 结构,不符按完整用户反馈报错并提示版本漂移)。\nimport { arrayProblem, isObject, type Validator } from \"../../definition/primitives/shared.ts\";\n// ───────────────────────── 跨叶子复用的字段路径校验 ─────────────────────────\n/** AttemptIdentityView(compute.ts):locator 派生自的不可变身份元组。 */\nfunction attemptIdentityProblem(value: unknown, path: string): string | null {\n if (!isObject(value)) {\n return `\"${path}\" must be an AttemptIdentityView { runId, evalId, attempt }`;\n }\n if (typeof value.runId !== \"string\")\n return `\"${path}.runId\" must be a string`;\n if (typeof value.evalId !== \"string\")\n return `\"${path}.evalId\" must be a string`;\n if (typeof value.attempt !== \"number\")\n return `\"${path}.attempt\" must be a number`;\n return null;\n}\n/** AttemptCapabilitiesView(compute.ts):四个证据切面开关。 */\nfunction capabilitiesProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an object { source, execution, timing, diff }`;\n for (const key of [\"source\", \"execution\", \"timing\", \"diff\"] as const) {\n if (typeof value[key] !== \"boolean\")\n return `\"${path}.${key}\" must be a boolean`;\n }\n return null;\n}\n/** AttemptAssertionView(compute.ts):sealed 断言 entry 的展示投影。 */\nfunction assertionViewProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptAssertionView object`;\n if (typeof value.entryId !== \"string\")\n return `\"${path}.entryId\" must be a string`;\n if (typeof value.name !== \"string\")\n return `\"${path}.name\" must be a string`;\n if (value.severity !== \"gate\" && value.severity !== \"soft\")\n return `\"${path}.severity\" must be \"gate\" or \"soft\"`;\n if (value.outcome !== \"passed\" && value.outcome !== \"failed\" && value.outcome !== \"unavailable\") {\n return `\"${path}.outcome\" must be \"passed\" | \"failed\" | \"unavailable\"`;\n }\n if (typeof value.detail !== \"string\")\n return `\"${path}.detail\" must be a string`;\n if (!Array.isArray(value.groupPath) || !value.groupPath.every((segment: unknown) => typeof segment === \"string\")) {\n return `\"${path}.groupPath\" must be an array of strings`;\n }\n if (value.score !== undefined) {\n if (!isObject(value.score))\n return `\"${path}.score\" must be an AttemptScoreView object`;\n if (value.score.state !== \"earned\" && value.score.state !== \"unavailable\") {\n return `\"${path}.score.state\" must be \"earned\" | \"unavailable\"`;\n }\n if (typeof value.score.earned !== \"number\")\n return `\"${path}.score.earned\" must be a number`;\n if (typeof value.score.points !== \"number\")\n return `\"${path}.score.points\" must be a number`;\n }\n return null;\n}\n/** ClosedTraceCollection(src/analysis/domain-view.ts):collection 状态与限制清单。 */\nfunction traceCollectionProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be a ClosedTraceCollection object`;\n if (value.state !== \"complete\" && value.state !== \"partial\")\n return `\"${path}.state\" must be \"complete\" | \"partial\"`;\n if (!Array.isArray(value.limitations))\n return `\"${path}.limitations\" must be an array`;\n return null;\n}\n// ───────────────────────── AttemptSummary(恒非空) ─────────────────────────\nexport function validateSummaryData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (typeof data.experimentId !== \"string\")\n return 'missing \"experimentId\" (string)';\n const identityProblem = attemptIdentityProblem(data.identity, \"identity\");\n if (identityProblem !== null)\n return identityProblem;\n const verdict = data.verdict;\n if (verdict !== \"passed\" && verdict !== \"failed\" && verdict !== \"errored\" && verdict !== \"skipped\" && verdict !== \"unknown\") {\n return '\"verdict\" must be passed | failed | errored | skipped | unknown';\n }\n if (data.startedAt !== undefined && typeof data.startedAt !== \"string\")\n return '\"startedAt\" must be a string';\n if (!(data.durationMs === null || typeof data.durationMs === \"number\"))\n return '\"durationMs\" must be a number or null';\n if (data.observedCostUSD !== undefined && typeof data.observedCostUSD !== \"number\") {\n return '\"observedCostUSD\" must be a number';\n }\n if (data.totalScore !== undefined && typeof data.totalScore !== \"number\")\n return '\"totalScore\" must be a number';\n return capabilitiesProblem(data.capabilities, \"capabilities\");\n}\n// ───────────────────────── AttemptError ─────────────────────────\nexport function validateErrorData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.code !== \"string\")\n return '\"code\" must be a string';\n if (typeof data.message !== \"string\")\n return '\"message\" must be a string';\n if (typeof data.phase !== \"string\")\n return '\"phase\" must be a string';\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (data.commandEvidenceHint !== undefined && data.commandEvidenceHint !== true) {\n return '\"commandEvidenceHint\" must be true or omitted';\n }\n return null;\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\n/** `{ group, items: AttemptAssertionView[] }[]` 分组结构。 */\nfunction assertionGroupsProblem(value: unknown, path: string): string | null {\n return arrayProblem(value, path, (group, groupPath) => {\n if (!isObject(group) || typeof group.group !== \"string\") {\n return `\"${groupPath}\" must be an object with a string \"group\"`;\n }\n return arrayProblem(group.items, `${groupPath}.items`, assertionViewProblem);\n });\n}\n/** AttemptAssertionsData 的得分点挣满计数。 */\nfunction scorePointsEarnedProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an object { earned, total }`;\n if (typeof value.earned !== \"number\")\n return `\"${path}.earned\" must be a number`;\n if (typeof value.total !== \"number\")\n return `\"${path}.total\" must be a number`;\n return null;\n}\nexport function validateAssertionsData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n const attentionProblem = arrayProblem(data.attention, \"attention\", assertionViewProblem);\n if (attentionProblem !== null)\n return attentionProblem;\n const passedGroupsProblem = assertionGroupsProblem(data.passedGroups, \"passedGroups\");\n if (passedGroupsProblem !== null)\n return passedGroupsProblem;\n if (data.scorePointsEarned !== undefined) {\n const problem = scorePointsEarnedProblem(data.scorePointsEarned, \"scorePointsEarned\");\n if (problem !== null)\n return problem;\n }\n if (data.totalScore !== undefined && typeof data.totalScore !== \"number\")\n return '\"totalScore\" must be a number';\n if (data.evaluationKind !== \"pass\" && data.evaluationKind !== \"points\") {\n return '\"evaluationKind\" must be \"pass\" | \"points\"';\n }\n return null;\n}\n// ───────────────────────── AttemptFixPrompt ─────────────────────────\nexport function validateFixPromptData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.prompt !== \"string\")\n return 'missing \"prompt\" (string)';\n return null;\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\n/** ClosedTimingInterval(src/analysis/domain-view.ts):闭合 timing 区间。 */\nfunction timingIntervalProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be a ClosedTimingInterval object`;\n if (typeof value.intervalId !== \"string\")\n return `\"${path}.intervalId\" must be a string`;\n if (value.parentIntervalId !== null && typeof value.parentIntervalId !== \"string\") {\n return `\"${path}.parentIntervalId\" must be a string or null`;\n }\n if (typeof value.phase !== \"string\")\n return `\"${path}.phase\" must be a string`;\n if (typeof value.label !== \"string\")\n return `\"${path}.label\" must be a string`;\n if (typeof value.startOffsetMs !== \"number\")\n return `\"${path}.startOffsetMs\" must be a number`;\n if (typeof value.durationMs !== \"number\")\n return `\"${path}.durationMs\" must be a number`;\n if (typeof value.outcome !== \"string\")\n return `\"${path}.outcome\" must be a string`;\n return null;\n}\nfunction validateTimelineShape(data: unknown, kind: string): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.intervals, kind, timingIntervalProblem);\n}\nexport function validateTimelineData(data: unknown): string | null {\n return validateTimelineShape(data, \"intervals\");\n}\nexport function validateTraceData(data: unknown): string | null {\n return validateTimelineShape(data, \"intervals\");\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\nconst CONVERSATION_REPLY_KINDS = [\n \"assistant\",\n \"user\",\n \"thinking\",\n \"error\",\n \"tool\",\n \"skill\",\n \"context\",\n \"subagent\",\n \"input\",\n \"compaction\",\n];\n/** AttemptConversationReply(compute.ts):按 `kind` 判别的联合,每支自己的必填字段各自校验。 */\nfunction conversationReplyProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptConversationReply object`;\n switch (value.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n case \"compaction\":\n if (typeof value.text !== \"string\")\n return `\"${path}.text\" must be a string`;\n return null;\n case \"context\":\n if (typeof value.text !== \"string\")\n return `\"${path}.text\" must be a string`;\n return null;\n case \"tool\":\n if (typeof value.callId !== \"string\")\n return `\"${path}.callId\" must be a string`;\n if (typeof value.name !== \"string\")\n return `\"${path}.name\" must be a string`;\n if (typeof value.inputSummary !== \"string\")\n return `\"${path}.inputSummary\" must be a string`;\n if (value.outputSummary !== undefined && typeof value.outputSummary !== \"string\") {\n return `\"${path}.outputSummary\" must be a string`;\n }\n if (value.failed !== undefined && typeof value.failed !== \"boolean\")\n return `\"${path}.failed\" must be a boolean`;\n return null;\n case \"skill\":\n if (typeof value.skill !== \"string\")\n return `\"${path}.skill\" must be a string`;\n if (value.text !== undefined && typeof value.text !== \"string\")\n return `\"${path}.text\" must be a string`;\n return null;\n case \"subagent\":\n if (typeof value.name !== \"string\")\n return `\"${path}.name\" must be a string`;\n if (typeof value.summary !== \"string\")\n return `\"${path}.summary\" must be a string`;\n return null;\n case \"input\":\n if (!isObject(value.request))\n return `\"${path}.request\" must be an AttemptInputRequestView object`;\n if (typeof value.request.promptSummary !== \"string\")\n return `\"${path}.request.promptSummary\" must be a string`;\n return null;\n default:\n return `\"${path}.kind\" must be one of ${JSON.stringify(CONVERSATION_REPLY_KINDS)}`;\n }\n}\nfunction conversationRoundProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptConversationRound object`;\n if (typeof value.turnId !== \"string\")\n return `\"${path}.turnId\" must be a string`;\n if (typeof value.sequence !== \"number\")\n return `\"${path}.sequence\" must be a number`;\n if (value.outcome !== \"completed\" && value.outcome !== \"failed\" &&\n value.outcome !== \"cancelled\" && value.outcome !== \"interrupted\") {\n return `\"${path}.outcome\" must be completed | failed | cancelled | interrupted`;\n }\n return arrayProblem(value.replies, `${path}.replies`, conversationReplyProblem);\n}\nexport function validateConversationData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.rounds, \"rounds\", conversationRoundProblem);\n}\n/** AttemptCommandCard(compute.ts):闭合命令证据的展示卡。 */\nfunction commandCardProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptCommandCard object`;\n if (typeof value.key !== \"string\")\n return `\"${path}.key\" must be a string`;\n if (typeof value.timingNodeId !== \"string\")\n return `\"${path}.timingNodeId\" must be a string`;\n if (typeof value.phase !== \"string\")\n return `\"${path}.phase\" must be a string`;\n if (typeof value.display !== \"string\")\n return `\"${path}.display\" must be a string`;\n if (typeof value.exitCode !== \"number\")\n return `\"${path}.exitCode\" must be a number`;\n if (value.classification !== \"succeeded\" && value.classification !== \"observed\" && value.classification !== \"failed\") {\n return `\"${path}.classification\" must be succeeded | observed | failed`;\n }\n if (value.stdout !== undefined && typeof value.stdout !== \"string\")\n return `\"${path}.stdout\" must be a string`;\n if (value.stderr !== undefined && typeof value.stderr !== \"string\")\n return `\"${path}.stderr\" must be a string`;\n return null;\n}\nexport function validateCommandEvidenceData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.commands, \"commands\", commandCardProblem);\n}\n// ───────────────────────── AttemptDiagnostics ─────────────────────────\nfunction diagnosticViewProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptDiagnosticView object`;\n if (typeof value.code !== \"string\")\n return `\"${path}.code\" must be a string`;\n if (value.kind !== \"advisory\" && value.kind !== \"execution-error\") {\n return `\"${path}.kind\" must be \"advisory\" | \"execution-error\"`;\n }\n if (typeof value.phase !== \"string\")\n return `\"${path}.phase\" must be a string`;\n if (typeof value.summary !== \"string\")\n return `\"${path}.summary\" must be a string`;\n if (value.level !== \"warning\" && value.level !== \"error\")\n return `\"${path}.level\" must be \"warning\" | \"error\"`;\n return null;\n}\nexport function validateDiagnosticsData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.groups, \"groups\", (group, path) => {\n if (!isObject(group) || typeof group.phase !== \"string\") {\n return `\"${path}\" must be an object with a string \"phase\"`;\n }\n return arrayProblem(group.items, `${path}.items`, diagnosticViewProblem);\n });\n}\n// ───────────────────────── UsageTable ─────────────────────────\nexport function validateUsageData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (typeof data.experimentId !== \"string\")\n return 'missing \"experimentId\" (string)';\n if (typeof data.evalId !== \"string\")\n return 'missing \"evalId\" (string)';\n if (typeof data.attempt !== \"number\")\n return '\"attempt\" must be a number';\n const verdict = data.verdict;\n if (verdict !== \"passed\" && verdict !== \"failed\" && verdict !== \"errored\" && verdict !== \"skipped\" && verdict !== \"unknown\") {\n return '\"verdict\" must be passed | failed | errored | skipped | unknown';\n }\n if (data.turns !== undefined && typeof data.turns !== \"number\")\n return '\"turns\" must be a number';\n if (data.toolCalls !== undefined && typeof data.toolCalls !== \"number\")\n return '\"toolCalls\" must be a number';\n if (data.observations !== undefined) {\n const problem = arrayProblem(data.observations, \"observations\", (observation, path) => {\n if (!isObject(observation) || typeof observation.provider !== \"string\" || typeof observation.kind !== \"string\") {\n return `\"${path}\" must be a ClosedUsageObservation object`;\n }\n return null;\n });\n if (problem !== null)\n return problem;\n }\n if (data.observedCostUSD !== undefined && typeof data.observedCostUSD !== \"number\") {\n return '\"observedCostUSD\" must be a number';\n }\n return null;\n}\n// ───────────────────────── AttemptDiff ─────────────────────────\nconst DIFF_FILE_CHANGE = [\"added\", \"modified\", \"deleted\"];\n/** DiffFile(src/report/definition/primitives/diff-lines.ts):净无变化的文件不进这份列表。 */\nfunction diffFileEntryProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be a DiffFile { path, change, added, removed, windows }`;\n if (typeof value.path !== \"string\")\n return `\"${path}.path\" must be a string`;\n if (typeof value.change !== \"string\" || !DIFF_FILE_CHANGE.includes(value.change)) {\n return `\"${path}.change\" must be one of ${JSON.stringify(DIFF_FILE_CHANGE)}`;\n }\n if (typeof value.added !== \"number\" || typeof value.removed !== \"number\") {\n return `\"${path}.added\" and \"${path}.removed\" must be numbers`;\n }\n if (!Array.isArray(value.windows))\n return `\"${path}.windows\" must be an array`;\n for (let i = 0; i < value.windows.length; i += 1) {\n const window = value.windows[i];\n if (!isObject(window) || typeof window.window !== \"string\") {\n return `\"${path}.windows[${i}].window\" must be a string`;\n }\n if (window.patch !== undefined && typeof window.patch !== \"string\") {\n return `\"${path}.windows[${i}].patch\" must be a string`;\n }\n }\n return null;\n}\nexport function validateDiffData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (!isObject(data.collection) || typeof data.collection.state !== \"string\") {\n return '\"collection\" must be a ClosedFileChangesCollection object';\n }\n return arrayProblem(data.files, \"files\", diffFileEntryProblem);\n}\n// ───────────────────────── AttemptSource ─────────────────────────\nexport function validateSourceData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const itemsProblem = arrayProblem(data.items, \"items\", (item, path) => {\n if (!isObject(item))\n return `\"${path}\" must be an AttemptSourceItemView object`;\n if (typeof item.sourceItemId !== \"string\")\n return `\"${path}.sourceItemId\" must be a string`;\n if (typeof item.path !== \"string\")\n return `\"${path}.path\" must be a string`;\n if (typeof item.sha256 !== \"string\")\n return `\"${path}.sha256\" must be a string`;\n if (!Array.isArray(item.lines) || !item.lines.every((line: unknown) => typeof line === \"string\")) {\n return `\"${path}.lines\" must be an array of strings`;\n }\n if (item.unavailable !== undefined && item.unavailable !== \"unavailable\" && item.unavailable !== \"binary\") {\n return `\"${path}.unavailable\" must be \"unavailable\" | \"binary\"`;\n }\n return null;\n });\n if (itemsProblem !== null)\n return itemsProblem;\n const sitesProblem = arrayProblem(data.sites, \"sites\", (site, path) => {\n if (!isObject(site))\n return `\"${path}\" must be an AttemptSourceSiteView object`;\n if (typeof site.entryId !== \"string\")\n return `\"${path}.entryId\" must be a string`;\n if (typeof site.role !== \"string\")\n return `\"${path}.role\" must be a string`;\n if (typeof site.sourceItemId !== \"string\")\n return `\"${path}.sourceItemId\" must be a string`;\n if (typeof site.startLine !== \"number\")\n return `\"${path}.startLine\" must be a number`;\n if (typeof site.endLine !== \"number\")\n return `\"${path}.endLine\" must be a number`;\n return null;\n });\n if (sitesProblem !== null)\n return sitesProblem;\n return arrayProblem(data.entries, \"entries\", assertionViewProblem);\n}\nexport const attemptDetailValidators: Readonly<Record<string, Validator>> = Object.freeze({\n summary: validateSummaryData,\n error: validateErrorData,\n assertions: validateAssertionsData,\n fixPrompt: validateFixPromptData,\n timeline: validateTimelineData,\n trace: validateTraceData,\n conversation: validateConversationData,\n commandEvidence: validateCommandEvidenceData,\n diagnostics: validateDiagnosticsData,\n usage: validateUsageData,\n diff: validateDiffData,\n source: validateSourceData,\n});\n"]}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["validate.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content / Data 形状校验。\n// 数据契约照 docs/feature/reports/library.md;这些不是持久化\n// 格式,没有 format / schemaVersion 信封,兼容性跟随 npm 版本(组件消费 data 时校验\n// 结构,不符按完整用户反馈报错并提示版本漂移)。\nimport { arrayProblem, isObject, type Validator } from \"../../definition/primitives/shared.ts\";\n// ───────────────────────── 跨叶子复用的字段路径校验 ─────────────────────────\n/** AttemptIdentityView(compute.ts):locator 派生自的不可变身份元组。 */\nfunction attemptIdentityProblem(value: unknown, path: string): string | null {\n if (!isObject(value)) {\n return `\"${path}\" must be an AttemptIdentityView { runId, evalId, attempt }`;\n }\n if (typeof value.runId !== \"string\")\n return `\"${path}.runId\" must be a string`;\n if (typeof value.evalId !== \"string\")\n return `\"${path}.evalId\" must be a string`;\n if (typeof value.attempt !== \"number\")\n return `\"${path}.attempt\" must be a number`;\n return null;\n}\n/** AttemptCapabilitiesView(compute.ts):四个证据切面开关。 */\nfunction capabilitiesProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an object { source, execution, timing, diff }`;\n for (const key of [\"source\", \"execution\", \"timing\", \"diff\"] as const) {\n if (typeof value[key] !== \"boolean\")\n return `\"${path}.${key}\" must be a boolean`;\n }\n return null;\n}\n/** AttemptAssertionView(compute.ts):sealed 断言 entry 的展示投影。 */\nfunction assertionViewProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptAssertionView object`;\n if (typeof value.entryId !== \"string\")\n return `\"${path}.entryId\" must be a string`;\n if (typeof value.name !== \"string\")\n return `\"${path}.name\" must be a string`;\n if (value.severity !== \"gate\" && value.severity !== \"recorded\" && value.severity !== \"soft\") {\n return `\"${path}.severity\" must be \"gate\" | \"recorded\" | \"soft\"`;\n }\n if (value.outcome !== \"passed\" && value.outcome !== \"failed\" && value.outcome !== \"unavailable\") {\n return `\"${path}.outcome\" must be \"passed\" | \"failed\" | \"unavailable\"`;\n }\n if (typeof value.detail !== \"string\")\n return `\"${path}.detail\" must be a string`;\n if (!Array.isArray(value.groupPath) || !value.groupPath.every((segment: unknown) => typeof segment === \"string\")) {\n return `\"${path}.groupPath\" must be an array of strings`;\n }\n if (value.score !== undefined) {\n if (!isObject(value.score))\n return `\"${path}.score\" must be an AttemptScoreView object`;\n if (value.score.state !== \"earned\" && value.score.state !== \"unavailable\") {\n return `\"${path}.score.state\" must be \"earned\" | \"unavailable\"`;\n }\n if (typeof value.score.earned !== \"number\")\n return `\"${path}.score.earned\" must be a number`;\n if (typeof value.score.points !== \"number\")\n return `\"${path}.score.points\" must be a number`;\n }\n return null;\n}\n/** ClosedTraceCollection(src/analysis/domain-view.ts):collection 状态与限制清单。 */\nfunction traceCollectionProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be a ClosedTraceCollection object`;\n if (value.state !== \"complete\" && value.state !== \"partial\")\n return `\"${path}.state\" must be \"complete\" | \"partial\"`;\n if (!Array.isArray(value.limitations))\n return `\"${path}.limitations\" must be an array`;\n return null;\n}\n// ───────────────────────── AttemptSummary(恒非空) ─────────────────────────\nexport function validateSummaryData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (typeof data.experimentId !== \"string\")\n return 'missing \"experimentId\" (string)';\n const identityProblem = attemptIdentityProblem(data.identity, \"identity\");\n if (identityProblem !== null)\n return identityProblem;\n const verdict = data.verdict;\n if (verdict !== \"passed\" && verdict !== \"failed\" && verdict !== \"errored\" && verdict !== \"skipped\" && verdict !== \"unknown\") {\n return '\"verdict\" must be passed | failed | errored | skipped | unknown';\n }\n if (data.startedAt !== undefined && typeof data.startedAt !== \"string\")\n return '\"startedAt\" must be a string';\n if (!(data.durationMs === null || typeof data.durationMs === \"number\"))\n return '\"durationMs\" must be a number or null';\n if (data.observedCostUSD !== undefined && typeof data.observedCostUSD !== \"number\") {\n return '\"observedCostUSD\" must be a number';\n }\n if (data.totalScore !== undefined && typeof data.totalScore !== \"number\")\n return '\"totalScore\" must be a number';\n return capabilitiesProblem(data.capabilities, \"capabilities\");\n}\n// ───────────────────────── AttemptError ─────────────────────────\nexport function validateErrorData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.code !== \"string\")\n return '\"code\" must be a string';\n if (typeof data.message !== \"string\")\n return '\"message\" must be a string';\n if (typeof data.phase !== \"string\")\n return '\"phase\" must be a string';\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (data.commandEvidenceHint !== undefined && data.commandEvidenceHint !== true) {\n return '\"commandEvidenceHint\" must be true or omitted';\n }\n return null;\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\n/** `{ group, items: AttemptAssertionView[] }[]` 分组结构。 */\nfunction assertionGroupsProblem(value: unknown, path: string): string | null {\n return arrayProblem(value, path, (group, groupPath) => {\n if (!isObject(group) || typeof group.group !== \"string\") {\n return `\"${groupPath}\" must be an object with a string \"group\"`;\n }\n return arrayProblem(group.items, `${groupPath}.items`, assertionViewProblem);\n });\n}\n/** AttemptAssertionsData 的得分点挣满计数。 */\nfunction scorePointsEarnedProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an object { earned, total }`;\n if (typeof value.earned !== \"number\")\n return `\"${path}.earned\" must be a number`;\n if (typeof value.total !== \"number\")\n return `\"${path}.total\" must be a number`;\n return null;\n}\nexport function validateAssertionsData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n const attentionProblem = arrayProblem(data.attention, \"attention\", assertionViewProblem);\n if (attentionProblem !== null)\n return attentionProblem;\n const passedGroupsProblem = assertionGroupsProblem(data.passedGroups, \"passedGroups\");\n if (passedGroupsProblem !== null)\n return passedGroupsProblem;\n if (data.scorePointsEarned !== undefined) {\n const problem = scorePointsEarnedProblem(data.scorePointsEarned, \"scorePointsEarned\");\n if (problem !== null)\n return problem;\n }\n if (data.totalScore !== undefined && typeof data.totalScore !== \"number\")\n return '\"totalScore\" must be a number';\n if (data.evaluationKind !== \"pass\" && data.evaluationKind !== \"points\") {\n return '\"evaluationKind\" must be \"pass\" | \"points\"';\n }\n return null;\n}\n// ───────────────────────── AttemptFixPrompt ─────────────────────────\nexport function validateFixPromptData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.prompt !== \"string\")\n return 'missing \"prompt\" (string)';\n return null;\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\n/** ClosedTimingInterval(src/analysis/domain-view.ts):闭合 timing 区间。 */\nfunction timingIntervalProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be a ClosedTimingInterval object`;\n if (typeof value.intervalId !== \"string\")\n return `\"${path}.intervalId\" must be a string`;\n if (value.parentIntervalId !== null && typeof value.parentIntervalId !== \"string\") {\n return `\"${path}.parentIntervalId\" must be a string or null`;\n }\n if (typeof value.phase !== \"string\")\n return `\"${path}.phase\" must be a string`;\n if (typeof value.label !== \"string\")\n return `\"${path}.label\" must be a string`;\n if (typeof value.startOffsetMs !== \"number\")\n return `\"${path}.startOffsetMs\" must be a number`;\n if (typeof value.durationMs !== \"number\")\n return `\"${path}.durationMs\" must be a number`;\n if (typeof value.outcome !== \"string\")\n return `\"${path}.outcome\" must be a string`;\n return null;\n}\nfunction validateTimelineShape(data: unknown, kind: string): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.intervals, kind, timingIntervalProblem);\n}\nexport function validateTimelineData(data: unknown): string | null {\n return validateTimelineShape(data, \"intervals\");\n}\nexport function validateTraceData(data: unknown): string | null {\n return validateTimelineShape(data, \"intervals\");\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\nconst CONVERSATION_REPLY_KINDS = [\n \"assistant\",\n \"user\",\n \"thinking\",\n \"error\",\n \"tool\",\n \"skill\",\n \"context\",\n \"subagent\",\n \"input\",\n \"compaction\",\n];\n/** AttemptConversationReply(compute.ts):按 `kind` 判别的联合,每支自己的必填字段各自校验。 */\nfunction conversationReplyProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptConversationReply object`;\n switch (value.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n case \"compaction\":\n if (typeof value.text !== \"string\")\n return `\"${path}.text\" must be a string`;\n return null;\n case \"context\":\n if (typeof value.text !== \"string\")\n return `\"${path}.text\" must be a string`;\n return null;\n case \"tool\":\n if (typeof value.callId !== \"string\")\n return `\"${path}.callId\" must be a string`;\n if (typeof value.name !== \"string\")\n return `\"${path}.name\" must be a string`;\n if (typeof value.inputSummary !== \"string\")\n return `\"${path}.inputSummary\" must be a string`;\n if (value.outputSummary !== undefined && typeof value.outputSummary !== \"string\") {\n return `\"${path}.outputSummary\" must be a string`;\n }\n if (value.failed !== undefined && typeof value.failed !== \"boolean\")\n return `\"${path}.failed\" must be a boolean`;\n return null;\n case \"skill\":\n if (typeof value.skill !== \"string\")\n return `\"${path}.skill\" must be a string`;\n if (value.text !== undefined && typeof value.text !== \"string\")\n return `\"${path}.text\" must be a string`;\n return null;\n case \"subagent\":\n if (typeof value.name !== \"string\")\n return `\"${path}.name\" must be a string`;\n if (typeof value.summary !== \"string\")\n return `\"${path}.summary\" must be a string`;\n return null;\n case \"input\":\n if (!isObject(value.request))\n return `\"${path}.request\" must be an AttemptInputRequestView object`;\n if (typeof value.request.promptSummary !== \"string\")\n return `\"${path}.request.promptSummary\" must be a string`;\n return null;\n default:\n return `\"${path}.kind\" must be one of ${JSON.stringify(CONVERSATION_REPLY_KINDS)}`;\n }\n}\nfunction conversationRoundProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptConversationRound object`;\n if (typeof value.turnId !== \"string\")\n return `\"${path}.turnId\" must be a string`;\n if (typeof value.sequence !== \"number\")\n return `\"${path}.sequence\" must be a number`;\n if (value.outcome !== \"completed\" && value.outcome !== \"failed\" &&\n value.outcome !== \"cancelled\" && value.outcome !== \"interrupted\") {\n return `\"${path}.outcome\" must be completed | failed | cancelled | interrupted`;\n }\n return arrayProblem(value.replies, `${path}.replies`, conversationReplyProblem);\n}\nexport function validateConversationData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.rounds, \"rounds\", conversationRoundProblem);\n}\n/** AttemptCommandCard(compute.ts):闭合命令证据的展示卡。 */\nfunction commandCardProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptCommandCard object`;\n if (typeof value.key !== \"string\")\n return `\"${path}.key\" must be a string`;\n if (typeof value.timingNodeId !== \"string\")\n return `\"${path}.timingNodeId\" must be a string`;\n if (typeof value.phase !== \"string\")\n return `\"${path}.phase\" must be a string`;\n if (typeof value.display !== \"string\")\n return `\"${path}.display\" must be a string`;\n if (typeof value.exitCode !== \"number\")\n return `\"${path}.exitCode\" must be a number`;\n if (value.classification !== \"succeeded\" && value.classification !== \"observed\" && value.classification !== \"failed\") {\n return `\"${path}.classification\" must be succeeded | observed | failed`;\n }\n if (value.stdout !== undefined && typeof value.stdout !== \"string\")\n return `\"${path}.stdout\" must be a string`;\n if (value.stderr !== undefined && typeof value.stderr !== \"string\")\n return `\"${path}.stderr\" must be a string`;\n return null;\n}\nexport function validateCommandEvidenceData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.commands, \"commands\", commandCardProblem);\n}\n// ───────────────────────── AttemptDiagnostics ─────────────────────────\nfunction diagnosticViewProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be an AttemptDiagnosticView object`;\n if (typeof value.code !== \"string\")\n return `\"${path}.code\" must be a string`;\n if (value.kind !== \"advisory\" && value.kind !== \"execution-error\") {\n return `\"${path}.kind\" must be \"advisory\" | \"execution-error\"`;\n }\n if (typeof value.phase !== \"string\")\n return `\"${path}.phase\" must be a string`;\n if (typeof value.summary !== \"string\")\n return `\"${path}.summary\" must be a string`;\n if (value.level !== \"warning\" && value.level !== \"error\")\n return `\"${path}.level\" must be \"warning\" | \"error\"`;\n return null;\n}\nexport function validateDiagnosticsData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n const collectionProblem = traceCollectionProblem(data.collection, \"collection\");\n if (collectionProblem !== null)\n return collectionProblem;\n return arrayProblem(data.groups, \"groups\", (group, path) => {\n if (!isObject(group) || typeof group.phase !== \"string\") {\n return `\"${path}\" must be an object with a string \"phase\"`;\n }\n return arrayProblem(group.items, `${path}.items`, diagnosticViewProblem);\n });\n}\n// ───────────────────────── UsageTable ─────────────────────────\nexport function validateUsageData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (typeof data.experimentId !== \"string\")\n return 'missing \"experimentId\" (string)';\n if (typeof data.evalId !== \"string\")\n return 'missing \"evalId\" (string)';\n if (typeof data.attempt !== \"number\")\n return '\"attempt\" must be a number';\n const verdict = data.verdict;\n if (verdict !== \"passed\" && verdict !== \"failed\" && verdict !== \"errored\" && verdict !== \"skipped\" && verdict !== \"unknown\") {\n return '\"verdict\" must be passed | failed | errored | skipped | unknown';\n }\n if (data.turns !== undefined && typeof data.turns !== \"number\")\n return '\"turns\" must be a number';\n if (data.toolCalls !== undefined && typeof data.toolCalls !== \"number\")\n return '\"toolCalls\" must be a number';\n if (data.observations !== undefined) {\n const problem = arrayProblem(data.observations, \"observations\", (observation, path) => {\n if (!isObject(observation) || typeof observation.provider !== \"string\" || typeof observation.kind !== \"string\") {\n return `\"${path}\" must be a ClosedUsageObservation object`;\n }\n return null;\n });\n if (problem !== null)\n return problem;\n }\n if (data.observedCostUSD !== undefined && typeof data.observedCostUSD !== \"number\") {\n return '\"observedCostUSD\" must be a number';\n }\n return null;\n}\n// ───────────────────────── AttemptDiff ─────────────────────────\nconst DIFF_FILE_CHANGE = [\"added\", \"modified\", \"deleted\"];\n/** DiffFile(src/report/definition/primitives/diff-lines.ts):净无变化的文件不进这份列表。 */\nfunction diffFileEntryProblem(value: unknown, path: string): string | null {\n if (!isObject(value))\n return `\"${path}\" must be a DiffFile { path, change, added, removed, windows }`;\n if (typeof value.path !== \"string\")\n return `\"${path}.path\" must be a string`;\n if (typeof value.change !== \"string\" || !DIFF_FILE_CHANGE.includes(value.change)) {\n return `\"${path}.change\" must be one of ${JSON.stringify(DIFF_FILE_CHANGE)}`;\n }\n if (typeof value.added !== \"number\" || typeof value.removed !== \"number\") {\n return `\"${path}.added\" and \"${path}.removed\" must be numbers`;\n }\n if (!Array.isArray(value.windows))\n return `\"${path}.windows\" must be an array`;\n for (let i = 0; i < value.windows.length; i += 1) {\n const window = value.windows[i];\n if (!isObject(window) || typeof window.window !== \"string\") {\n return `\"${path}.windows[${i}].window\" must be a string`;\n }\n if (window.patch !== undefined && typeof window.patch !== \"string\") {\n return `\"${path}.windows[${i}].patch\" must be a string`;\n }\n }\n return null;\n}\nexport function validateDiffData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n if (!isObject(data.collection) || typeof data.collection.state !== \"string\") {\n return '\"collection\" must be a ClosedFileChangesCollection object';\n }\n return arrayProblem(data.files, \"files\", diffFileEntryProblem);\n}\n// ───────────────────────── AttemptSource ─────────────────────────\nexport function validateSourceData(data: unknown): string | null {\n if (!isObject(data))\n return \"expected an object\";\n if (typeof data.locator !== \"string\")\n return 'missing \"locator\" (string)';\n const itemsProblem = arrayProblem(data.items, \"items\", (item, path) => {\n if (!isObject(item))\n return `\"${path}\" must be an AttemptSourceItemView object`;\n if (typeof item.sourceItemId !== \"string\")\n return `\"${path}.sourceItemId\" must be a string`;\n if (typeof item.path !== \"string\")\n return `\"${path}.path\" must be a string`;\n if (typeof item.sha256 !== \"string\")\n return `\"${path}.sha256\" must be a string`;\n if (!Array.isArray(item.lines) || !item.lines.every((line: unknown) => typeof line === \"string\")) {\n return `\"${path}.lines\" must be an array of strings`;\n }\n if (item.unavailable !== undefined && item.unavailable !== \"unavailable\" && item.unavailable !== \"binary\") {\n return `\"${path}.unavailable\" must be \"unavailable\" | \"binary\"`;\n }\n return null;\n });\n if (itemsProblem !== null)\n return itemsProblem;\n const sitesProblem = arrayProblem(data.sites, \"sites\", (site, path) => {\n if (!isObject(site))\n return `\"${path}\" must be an AttemptSourceSiteView object`;\n if (typeof site.entryId !== \"string\")\n return `\"${path}.entryId\" must be a string`;\n if (typeof site.role !== \"string\")\n return `\"${path}.role\" must be a string`;\n if (typeof site.sourceItemId !== \"string\")\n return `\"${path}.sourceItemId\" must be a string`;\n if (typeof site.startLine !== \"number\")\n return `\"${path}.startLine\" must be a number`;\n if (typeof site.endLine !== \"number\")\n return `\"${path}.endLine\" must be a number`;\n return null;\n });\n if (sitesProblem !== null)\n return sitesProblem;\n return arrayProblem(data.entries, \"entries\", assertionViewProblem);\n}\nexport const attemptDetailValidators: Readonly<Record<string, Validator>> = Object.freeze({\n summary: validateSummaryData,\n error: validateErrorData,\n assertions: validateAssertionsData,\n fixPrompt: validateFixPromptData,\n timeline: validateTimelineData,\n trace: validateTraceData,\n conversation: validateConversationData,\n commandEvidence: validateCommandEvidenceData,\n diagnostics: validateDiagnosticsData,\n usage: validateUsageData,\n diff: validateDiffData,\n source: validateSourceData,\n});\n"]}
|
|
@@ -10,6 +10,7 @@ const format_ts_1 = require("../../model/format.cjs");
|
|
|
10
10
|
const locale_ts_1 = require("../../model/locale.cjs");
|
|
11
11
|
const pricing_ts_1 = require("../../model/pricing.cjs");
|
|
12
12
|
const compute_ts_1 = require("./compute.cjs");
|
|
13
|
+
const compute_ts_2 = require("../entity-lists/compute.cjs");
|
|
13
14
|
var stability_overview_tsx_1 = require("./stability-overview.cjs");
|
|
14
15
|
Object.defineProperty(exports, "StabilityOverview", { enumerable: true, get: function () { return stability_overview_tsx_1.StabilityOverview; } });
|
|
15
16
|
/**
|
|
@@ -42,9 +43,12 @@ exports.ExperimentScatter = (0, tree_ts_1.defineComponent)(async (props, ctx) =>
|
|
|
42
43
|
if (props.comparison.comparison.state === "non-comparable") {
|
|
43
44
|
return ((0, jsx_runtime_1.jsx)(primitives_tsx_1.Col, { className: joinClassNames("niceeval-experiment-scatter", props.className), children: (0, jsx_runtime_1.jsx)(primitives_tsx_1.Text, { className: "niceeval-experiment-scatter-note", children: props.comparison.comparison.issues.map((issue) => issue.reason).join(", ") }) }));
|
|
44
45
|
}
|
|
45
|
-
const
|
|
46
|
+
const sample = (0, experiment_groups_ts_1.sampleForExperimentComparisonScope)(props.comparison);
|
|
47
|
+
const experiments = await (0, compute_ts_2.experimentListData)(sample, pricing);
|
|
48
|
+
const data = await (0, compute_ts_1.experimentScatterData)(sample, {
|
|
46
49
|
series: props.series,
|
|
47
50
|
connect: props.connect,
|
|
51
|
+
experiments,
|
|
48
52
|
}, pricing);
|
|
49
53
|
if (data.points.length > 0 && data.points.every((point) => point.costUSD.state === "migration-required")) {
|
|
50
54
|
return ((0, jsx_runtime_1.jsx)(primitives_tsx_1.Col, { className: joinClassNames("niceeval-experiment-scatter", props.className), children: (0, jsx_runtime_1.jsx)(primitives_tsx_1.Text, { className: "niceeval-experiment-scatter-note", children: (0, locale_ts_1.localeText)(locale, "costProjection.migrationRequired") }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** Official summary components over a fixed Sample and closed Analysis rows. */\nimport type { ExperimentComparisonScope, ExperimentId, MetricValue, Sample } from \"../../../analysis/index.ts\";\nimport { sampleForExperimentComparisonScope } from \"../../../analysis/experiment-groups.ts\";\nimport { defineComponent } from \"../../definition/tree.ts\";\nimport { Chart, Col, Grid, Scatter, Series, Stat, Text, } from \"../../definition/primitives.tsx\";\nimport type { Cell } from \"../../definition/cell.tsx\";\nimport type { ChartTargetPoint } from \"../../definition/primitives/chart.tsx\";\nimport type { ReportTarget } from \"../../definition/report.ts\";\nimport { experimentDetailTarget } from \"../../library/details.ts\";\nimport { formatInstant, formatReportDateTimeRange, } from \"../../model/format.ts\";\nimport { DEFAULT_REPORT_LOCALE, localeText, resolveLocalizedText, type ReportLocale, } from \"../../model/locale.ts\";\nimport { COST_SCATTER_NO_PROFILE_TEXT, COST_SUMMARY_NO_PROFILE_TEXT, } from \"../../model/pricing.ts\";\nimport { experimentScatterData, sampleSummaryData, type ExperimentScatterPoint, type SummarySeries, } from \"./compute.ts\";\nimport type { Dataset, DatasetField } from \"../../model/types.ts\";\nexport { StabilityOverview } from \"./stability-overview.tsx\";\nexport type { StabilityOverviewProps } from \"./stability-overview.tsx\";\nexport interface SampleSummaryProps {\n /** Explicit fixed Sample; omitted means the resolving component's `ctx.scope`. */\n readonly input?: Sample;\n /** Which closed evidence identity gets one verdict count. */\n readonly votes?: \"eval\" | \"attempt\";\n readonly locale?: ReportLocale;\n readonly className?: string;\n}\n/**\n * The zero-config scope summary. Its values are either Sample identity facts\n * or untouched Analysis MetricValues; Grid/Stat supply both text and web\n * presentation from the single resolved tree. The cost KPI shows the full\n * projection (state/basis/profile/coverage/reasons), or the adjudicated\n * bilingual text when the Report declares no PricingProfile.\n */\nexport const SampleSummary = defineComponent<SampleSummaryProps>(async (props, ctx) => {\n const locale = props.locale ?? DEFAULT_REPORT_LOCALE;\n const votes = props.votes ?? \"eval\";\n const pricing = ctx.report.pricing;\n const data = await sampleSummaryData(props.input ?? ctx.scope, votes, pricing);\n const range = rangeText(data.earliestStartedAt, data.latestStartedAt, locale);\n return (<Col className={joinClassNames(\"niceeval-sample-summary\", props.className)}>\n <Grid>\n <Stat label={localeText(locale, \"scopeSummary.passRate\")} value={metricCell(data.passRate)}/>\n <Stat label={localeText(locale, \"scopeSummary.experiments\")} value={data.experiments}/>\n <Stat label={localeText(locale, \"scopeSummary.evals\")} value={data.evals}/>\n <Stat label={localeText(locale, \"scopeSummary.attempts\")} value={data.attempts}/>\n <Stat label={localeText(locale, votes === \"attempt\" ? \"scopeSummary.votesAttempt\" : \"scopeSummary.votesEval\")} value={{ kind: \"verdict\", counts: data.verdicts }}/>\n {pricing === null ? (<Stat label={localeText(locale, \"scopeSummary.totalCost\")} value={resolveLocalizedText(COST_SUMMARY_NO_PROFILE_TEXT, locale)}/>) : (<Stat label={localeText(locale, \"scopeSummary.totalCost\")} value={data.totalCostUSD === null ? localeText(locale, \"cell.missing\") : metricCell(data.totalCostUSD)}/>)}\n </Grid>\n {range === null ? null : <Text className=\"niceeval-sample-summary-range\">{range}</Text>}\n </Col>);\n});\nSampleSummary.displayName = \"SampleSummary\";\nexport interface ExperimentScatterProps {\n readonly comparison: ExperimentComparisonScope;\n /** The closed Run-context dimension used to split experiment points. */\n readonly series?: SummarySeries;\n /** Connect points from the same series; defaults on for the conventional `line` label. */\n readonly connect?: boolean;\n /** Overrides the library's default Experiment detail target for each point. */\n readonly pointTarget?: (point: ChartTargetPoint) => ReportTarget | undefined;\n readonly locale?: ReportLocale;\n readonly className?: string;\n}\n/**\n * An Experiment comparison whose primary y axis follows the evaluation kind.\n * Pass-only Experiments use pass rate; Score and mixed Experiments use total\n * earned score. A mixed Sample renders the two incomparable units separately.\n */\nexport const ExperimentScatter = defineComponent<ExperimentScatterProps>(async (props, ctx) => {\n const locale = props.locale ?? DEFAULT_REPORT_LOCALE;\n const pricing = ctx.report.pricing;\n if (pricing === null) {\n return (<Col className={joinClassNames(\"niceeval-experiment-scatter\", props.className)}>\n <Text className=\"niceeval-experiment-scatter-note\">\n {resolveLocalizedText(COST_SCATTER_NO_PROFILE_TEXT, locale)}\n </Text>\n </Col>);\n }\n if (props.comparison.comparison.state === \"non-comparable\") {\n return (<Col className={joinClassNames(\"niceeval-experiment-scatter\", props.className)}>\n <Text className=\"niceeval-experiment-scatter-note\">\n {props.comparison.comparison.issues.map((issue) => issue.reason).join(\", \")}\n </Text>\n </Col>);\n }\n const data = await experimentScatterData(sampleForExperimentComparisonScope(props.comparison), {\n series: props.series,\n connect: props.connect,\n }, pricing);\n if (data.points.length > 0 && data.points.every((point) => point.costUSD.state === \"migration-required\")) {\n return (<Col className={joinClassNames(\"niceeval-experiment-scatter\", props.className)}>\n <Text className=\"niceeval-experiment-scatter-note\">\n {localeText(locale, \"costProjection.migrationRequired\")}\n </Text>\n </Col>);\n }\n const passPoints = data.points.filter((point) => point.evaluationKind === \"pass\");\n const scorePoints = data.points.filter((point) => point.evaluationKind !== \"pass\");\n const pointTarget = props.pointTarget ?? defaultExperimentPointTarget;\n return (<Col className={props.className}>\n {passPoints.length === 0 ? null : (<Scatter points={passPoints} x=\"costUSD\" y=\"passRate\" point=\"experiment\" series=\"series\" connect={data.connect} pointTarget={pointTarget} locale={props.locale} legend/>)}\n {scorePoints.length === 0 ? null : (<Chart data={scoreScatterDataset(scorePoints)} x=\"costUSD\" y=\"totalScore\" pointTarget={pointTarget} locale={props.locale} legend>\n <Series id=\"score\" mark=\"scatter\" points=\"experiment\" by=\"series\" connect={data.connect}/>\n </Chart>)}\n </Col>);\n});\nExperimentScatter.displayName = \"ExperimentScatter\";\nexport interface SampleOverviewProps extends ExperimentScatterProps {\n}\n/** The conventional summary + comparison composition. */\nexport const SampleOverview = defineComponent<SampleOverviewProps>((props) => (<Col className={props.className}>\n <SampleSummary input={sampleForExperimentComparisonScope(props.comparison)} locale={props.locale}/>\n <ExperimentScatter comparison={props.comparison} series={props.series} connect={props.connect} pointTarget={props.pointTarget} locale={props.locale}/>\n </Col>));\nSampleOverview.displayName = \"SampleOverview\";\nfunction metricCell(metric: MetricValue<number> | null): Cell | null {\n return metric === null ? null : { kind: \"metric\", metric };\n}\nfunction defaultExperimentPointTarget(point: ChartTargetPoint): ReportTarget {\n return {\n page: \"experiment\",\n params: experimentDetailTarget(point.key as ExperimentId),\n };\n}\nfunction scoreScatterDataset(points: readonly ExperimentScatterPoint[]): Dataset {\n const cost = points[0]?.costUSD;\n const costField: DatasetField = Object.freeze({\n name: \"costUSD\",\n kind: \"metric\",\n valueType: \"number\",\n ...(cost?.unit === undefined ? {} : { unit: cost.unit }),\n ...(cost?.format === undefined ? {} : { format: cost.format }),\n ...(cost?.better === undefined ? {} : { better: cost.better }),\n ...(cost?.bounds === undefined ? {} : { bounds: cost.bounds }),\n });\n return Object.freeze({\n fields: Object.freeze([\n { name: \"experiment\", kind: \"dimension\", valueType: \"string\" },\n { name: \"series\", kind: \"dimension\", valueType: \"string\" },\n costField,\n { name: \"totalScore\", kind: \"metric\", valueType: \"number\", better: \"higher\", bounds: { min: 0 } },\n ] satisfies readonly DatasetField[]),\n rows: Object.freeze(points.map((point) => Object.freeze({\n // Match Scatter's point=\"experiment\" route identity on the pass branch.\n key: point.experiment,\n values: Object.freeze({\n experiment: point.experiment,\n series: point.series,\n costUSD: point.costUSD,\n totalScore: point.totalScore ?? null,\n }),\n }))),\n });\n}\nfunction rangeText(earliest: string | null, latest: string | null, locale: ReportLocale): string | null {\n if (latest === null)\n return null;\n if (earliest === null || earliest === latest) {\n return localeText(locale, \"scopeSummary.lastRun\", { time: formatInstant(latest, locale) });\n }\n const range = formatReportDateTimeRange(earliest, latest, locale);\n return localeText(locale, \"scopeSummary.runRange\", range);\n}\nfunction joinClassNames(...parts: readonly (string | undefined)[]): string {\n return parts.filter((part): part is string => part !== undefined && part.length > 0).join(\" \");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** Official summary components over a fixed Sample and closed Analysis rows. */\nimport type { ExperimentComparisonScope, ExperimentId, MetricValue, Sample } from \"../../../analysis/index.ts\";\nimport { sampleForExperimentComparisonScope } from \"../../../analysis/experiment-groups.ts\";\nimport { defineComponent } from \"../../definition/tree.ts\";\nimport { Chart, Col, Grid, Scatter, Series, Stat, Text, } from \"../../definition/primitives.tsx\";\nimport type { Cell } from \"../../definition/cell.tsx\";\nimport type { ChartTargetPoint } from \"../../definition/primitives/chart.tsx\";\nimport type { ReportTarget } from \"../../definition/report.ts\";\nimport { experimentDetailTarget } from \"../../library/details.ts\";\nimport { formatInstant, formatReportDateTimeRange, } from \"../../model/format.ts\";\nimport { DEFAULT_REPORT_LOCALE, localeText, resolveLocalizedText, type ReportLocale, } from \"../../model/locale.ts\";\nimport { COST_SCATTER_NO_PROFILE_TEXT, COST_SUMMARY_NO_PROFILE_TEXT, } from \"../../model/pricing.ts\";\nimport { experimentScatterData, sampleSummaryData, type ExperimentScatterPoint, type SummarySeries, } from \"./compute.ts\";\nimport { experimentListData } from \"../entity-lists/compute.ts\";\nimport type { Dataset, DatasetField } from \"../../model/types.ts\";\nexport { StabilityOverview } from \"./stability-overview.tsx\";\nexport type { StabilityOverviewProps } from \"./stability-overview.tsx\";\nexport interface SampleSummaryProps {\n /** Explicit fixed Sample; omitted means the resolving component's `ctx.scope`. */\n readonly input?: Sample;\n /** Which closed evidence identity gets one verdict count. */\n readonly votes?: \"eval\" | \"attempt\";\n readonly locale?: ReportLocale;\n readonly className?: string;\n}\n/**\n * The zero-config scope summary. Its values are either Sample identity facts\n * or untouched Analysis MetricValues; Grid/Stat supply both text and web\n * presentation from the single resolved tree. The cost KPI shows the full\n * projection (state/basis/profile/coverage/reasons), or the adjudicated\n * bilingual text when the Report declares no PricingProfile.\n */\nexport const SampleSummary = defineComponent<SampleSummaryProps>(async (props, ctx) => {\n const locale = props.locale ?? DEFAULT_REPORT_LOCALE;\n const votes = props.votes ?? \"eval\";\n const pricing = ctx.report.pricing;\n const data = await sampleSummaryData(props.input ?? ctx.scope, votes, pricing);\n const range = rangeText(data.earliestStartedAt, data.latestStartedAt, locale);\n return (<Col className={joinClassNames(\"niceeval-sample-summary\", props.className)}>\n <Grid>\n <Stat label={localeText(locale, \"scopeSummary.passRate\")} value={metricCell(data.passRate)}/>\n <Stat label={localeText(locale, \"scopeSummary.experiments\")} value={data.experiments}/>\n <Stat label={localeText(locale, \"scopeSummary.evals\")} value={data.evals}/>\n <Stat label={localeText(locale, \"scopeSummary.attempts\")} value={data.attempts}/>\n <Stat label={localeText(locale, votes === \"attempt\" ? \"scopeSummary.votesAttempt\" : \"scopeSummary.votesEval\")} value={{ kind: \"verdict\", counts: data.verdicts }}/>\n {pricing === null ? (<Stat label={localeText(locale, \"scopeSummary.totalCost\")} value={resolveLocalizedText(COST_SUMMARY_NO_PROFILE_TEXT, locale)}/>) : (<Stat label={localeText(locale, \"scopeSummary.totalCost\")} value={data.totalCostUSD === null ? localeText(locale, \"cell.missing\") : metricCell(data.totalCostUSD)}/>)}\n </Grid>\n {range === null ? null : <Text className=\"niceeval-sample-summary-range\">{range}</Text>}\n </Col>);\n});\nSampleSummary.displayName = \"SampleSummary\";\nexport interface ExperimentScatterProps {\n readonly comparison: ExperimentComparisonScope;\n /** The closed Run-context dimension used to split experiment points. */\n readonly series?: SummarySeries;\n /** Connect points from the same series; defaults on for the conventional `line` label. */\n readonly connect?: boolean;\n /** Overrides the library's default Experiment detail target for each point. */\n readonly pointTarget?: (point: ChartTargetPoint) => ReportTarget | undefined;\n readonly locale?: ReportLocale;\n readonly className?: string;\n}\n/**\n * An Experiment comparison whose primary y axis follows the evaluation kind.\n * Pass-only Experiments use pass rate; Score and mixed Experiments use total\n * earned score. A mixed Sample renders the two incomparable units separately.\n */\nexport const ExperimentScatter = defineComponent<ExperimentScatterProps>(async (props, ctx) => {\n const locale = props.locale ?? DEFAULT_REPORT_LOCALE;\n const pricing = ctx.report.pricing;\n if (pricing === null) {\n return (<Col className={joinClassNames(\"niceeval-experiment-scatter\", props.className)}>\n <Text className=\"niceeval-experiment-scatter-note\">\n {resolveLocalizedText(COST_SCATTER_NO_PROFILE_TEXT, locale)}\n </Text>\n </Col>);\n }\n if (props.comparison.comparison.state === \"non-comparable\") {\n return (<Col className={joinClassNames(\"niceeval-experiment-scatter\", props.className)}>\n <Text className=\"niceeval-experiment-scatter-note\">\n {props.comparison.comparison.issues.map((issue) => issue.reason).join(\", \")}\n </Text>\n </Col>);\n }\n const sample = sampleForExperimentComparisonScope(props.comparison);\n const experiments = await experimentListData(sample, pricing);\n const data = await experimentScatterData(sample, {\n series: props.series,\n connect: props.connect,\n experiments,\n }, pricing);\n if (data.points.length > 0 && data.points.every((point) => point.costUSD.state === \"migration-required\")) {\n return (<Col className={joinClassNames(\"niceeval-experiment-scatter\", props.className)}>\n <Text className=\"niceeval-experiment-scatter-note\">\n {localeText(locale, \"costProjection.migrationRequired\")}\n </Text>\n </Col>);\n }\n const passPoints = data.points.filter((point) => point.evaluationKind === \"pass\");\n const scorePoints = data.points.filter((point) => point.evaluationKind !== \"pass\");\n const pointTarget = props.pointTarget ?? defaultExperimentPointTarget;\n return (<Col className={props.className}>\n {passPoints.length === 0 ? null : (<Scatter points={passPoints} x=\"costUSD\" y=\"passRate\" point=\"experiment\" series=\"series\" connect={data.connect} pointTarget={pointTarget} locale={props.locale} legend/>)}\n {scorePoints.length === 0 ? null : (<Chart data={scoreScatterDataset(scorePoints)} x=\"costUSD\" y=\"totalScore\" pointTarget={pointTarget} locale={props.locale} legend>\n <Series id=\"score\" mark=\"scatter\" points=\"experiment\" by=\"series\" connect={data.connect}/>\n </Chart>)}\n </Col>);\n});\nExperimentScatter.displayName = \"ExperimentScatter\";\nexport interface SampleOverviewProps extends ExperimentScatterProps {\n}\n/** The conventional summary + comparison composition. */\nexport const SampleOverview = defineComponent<SampleOverviewProps>((props) => (<Col className={props.className}>\n <SampleSummary input={sampleForExperimentComparisonScope(props.comparison)} locale={props.locale}/>\n <ExperimentScatter comparison={props.comparison} series={props.series} connect={props.connect} pointTarget={props.pointTarget} locale={props.locale}/>\n </Col>));\nSampleOverview.displayName = \"SampleOverview\";\nfunction metricCell(metric: MetricValue<number> | null): Cell | null {\n return metric === null ? null : { kind: \"metric\", metric };\n}\nfunction defaultExperimentPointTarget(point: ChartTargetPoint): ReportTarget {\n return {\n page: \"experiment\",\n params: experimentDetailTarget(point.key as ExperimentId),\n };\n}\nfunction scoreScatterDataset(points: readonly ExperimentScatterPoint[]): Dataset {\n const cost = points[0]?.costUSD;\n const costField: DatasetField = Object.freeze({\n name: \"costUSD\",\n kind: \"metric\",\n valueType: \"number\",\n ...(cost?.unit === undefined ? {} : { unit: cost.unit }),\n ...(cost?.format === undefined ? {} : { format: cost.format }),\n ...(cost?.better === undefined ? {} : { better: cost.better }),\n ...(cost?.bounds === undefined ? {} : { bounds: cost.bounds }),\n });\n return Object.freeze({\n fields: Object.freeze([\n { name: \"experiment\", kind: \"dimension\", valueType: \"string\" },\n { name: \"series\", kind: \"dimension\", valueType: \"string\" },\n costField,\n { name: \"totalScore\", kind: \"metric\", valueType: \"number\", better: \"higher\", bounds: { min: 0 } },\n ] satisfies readonly DatasetField[]),\n rows: Object.freeze(points.map((point) => Object.freeze({\n // Match Scatter's point=\"experiment\" route identity on the pass branch.\n key: point.experiment,\n values: Object.freeze({\n experiment: point.experiment,\n series: point.series,\n costUSD: point.costUSD,\n totalScore: point.totalScore ?? null,\n }),\n }))),\n });\n}\nfunction rangeText(earliest: string | null, latest: string | null, locale: ReportLocale): string | null {\n if (latest === null)\n return null;\n if (earliest === null || earliest === latest) {\n return localeText(locale, \"scopeSummary.lastRun\", { time: formatInstant(latest, locale) });\n }\n const range = formatReportDateTimeRange(earliest, latest, locale);\n return localeText(locale, \"scopeSummary.runRange\", range);\n}\nfunction joinClassNames(...parts: readonly (string | undefined)[]): string {\n return parts.filter((part): part is string => part !== undefined && part.length > 0).join(\" \");\n}\n"]}
|
|
@@ -61,6 +61,13 @@ function validateEntry(value, path) {
|
|
|
61
61
|
if (value.callPhase !== undefined && value.callPhase !== "started" && value.callPhase !== "finished") {
|
|
62
62
|
return `"${path}.callPhase" must be started | finished`;
|
|
63
63
|
}
|
|
64
|
+
if (value.callOutcome !== undefined &&
|
|
65
|
+
value.callOutcome !== "completed" &&
|
|
66
|
+
value.callOutcome !== "failed" &&
|
|
67
|
+
value.callOutcome !== "rejected" &&
|
|
68
|
+
value.callOutcome !== "cancelled") {
|
|
69
|
+
return `"${path}.callOutcome" must be completed | failed | rejected | cancelled`;
|
|
70
|
+
}
|
|
64
71
|
return null;
|
|
65
72
|
}
|
|
66
73
|
function validateTurn(value, path) {
|