niceeval 0.14.1-canary.50 → 0.14.1

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.
Files changed (37) hide show
  1. package/dist/agents/codex-app-server.cjs +7 -1
  2. package/dist/agents/codex-app-server.cjs.map +1 -1
  3. package/dist/inspection/overview.cjs +7 -3
  4. package/dist/inspection/overview.cjs.map +1 -1
  5. package/dist/sandbox/incus/control.cjs +28 -1
  6. package/dist/sandbox/incus/control.cjs.map +1 -1
  7. package/dist/view/function-runtime.mjs +2 -2
  8. package/node_modules/undici/docs/docs/api/Client.md +4 -0
  9. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +3 -2
  10. package/node_modules/undici/docs/docs/api/EventSource.md +4 -0
  11. package/node_modules/undici/lib/cache/memory-cache-store.js +1 -1
  12. package/node_modules/undici/lib/dispatcher/agent.js +7 -2
  13. package/node_modules/undici/lib/dispatcher/balanced-pool.js +1 -1
  14. package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
  15. package/node_modules/undici/lib/dispatcher/client-h2.js +43 -3
  16. package/node_modules/undici/lib/dispatcher/client.js +3 -2
  17. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +13 -1
  18. package/node_modules/undici/lib/dispatcher/dispatcher.js +10 -0
  19. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +10 -3
  20. package/node_modules/undici/lib/dispatcher/proxy-agent.js +1 -1
  21. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
  22. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +3 -1
  23. package/node_modules/undici/lib/handler/cache-handler.js +8 -0
  24. package/node_modules/undici/lib/handler/decorator-handler.js +7 -1
  25. package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
  26. package/node_modules/undici/lib/handler/redirect-handler.js +8 -0
  27. package/node_modules/undici/lib/handler/retry-handler.js +83 -11
  28. package/node_modules/undici/lib/interceptor/dump.js +1 -1
  29. package/node_modules/undici/lib/mock/mock-agent.js +13 -1
  30. package/node_modules/undici/lib/mock/mock-utils.js +11 -10
  31. package/node_modules/undici/lib/web/cookies/parse.js +4 -2
  32. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
  33. package/node_modules/undici/lib/web/eventsource/eventsource.js +4 -1
  34. package/node_modules/undici/lib/web/fetch/request.js +2 -3
  35. package/node_modules/undici/package.json +3 -3
  36. package/node_modules/undici/types/client.d.ts +10 -0
  37. package/package.json +4 -4
@@ -316,7 +316,13 @@ async function drive(state, ctx, from, turnId) {
316
316
  const frame = record(value);
317
317
  if (!belongsToTurn(value, state.threadId, turnId))
318
318
  return false;
319
- return frame?.method === "item/tool/requestUserInput" || frame?.method === "turn/completed" || frame?.method === "error";
319
+ if (frame?.method === "error") {
320
+ // app-server emits transient stream errors before its own reconnect
321
+ // attempts. They remain part of this turn's evidence, but only an error
322
+ // with no promised retry is terminal for the adapter.
323
+ return record(frame.params)?.willRetry !== true;
324
+ }
325
+ return frame?.method === "item/tool/requestUserInput" || frame?.method === "turn/completed";
320
326
  }, ctx.signal);
321
327
  state.cursor = receipt.cursor;
322
328
  const frame = record(receipt.frame);
@@ -1 +1 @@
1
- {"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["codex-app-server.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InputResponse, SandboxAgentContext, StreamEvent, Turn, TurnEvidenceCoverage, Usage } from \"../types.ts\";\nimport { createSessionSlot } from \"./session-slot.ts\";\nimport { ManagedJsonlDriver } from \"./managed-jsonl.ts\";\nimport { shared } from \"./shared.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents } from \"../context/send-failures.ts\";\nimport { normalizeExternalCause, type ExternalCause } from \"../shared/external-cause.ts\";\nimport { attemptResources } from \"../context/attempt-resources.ts\";\ntype RecordValue = globalThis.Record<string, unknown>;\ntype PendingQuestion = {\n readonly requestId: string;\n readonly nativeQuestionId: string;\n readonly prompt: string;\n readonly options: readonly string[];\n};\ntype PendingBatch = {\n readonly rpcId: string | number;\n readonly turnId: string;\n readonly questions: readonly PendingQuestion[];\n};\ntype CodexState = {\n readonly driver: ManagedJsonlDriver;\n cursor: number;\n readonly threadId: string;\n pending?: PendingBatch;\n readonly reported: Set<string>;\n};\nconst stateSlot = createSessionSlot<CodexState>(\"codex/app-server-native\");\nfunction record(value: unknown): RecordValue | undefined {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) ? value as RecordValue : undefined;\n}\nfunction progressPreview(value: unknown): string | undefined {\n if (typeof value !== \"string\")\n return undefined;\n const text = value.replace(/\\s+/g, \" \").trim();\n if (!text)\n return undefined;\n return text;\n}\nfunction jsonPreview(value: unknown): string | undefined {\n if (value === undefined)\n return undefined;\n try {\n return progressPreview(JSON.stringify(value));\n }\n catch {\n return undefined;\n }\n}\nfunction completedTool(label: string, completed: boolean): string {\n const detail = progressPreview(label) ?? \"tool\";\n return completed ? `tool: ${detail} · completed` : `tool: ${detail}`;\n}\n/** 选择 app-server v2 的可信字段;统一的脱敏、清理与有界化由 Runner ACTIVE 出口负责。 */\nfunction appServerProgressDetail(value: unknown): string | undefined {\n const frame = record(value);\n if (frame?.method !== \"item/started\" && frame?.method !== \"item/completed\")\n return undefined;\n const data = record(record(frame.params)?.item);\n if (!data)\n return undefined;\n const type = typeof data.type === \"string\" ? data.type : \"\";\n const completed = frame.method === \"item/completed\";\n if (type === \"commandExecution\" || type === \"command_execution\") {\n return completedTool(progressPreview(data.command) ?? \"shell\", completed);\n }\n if (type === \"mcpToolCall\" || type === \"mcp_tool_call\") {\n const tool = typeof data.tool === \"string\" ? data.tool : \"MCP\";\n const server = typeof data.server === \"string\" ? `${data.server}.` : \"\";\n const args = jsonPreview(data.arguments ?? data.input);\n return completedTool(`${server}${tool}${args ? ` ${args}` : \"\"}`, completed);\n }\n if (type === \"dynamicToolCall\" || type === \"dynamic_tool_call\") {\n const tool = typeof data.tool === \"string\" ? data.tool : \"dynamic tool\";\n const args = jsonPreview(data.arguments ?? data.input);\n return completedTool(`${tool}${args ? ` ${args}` : \"\"}`, completed);\n }\n if (type === \"webSearch\" || type === \"web_search\") {\n const query = progressPreview(data.query ?? data.search);\n return completedTool(`web search${query ? `: ${query}` : \"\"}`, completed);\n }\n if (type === \"fileChange\" || type === \"file_change\") {\n const paths = Array.isArray(data.changes)\n ? data.changes.flatMap((change) => {\n const path = record(change)?.path;\n return typeof path === \"string\" ? [path] : [];\n }).join(\", \")\n : undefined;\n const detail = progressPreview(paths) ?? progressPreview(data.path);\n return completedTool(`file change${detail ? `: ${detail}` : \"\"}`, completed);\n }\n if (type === \"imageView\" || type === \"image_view\") {\n const path = progressPreview(data.path);\n return completedTool(`image view${path ? `: ${path}` : \"\"}`, completed);\n }\n if (type === \"reasoning\") {\n return \"thinking\";\n }\n if (type === \"agentMessage\" || type === \"agent_message\") {\n return \"assistant response\";\n }\n return undefined;\n}\nfunction eventKey(event: StreamEvent): string | undefined {\n if (event.type === \"operation.started\" || event.type === \"operation.finished\")\n return `${event.type}:${event.operationId}`;\n if (event.type === \"skill.loaded\" && event.operationId)\n return `${event.type}:${event.operationId}`;\n return undefined;\n}\nfunction normalizeItem(value: unknown): unknown {\n const item = record(value);\n if (!item || typeof item.type !== \"string\")\n return value;\n const type = ({\n agentMessage: \"agent_message\",\n commandExecution: \"command_execution\",\n mcpToolCall: \"mcp_tool_call\",\n fileChange: \"file_change\",\n webSearch: \"web_search\",\n } as Record<string, string>)[item.type] ?? item.type;\n return { ...item, type };\n}\nfunction nativeTurnIdentity(value: unknown): {\n readonly threadId: string;\n readonly turnId: string;\n} | undefined {\n const params = record(record(value)?.params);\n if (!params || typeof params.threadId !== \"string\")\n return undefined;\n const directTurnId = params.turnId;\n const nestedTurnId = record(params.turn)?.id;\n const turnId = typeof directTurnId === \"string\"\n ? directTurnId\n : typeof nestedTurnId === \"string\"\n ? nestedTurnId\n : undefined;\n return turnId === undefined ? undefined : { threadId: params.threadId, turnId };\n}\nfunction belongsToTurn(value: unknown, threadId: string, turnId: string): boolean {\n const identity = nativeTurnIdentity(value);\n return identity?.threadId === threadId && identity.turnId === turnId;\n}\nfunction turnFrames(frames: readonly unknown[], threadId: string, turnId: string): readonly unknown[] {\n return frames.filter((frame) => belongsToTurn(frame, threadId, turnId));\n}\nfunction reportTurnProgress(value: unknown, threadId: string, turnId: string, ctx: SandboxAgentContext): void {\n if (!belongsToTurn(value, threadId, turnId))\n return;\n const detail = appServerProgressDetail(value);\n if (detail !== undefined)\n ctx.progress({ message: detail });\n}\nfunction appServerUsage(frames: readonly unknown[]): Usage | undefined {\n for (let index = frames.length - 1; index >= 0; index -= 1) {\n const frame = record(frames[index]);\n if (frame?.method !== \"thread/tokenUsage/updated\")\n continue;\n const last = record(record(record(frame.params)?.tokenUsage)?.last);\n if (!last)\n continue;\n const number = (value: unknown): number => typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? value : 0;\n const rawInput = number(last.inputTokens);\n const cacheReadTokens = number(last.cachedInputTokens);\n const reasoningTokens = number(last.reasoningOutputTokens);\n return {\n inputTokens: Math.max(0, rawInput - cacheReadTokens),\n outputTokens: number(last.outputTokens),\n ...(cacheReadTokens > 0 ? { cacheReadTokens } : {}),\n ...(reasoningTokens > 0 ? { reasoningTokens } : {}),\n requests: 1,\n };\n }\n return undefined;\n}\nfunction protocolEvents(frames: readonly unknown[], reported: Set<string>): {\n events: StreamEvent[];\n usage?: Usage;\n} {\n const normalized = frames.flatMap((value) => {\n const frame = record(value);\n if (!frame || typeof frame.method !== \"string\")\n return [];\n const params = record(frame.params) ?? {};\n const type = frame.method.replaceAll(\"/\", \".\");\n return [{ type, ...params, ...(params.item === undefined ? {} : { item: normalizeItem(params.item) }) }];\n });\n const parsed = shared.parseCodex(normalized.map((frame) => JSON.stringify(frame)).join(\"\\n\"));\n // app-server v2 streams per-turn usage separately from `turn/completed`.\n // `last` is already the current turn's total, so take the latest notification\n // in this send window instead of summing intermediate cumulative updates.\n const usage = appServerUsage(frames) ?? (Object.keys(parsed.usage).length === 0 ? undefined : parsed.usage);\n const events = parsed.events.filter((event) => {\n const key = eventKey(event);\n if (key === undefined)\n return true;\n if (reported.has(key))\n return false;\n reported.add(key);\n return true;\n });\n return { events, ...(usage === undefined ? {} : { usage }) };\n}\nfunction evidence(frames: readonly unknown[], parseSuccess: boolean, events: readonly StreamEvent[]): TurnEvidenceCoverage {\n if (frames.length === 0) {\n const reason = \"Codex app-server protocol output was unavailable; tool trajectory was not observed.\";\n return { events: { status: \"unavailable\", reason }, actions: { status: \"unavailable\", reason }, usage: { status: \"unavailable\", reason } };\n }\n if (!parseSuccess) {\n const reason = \"Some Codex app-server protocol frames could not be parsed.\";\n return { events: { status: \"partial\", reason }, actions: { status: \"partial\", reason } };\n }\n return unclassifiedToolActionsCoverage(events) ?? {};\n}\nasync function resolveBin(sandbox: SandboxAgentContext[\"sandbox\"]): Promise<string> {\n const result = await sandbox.runShell('if [ -x \"$HOME/.local/bin/codex\" ]; then printf %s \"$HOME/.local/bin/codex\"; else command -v codex; fi');\n const value = result.stdout.trim();\n if (result.exitCode !== 0 || !value)\n throw new Error(`Codex CLI path resolution failed: ${result.stderr}`);\n return value;\n}\nasync function rpc(driver: ManagedJsonlDriver, cursor: number, id: number, method: string, params: unknown, signal: AbortSignal): Promise<{\n result: RecordValue;\n cursor: number;\n}> {\n await driver.write({ id, method, params });\n const receipt = await driver.waitFor(cursor, (value) => record(value)?.id === id, signal);\n const frame = record(receipt.frame)!;\n if (frame.error !== undefined)\n throw new Error(`Codex app-server ${method} failed: ${JSON.stringify(frame.error)}`);\n return { result: record(frame.result) ?? {}, cursor: receipt.cursor };\n}\nasync function createState(ctx: SandboxAgentContext, env: Readonly<Record<string, string>>): Promise<CodexState> {\n const resources = attemptResources(ctx);\n if (!resources)\n throw new Error(\"Codex app-server requires an Attempt resource registry\");\n const driver = await ManagedJsonlDriver.start(ctx.sandbox, \"codex\", resources, {\n argv: [\n await resolveBin(ctx.sandbox),\n \"app-server\",\n \"--stdio\",\n \"--enable\", \"default_mode_request_user_input\",\n \"-c\", 'sandbox_mode=\"danger-full-access\"',\n \"-c\", 'approval_policy=\"never\"',\n ],\n cwd: ctx.sandbox.workdir,\n env,\n }, () => ({ id: 9999999, method: \"shutdown\", params: {} }));\n let cursor = 0;\n const initialized = await rpc(driver, cursor, 1, \"initialize\", {\n clientInfo: { name: \"niceeval\", title: \"NiceEval\", version: \"1\" },\n }, ctx.signal);\n cursor = initialized.cursor;\n await driver.write({ method: \"initialized\" });\n const started = await rpc(driver, cursor, 2, \"thread/start\", {\n cwd: ctx.sandbox.workdir,\n ...(ctx.model === undefined ? {} : { model: ctx.model }),\n approvalPolicy: \"never\",\n sandbox: \"danger-full-access\",\n // app-server 没有 `codex exec --dangerously-bypass-hook-trust` 的顶层 flag,\n // 但 thread/start.config 会把这个 runtime-only override 交给同一 ConfigBuilder。\n // Eval Sandbox 中的 hook 出处由 agent 配置显式声明,因此非交互运行统一 bypass。\n config: { bypass_hook_trust: true },\n }, ctx.signal);\n cursor = started.cursor;\n const threadId = record(started.result.thread)?.id;\n if (typeof threadId !== \"string\" || !threadId)\n throw new Error(\"Codex app-server thread/start returned no native thread id\");\n ctx.session.capture(threadId);\n return { driver, cursor, threadId, reported: new Set() };\n}\nfunction validateResponses(pending: PendingBatch, responses: readonly InputResponse[] | undefined): Record<string, {\n answers: string[];\n}> {\n if (!responses)\n throw new Error(\"Codex app-server is waiting for structured input responses\");\n const byId = new Map(responses.map((response) => [response.requestId, response]));\n if (byId.size !== responses.length)\n throw new Error(\"Codex input responses contain duplicate request ids\");\n const expected = new Set(pending.questions.map((question) => question.requestId));\n for (const id of byId.keys())\n if (!expected.has(id))\n throw new Error(`Unknown Codex input request ${id}`);\n if (byId.size !== expected.size)\n throw new Error(\"Codex input responses must answer the complete native question batch\");\n const answers: Record<string, {\n answers: string[];\n }> = {};\n for (const question of pending.questions) {\n const response = byId.get(question.requestId)!;\n const answer = \"optionId\" in response ? response.optionId : response.text;\n if (answer === undefined)\n throw new Error(`Codex input request ${question.requestId} has no answer`);\n if (\"optionId\" in response && response.optionId !== undefined && !question.options.includes(response.optionId)) {\n throw new Error(`Option ${response.optionId} is not available for Codex input request ${question.requestId}`);\n }\n answers[question.nativeQuestionId] = { answers: [answer] };\n }\n return answers;\n}\nfunction waitingTurn(state: CodexState, frame: RecordValue, from: number, cursor: number, turnId: string): Turn {\n const params = record(frame.params) ?? {};\n const questionsRaw = Array.isArray(params.questions) ? params.questions : [];\n const itemId = typeof params.itemId === \"string\" ? params.itemId : \"unknown-item\";\n const questions: PendingQuestion[] = questionsRaw.map((value) => {\n const question = record(value) ?? {};\n const nativeQuestionId = String(question.id ?? \"unknown-question\");\n const options = Array.isArray(question.options)\n ? question.options.map((option) => String(record(option)?.label ?? \"\")).filter(Boolean)\n : [];\n return {\n requestId: `${state.threadId}:${turnId}:${itemId}:${nativeQuestionId}`,\n nativeQuestionId,\n prompt: String(question.question ?? \"\"),\n options,\n };\n });\n if (questions.length === 0)\n throw new Error(\"Codex app-server request_user_input contained no questions\");\n const rpcId = frame.id;\n if (typeof rpcId !== \"string\" && typeof rpcId !== \"number\")\n throw new Error(\"Codex app-server request_user_input had no JSON-RPC id\");\n state.pending = { rpcId, turnId, questions };\n const frames = turnFrames(state.driver.framesSince(from).slice(0, cursor - from), state.threadId, turnId);\n const parsed = protocolEvents(frames, state.reported);\n return {\n status: \"waiting\",\n events: [\n ...parsed.events,\n ...questions.map((question): StreamEvent => ({\n type: \"input.requested\",\n request: {\n id: question.requestId,\n action: \"request_user_input\",\n prompt: question.prompt,\n options: question.options.map((id) => ({ id })),\n },\n })),\n ],\n ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),\n evidenceCoverage: evidence(frames, true, parsed.events),\n };\n}\nasync function drive(state: CodexState, ctx: SandboxAgentContext, from: number, turnId: string): Promise<Turn> {\n const receipt = await state.driver.waitFor(state.cursor, (value) => {\n const frame = record(value);\n if (!belongsToTurn(value, state.threadId, turnId))\n return false;\n return frame?.method === \"item/tool/requestUserInput\" || frame?.method === \"turn/completed\" || frame?.method === \"error\";\n }, ctx.signal);\n state.cursor = receipt.cursor;\n const frame = record(receipt.frame)!;\n if (frame.method === \"item/tool/requestUserInput\")\n return waitingTurn(state, frame, from, receipt.cursor, turnId);\n const frames = turnFrames(state.driver.framesSince(from).slice(0, receipt.cursor - from), state.threadId, turnId);\n const parsed = protocolEvents(frames, state.reported);\n const turn = record(record(frame.params)?.turn);\n const status = turn?.status;\n if (frame.method === \"error\") {\n throw makeSendFailure({\n acceptance: sendAcceptanceFromEvents(parsed.events),\n message: `Codex app-server turn failed: ${JSON.stringify(frame.params)}`,\n cause: normalizeExternalCause(frame.params),\n events: parsed.events,\n ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),\n process: state.driver.processReceipt(),\n });\n }\n return {\n status: status === \"failed\" ? \"failed\" : \"completed\", events: parsed.events,\n ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),\n evidenceCoverage: evidence(frames, true, parsed.events),\n };\n}\nexport async function sendCodexAppServer(input: {\n readonly text: string;\n readonly responses?: readonly InputResponse[];\n}, ctx: SandboxAgentContext, env: Readonly<Record<string, string>>, failureFacts?: (raw: string, events: readonly StreamEvent[], nativeText: string) => {\n readonly acceptance: \"rejected\" | \"started\" | \"unknown\";\n readonly cause?: ExternalCause;\n}): Promise<Turn> {\n let state = ctx.session.get(stateSlot);\n if (!state) {\n state = await createState(ctx, env);\n ctx.session.set(stateSlot, state);\n }\n // Anything arriving after the prior turn's terminal cursor is not allowed to\n // become part of a new durable window. Per-turn identity filtering below also\n // protects the race between this snapshot and the next turn/start write.\n if (!state.pending)\n state.cursor = state.driver.cursor();\n const from = state.cursor;\n let turnId = state.pending?.turnId;\n const bufferedProgress: unknown[] = [];\n const unsubscribe = state.driver.subscribeFrames((frame) => {\n if (turnId === undefined)\n bufferedProgress.push(frame);\n else\n reportTurnProgress(frame, state.threadId, turnId, ctx);\n });\n try {\n if (state.pending) {\n const pending = state.pending;\n const answers = validateResponses(pending, input.responses);\n if (state.driver.framesSince(state.cursor).length !== 0) {\n throw new Error(\"Codex app-server produced activity after entering waiting state; refusing an ambiguous answer\");\n }\n try {\n await state.driver.write({ id: pending.rpcId, result: { answers } });\n }\n catch (cause) {\n throw makeSendFailure({\n acceptance: \"started\",\n message: `Codex app-server answer transport failed: ${cause instanceof Error ? cause.message : String(cause)}`,\n cause: normalizeExternalCause(cause),\n process: state.driver.processReceipt(),\n });\n }\n // JSON-RPC response ids are native idempotency identities. Keep pending through\n // validation and transport failure; commit only after the write receipt succeeds.\n state.pending = undefined;\n }\n else {\n if (input.responses?.length)\n throw new Error(\"Codex app-server received responses while no input request was pending\");\n const started = await rpc(state.driver, state.cursor, 10000 + state.cursor, \"turn/start\", {\n threadId: state.threadId,\n input: [{ type: \"text\", text: input.text }],\n approvalPolicy: \"never\",\n sandboxPolicy: { type: \"dangerFullAccess\" },\n ...(ctx.model === undefined ? {} : { model: ctx.model }),\n ...(ctx.reasoningEffort === undefined ? {} : { effort: ctx.reasoningEffort }),\n }, ctx.signal);\n state.cursor = started.cursor;\n const startedTurnId = record(started.result.turn)?.id;\n if (typeof startedTurnId !== \"string\" || startedTurnId === \"\") {\n throw new Error(\"Codex app-server turn/start returned no native turn id\");\n }\n turnId = startedTurnId;\n for (const frame of bufferedProgress)\n reportTurnProgress(frame, state.threadId, turnId, ctx);\n }\n if (turnId === undefined)\n throw new Error(\"Codex app-server send has no native turn id\");\n return await drive(state, ctx, from, turnId);\n }\n catch (cause) {\n if (typeof cause === \"object\" && cause !== null && (cause as {\n type?: unknown;\n }).type === \"agent-send-failed\")\n throw cause;\n const frames = turnId === undefined\n ? []\n : turnFrames(state.driver.framesSince(from), state.threadId, turnId);\n const raw = frames.map((value) => JSON.stringify(value)).join(\"\\n\");\n const message = cause instanceof Error ? cause.message : String(cause);\n const facts = failureFacts?.(raw, protocolEvents(frames, new Set()).events, message);\n throw makeSendFailure({\n acceptance: facts?.acceptance ?? (state.pending === undefined ? \"unknown\" : \"started\"),\n message: `Codex app-server transport failed: ${message} (frames=${state.driver.frameKinds() || \"none\"})`,\n cause: facts?.cause ?? normalizeExternalCause(cause),\n process: state.driver.processReceipt(),\n });\n }\n finally {\n unsubscribe();\n }\n}\n"]}
1
+ {"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["codex-app-server.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InputResponse, SandboxAgentContext, StreamEvent, Turn, TurnEvidenceCoverage, Usage } from \"../types.ts\";\nimport { createSessionSlot } from \"./session-slot.ts\";\nimport { ManagedJsonlDriver } from \"./managed-jsonl.ts\";\nimport { shared } from \"./shared.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents } from \"../context/send-failures.ts\";\nimport { normalizeExternalCause, type ExternalCause } from \"../shared/external-cause.ts\";\nimport { attemptResources } from \"../context/attempt-resources.ts\";\ntype RecordValue = globalThis.Record<string, unknown>;\ntype PendingQuestion = {\n readonly requestId: string;\n readonly nativeQuestionId: string;\n readonly prompt: string;\n readonly options: readonly string[];\n};\ntype PendingBatch = {\n readonly rpcId: string | number;\n readonly turnId: string;\n readonly questions: readonly PendingQuestion[];\n};\ntype CodexState = {\n readonly driver: ManagedJsonlDriver;\n cursor: number;\n readonly threadId: string;\n pending?: PendingBatch;\n readonly reported: Set<string>;\n};\nconst stateSlot = createSessionSlot<CodexState>(\"codex/app-server-native\");\nfunction record(value: unknown): RecordValue | undefined {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) ? value as RecordValue : undefined;\n}\nfunction progressPreview(value: unknown): string | undefined {\n if (typeof value !== \"string\")\n return undefined;\n const text = value.replace(/\\s+/g, \" \").trim();\n if (!text)\n return undefined;\n return text;\n}\nfunction jsonPreview(value: unknown): string | undefined {\n if (value === undefined)\n return undefined;\n try {\n return progressPreview(JSON.stringify(value));\n }\n catch {\n return undefined;\n }\n}\nfunction completedTool(label: string, completed: boolean): string {\n const detail = progressPreview(label) ?? \"tool\";\n return completed ? `tool: ${detail} · completed` : `tool: ${detail}`;\n}\n/** 选择 app-server v2 的可信字段;统一的脱敏、清理与有界化由 Runner ACTIVE 出口负责。 */\nfunction appServerProgressDetail(value: unknown): string | undefined {\n const frame = record(value);\n if (frame?.method !== \"item/started\" && frame?.method !== \"item/completed\")\n return undefined;\n const data = record(record(frame.params)?.item);\n if (!data)\n return undefined;\n const type = typeof data.type === \"string\" ? data.type : \"\";\n const completed = frame.method === \"item/completed\";\n if (type === \"commandExecution\" || type === \"command_execution\") {\n return completedTool(progressPreview(data.command) ?? \"shell\", completed);\n }\n if (type === \"mcpToolCall\" || type === \"mcp_tool_call\") {\n const tool = typeof data.tool === \"string\" ? data.tool : \"MCP\";\n const server = typeof data.server === \"string\" ? `${data.server}.` : \"\";\n const args = jsonPreview(data.arguments ?? data.input);\n return completedTool(`${server}${tool}${args ? ` ${args}` : \"\"}`, completed);\n }\n if (type === \"dynamicToolCall\" || type === \"dynamic_tool_call\") {\n const tool = typeof data.tool === \"string\" ? data.tool : \"dynamic tool\";\n const args = jsonPreview(data.arguments ?? data.input);\n return completedTool(`${tool}${args ? ` ${args}` : \"\"}`, completed);\n }\n if (type === \"webSearch\" || type === \"web_search\") {\n const query = progressPreview(data.query ?? data.search);\n return completedTool(`web search${query ? `: ${query}` : \"\"}`, completed);\n }\n if (type === \"fileChange\" || type === \"file_change\") {\n const paths = Array.isArray(data.changes)\n ? data.changes.flatMap((change) => {\n const path = record(change)?.path;\n return typeof path === \"string\" ? [path] : [];\n }).join(\", \")\n : undefined;\n const detail = progressPreview(paths) ?? progressPreview(data.path);\n return completedTool(`file change${detail ? `: ${detail}` : \"\"}`, completed);\n }\n if (type === \"imageView\" || type === \"image_view\") {\n const path = progressPreview(data.path);\n return completedTool(`image view${path ? `: ${path}` : \"\"}`, completed);\n }\n if (type === \"reasoning\") {\n return \"thinking\";\n }\n if (type === \"agentMessage\" || type === \"agent_message\") {\n return \"assistant response\";\n }\n return undefined;\n}\nfunction eventKey(event: StreamEvent): string | undefined {\n if (event.type === \"operation.started\" || event.type === \"operation.finished\")\n return `${event.type}:${event.operationId}`;\n if (event.type === \"skill.loaded\" && event.operationId)\n return `${event.type}:${event.operationId}`;\n return undefined;\n}\nfunction normalizeItem(value: unknown): unknown {\n const item = record(value);\n if (!item || typeof item.type !== \"string\")\n return value;\n const type = ({\n agentMessage: \"agent_message\",\n commandExecution: \"command_execution\",\n mcpToolCall: \"mcp_tool_call\",\n fileChange: \"file_change\",\n webSearch: \"web_search\",\n } as Record<string, string>)[item.type] ?? item.type;\n return { ...item, type };\n}\nfunction nativeTurnIdentity(value: unknown): {\n readonly threadId: string;\n readonly turnId: string;\n} | undefined {\n const params = record(record(value)?.params);\n if (!params || typeof params.threadId !== \"string\")\n return undefined;\n const directTurnId = params.turnId;\n const nestedTurnId = record(params.turn)?.id;\n const turnId = typeof directTurnId === \"string\"\n ? directTurnId\n : typeof nestedTurnId === \"string\"\n ? nestedTurnId\n : undefined;\n return turnId === undefined ? undefined : { threadId: params.threadId, turnId };\n}\nfunction belongsToTurn(value: unknown, threadId: string, turnId: string): boolean {\n const identity = nativeTurnIdentity(value);\n return identity?.threadId === threadId && identity.turnId === turnId;\n}\nfunction turnFrames(frames: readonly unknown[], threadId: string, turnId: string): readonly unknown[] {\n return frames.filter((frame) => belongsToTurn(frame, threadId, turnId));\n}\nfunction reportTurnProgress(value: unknown, threadId: string, turnId: string, ctx: SandboxAgentContext): void {\n if (!belongsToTurn(value, threadId, turnId))\n return;\n const detail = appServerProgressDetail(value);\n if (detail !== undefined)\n ctx.progress({ message: detail });\n}\nfunction appServerUsage(frames: readonly unknown[]): Usage | undefined {\n for (let index = frames.length - 1; index >= 0; index -= 1) {\n const frame = record(frames[index]);\n if (frame?.method !== \"thread/tokenUsage/updated\")\n continue;\n const last = record(record(record(frame.params)?.tokenUsage)?.last);\n if (!last)\n continue;\n const number = (value: unknown): number => typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? value : 0;\n const rawInput = number(last.inputTokens);\n const cacheReadTokens = number(last.cachedInputTokens);\n const reasoningTokens = number(last.reasoningOutputTokens);\n return {\n inputTokens: Math.max(0, rawInput - cacheReadTokens),\n outputTokens: number(last.outputTokens),\n ...(cacheReadTokens > 0 ? { cacheReadTokens } : {}),\n ...(reasoningTokens > 0 ? { reasoningTokens } : {}),\n requests: 1,\n };\n }\n return undefined;\n}\nfunction protocolEvents(frames: readonly unknown[], reported: Set<string>): {\n events: StreamEvent[];\n usage?: Usage;\n} {\n const normalized = frames.flatMap((value) => {\n const frame = record(value);\n if (!frame || typeof frame.method !== \"string\")\n return [];\n const params = record(frame.params) ?? {};\n const type = frame.method.replaceAll(\"/\", \".\");\n return [{ type, ...params, ...(params.item === undefined ? {} : { item: normalizeItem(params.item) }) }];\n });\n const parsed = shared.parseCodex(normalized.map((frame) => JSON.stringify(frame)).join(\"\\n\"));\n // app-server v2 streams per-turn usage separately from `turn/completed`.\n // `last` is already the current turn's total, so take the latest notification\n // in this send window instead of summing intermediate cumulative updates.\n const usage = appServerUsage(frames) ?? (Object.keys(parsed.usage).length === 0 ? undefined : parsed.usage);\n const events = parsed.events.filter((event) => {\n const key = eventKey(event);\n if (key === undefined)\n return true;\n if (reported.has(key))\n return false;\n reported.add(key);\n return true;\n });\n return { events, ...(usage === undefined ? {} : { usage }) };\n}\nfunction evidence(frames: readonly unknown[], parseSuccess: boolean, events: readonly StreamEvent[]): TurnEvidenceCoverage {\n if (frames.length === 0) {\n const reason = \"Codex app-server protocol output was unavailable; tool trajectory was not observed.\";\n return { events: { status: \"unavailable\", reason }, actions: { status: \"unavailable\", reason }, usage: { status: \"unavailable\", reason } };\n }\n if (!parseSuccess) {\n const reason = \"Some Codex app-server protocol frames could not be parsed.\";\n return { events: { status: \"partial\", reason }, actions: { status: \"partial\", reason } };\n }\n return unclassifiedToolActionsCoverage(events) ?? {};\n}\nasync function resolveBin(sandbox: SandboxAgentContext[\"sandbox\"]): Promise<string> {\n const result = await sandbox.runShell('if [ -x \"$HOME/.local/bin/codex\" ]; then printf %s \"$HOME/.local/bin/codex\"; else command -v codex; fi');\n const value = result.stdout.trim();\n if (result.exitCode !== 0 || !value)\n throw new Error(`Codex CLI path resolution failed: ${result.stderr}`);\n return value;\n}\nasync function rpc(driver: ManagedJsonlDriver, cursor: number, id: number, method: string, params: unknown, signal: AbortSignal): Promise<{\n result: RecordValue;\n cursor: number;\n}> {\n await driver.write({ id, method, params });\n const receipt = await driver.waitFor(cursor, (value) => record(value)?.id === id, signal);\n const frame = record(receipt.frame)!;\n if (frame.error !== undefined)\n throw new Error(`Codex app-server ${method} failed: ${JSON.stringify(frame.error)}`);\n return { result: record(frame.result) ?? {}, cursor: receipt.cursor };\n}\nasync function createState(ctx: SandboxAgentContext, env: Readonly<Record<string, string>>): Promise<CodexState> {\n const resources = attemptResources(ctx);\n if (!resources)\n throw new Error(\"Codex app-server requires an Attempt resource registry\");\n const driver = await ManagedJsonlDriver.start(ctx.sandbox, \"codex\", resources, {\n argv: [\n await resolveBin(ctx.sandbox),\n \"app-server\",\n \"--stdio\",\n \"--enable\", \"default_mode_request_user_input\",\n \"-c\", 'sandbox_mode=\"danger-full-access\"',\n \"-c\", 'approval_policy=\"never\"',\n ],\n cwd: ctx.sandbox.workdir,\n env,\n }, () => ({ id: 9999999, method: \"shutdown\", params: {} }));\n let cursor = 0;\n const initialized = await rpc(driver, cursor, 1, \"initialize\", {\n clientInfo: { name: \"niceeval\", title: \"NiceEval\", version: \"1\" },\n }, ctx.signal);\n cursor = initialized.cursor;\n await driver.write({ method: \"initialized\" });\n const started = await rpc(driver, cursor, 2, \"thread/start\", {\n cwd: ctx.sandbox.workdir,\n ...(ctx.model === undefined ? {} : { model: ctx.model }),\n approvalPolicy: \"never\",\n sandbox: \"danger-full-access\",\n // app-server 没有 `codex exec --dangerously-bypass-hook-trust` 的顶层 flag,\n // 但 thread/start.config 会把这个 runtime-only override 交给同一 ConfigBuilder。\n // Eval Sandbox 中的 hook 出处由 agent 配置显式声明,因此非交互运行统一 bypass。\n config: { bypass_hook_trust: true },\n }, ctx.signal);\n cursor = started.cursor;\n const threadId = record(started.result.thread)?.id;\n if (typeof threadId !== \"string\" || !threadId)\n throw new Error(\"Codex app-server thread/start returned no native thread id\");\n ctx.session.capture(threadId);\n return { driver, cursor, threadId, reported: new Set() };\n}\nfunction validateResponses(pending: PendingBatch, responses: readonly InputResponse[] | undefined): Record<string, {\n answers: string[];\n}> {\n if (!responses)\n throw new Error(\"Codex app-server is waiting for structured input responses\");\n const byId = new Map(responses.map((response) => [response.requestId, response]));\n if (byId.size !== responses.length)\n throw new Error(\"Codex input responses contain duplicate request ids\");\n const expected = new Set(pending.questions.map((question) => question.requestId));\n for (const id of byId.keys())\n if (!expected.has(id))\n throw new Error(`Unknown Codex input request ${id}`);\n if (byId.size !== expected.size)\n throw new Error(\"Codex input responses must answer the complete native question batch\");\n const answers: Record<string, {\n answers: string[];\n }> = {};\n for (const question of pending.questions) {\n const response = byId.get(question.requestId)!;\n const answer = \"optionId\" in response ? response.optionId : response.text;\n if (answer === undefined)\n throw new Error(`Codex input request ${question.requestId} has no answer`);\n if (\"optionId\" in response && response.optionId !== undefined && !question.options.includes(response.optionId)) {\n throw new Error(`Option ${response.optionId} is not available for Codex input request ${question.requestId}`);\n }\n answers[question.nativeQuestionId] = { answers: [answer] };\n }\n return answers;\n}\nfunction waitingTurn(state: CodexState, frame: RecordValue, from: number, cursor: number, turnId: string): Turn {\n const params = record(frame.params) ?? {};\n const questionsRaw = Array.isArray(params.questions) ? params.questions : [];\n const itemId = typeof params.itemId === \"string\" ? params.itemId : \"unknown-item\";\n const questions: PendingQuestion[] = questionsRaw.map((value) => {\n const question = record(value) ?? {};\n const nativeQuestionId = String(question.id ?? \"unknown-question\");\n const options = Array.isArray(question.options)\n ? question.options.map((option) => String(record(option)?.label ?? \"\")).filter(Boolean)\n : [];\n return {\n requestId: `${state.threadId}:${turnId}:${itemId}:${nativeQuestionId}`,\n nativeQuestionId,\n prompt: String(question.question ?? \"\"),\n options,\n };\n });\n if (questions.length === 0)\n throw new Error(\"Codex app-server request_user_input contained no questions\");\n const rpcId = frame.id;\n if (typeof rpcId !== \"string\" && typeof rpcId !== \"number\")\n throw new Error(\"Codex app-server request_user_input had no JSON-RPC id\");\n state.pending = { rpcId, turnId, questions };\n const frames = turnFrames(state.driver.framesSince(from).slice(0, cursor - from), state.threadId, turnId);\n const parsed = protocolEvents(frames, state.reported);\n return {\n status: \"waiting\",\n events: [\n ...parsed.events,\n ...questions.map((question): StreamEvent => ({\n type: \"input.requested\",\n request: {\n id: question.requestId,\n action: \"request_user_input\",\n prompt: question.prompt,\n options: question.options.map((id) => ({ id })),\n },\n })),\n ],\n ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),\n evidenceCoverage: evidence(frames, true, parsed.events),\n };\n}\nasync function drive(state: CodexState, ctx: SandboxAgentContext, from: number, turnId: string): Promise<Turn> {\n const receipt = await state.driver.waitFor(state.cursor, (value) => {\n const frame = record(value);\n if (!belongsToTurn(value, state.threadId, turnId))\n return false;\n if (frame?.method === \"error\") {\n // app-server emits transient stream errors before its own reconnect\n // attempts. They remain part of this turn's evidence, but only an error\n // with no promised retry is terminal for the adapter.\n return record(frame.params)?.willRetry !== true;\n }\n return frame?.method === \"item/tool/requestUserInput\" || frame?.method === \"turn/completed\";\n }, ctx.signal);\n state.cursor = receipt.cursor;\n const frame = record(receipt.frame)!;\n if (frame.method === \"item/tool/requestUserInput\")\n return waitingTurn(state, frame, from, receipt.cursor, turnId);\n const frames = turnFrames(state.driver.framesSince(from).slice(0, receipt.cursor - from), state.threadId, turnId);\n const parsed = protocolEvents(frames, state.reported);\n const turn = record(record(frame.params)?.turn);\n const status = turn?.status;\n if (frame.method === \"error\") {\n throw makeSendFailure({\n acceptance: sendAcceptanceFromEvents(parsed.events),\n message: `Codex app-server turn failed: ${JSON.stringify(frame.params)}`,\n cause: normalizeExternalCause(frame.params),\n events: parsed.events,\n ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),\n process: state.driver.processReceipt(),\n });\n }\n return {\n status: status === \"failed\" ? \"failed\" : \"completed\", events: parsed.events,\n ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),\n evidenceCoverage: evidence(frames, true, parsed.events),\n };\n}\nexport async function sendCodexAppServer(input: {\n readonly text: string;\n readonly responses?: readonly InputResponse[];\n}, ctx: SandboxAgentContext, env: Readonly<Record<string, string>>, failureFacts?: (raw: string, events: readonly StreamEvent[], nativeText: string) => {\n readonly acceptance: \"rejected\" | \"started\" | \"unknown\";\n readonly cause?: ExternalCause;\n}): Promise<Turn> {\n let state = ctx.session.get(stateSlot);\n if (!state) {\n state = await createState(ctx, env);\n ctx.session.set(stateSlot, state);\n }\n // Anything arriving after the prior turn's terminal cursor is not allowed to\n // become part of a new durable window. Per-turn identity filtering below also\n // protects the race between this snapshot and the next turn/start write.\n if (!state.pending)\n state.cursor = state.driver.cursor();\n const from = state.cursor;\n let turnId = state.pending?.turnId;\n const bufferedProgress: unknown[] = [];\n const unsubscribe = state.driver.subscribeFrames((frame) => {\n if (turnId === undefined)\n bufferedProgress.push(frame);\n else\n reportTurnProgress(frame, state.threadId, turnId, ctx);\n });\n try {\n if (state.pending) {\n const pending = state.pending;\n const answers = validateResponses(pending, input.responses);\n if (state.driver.framesSince(state.cursor).length !== 0) {\n throw new Error(\"Codex app-server produced activity after entering waiting state; refusing an ambiguous answer\");\n }\n try {\n await state.driver.write({ id: pending.rpcId, result: { answers } });\n }\n catch (cause) {\n throw makeSendFailure({\n acceptance: \"started\",\n message: `Codex app-server answer transport failed: ${cause instanceof Error ? cause.message : String(cause)}`,\n cause: normalizeExternalCause(cause),\n process: state.driver.processReceipt(),\n });\n }\n // JSON-RPC response ids are native idempotency identities. Keep pending through\n // validation and transport failure; commit only after the write receipt succeeds.\n state.pending = undefined;\n }\n else {\n if (input.responses?.length)\n throw new Error(\"Codex app-server received responses while no input request was pending\");\n const started = await rpc(state.driver, state.cursor, 10000 + state.cursor, \"turn/start\", {\n threadId: state.threadId,\n input: [{ type: \"text\", text: input.text }],\n approvalPolicy: \"never\",\n sandboxPolicy: { type: \"dangerFullAccess\" },\n ...(ctx.model === undefined ? {} : { model: ctx.model }),\n ...(ctx.reasoningEffort === undefined ? {} : { effort: ctx.reasoningEffort }),\n }, ctx.signal);\n state.cursor = started.cursor;\n const startedTurnId = record(started.result.turn)?.id;\n if (typeof startedTurnId !== \"string\" || startedTurnId === \"\") {\n throw new Error(\"Codex app-server turn/start returned no native turn id\");\n }\n turnId = startedTurnId;\n for (const frame of bufferedProgress)\n reportTurnProgress(frame, state.threadId, turnId, ctx);\n }\n if (turnId === undefined)\n throw new Error(\"Codex app-server send has no native turn id\");\n return await drive(state, ctx, from, turnId);\n }\n catch (cause) {\n if (typeof cause === \"object\" && cause !== null && (cause as {\n type?: unknown;\n }).type === \"agent-send-failed\")\n throw cause;\n const frames = turnId === undefined\n ? []\n : turnFrames(state.driver.framesSince(from), state.threadId, turnId);\n const raw = frames.map((value) => JSON.stringify(value)).join(\"\\n\");\n const message = cause instanceof Error ? cause.message : String(cause);\n const facts = failureFacts?.(raw, protocolEvents(frames, new Set()).events, message);\n throw makeSendFailure({\n acceptance: facts?.acceptance ?? (state.pending === undefined ? \"unknown\" : \"started\"),\n message: `Codex app-server transport failed: ${message} (frames=${state.driver.frameKinds() || \"none\"})`,\n cause: facts?.cause ?? normalizeExternalCause(cause),\n process: state.driver.processReceipt(),\n });\n }\n finally {\n unsubscribe();\n }\n}\n"]}
@@ -373,9 +373,9 @@ function costForSlots(slots) {
373
373
  const subjects = [...unique.values()];
374
374
  const observed = subjects.filter(({ analysis }) => analysis.costUSD.observed !== null);
375
375
  const estimated = subjects.filter(({ analysis }) => analysis.costUSD.estimated !== null);
376
- const source = subjects.length > 0 && observed.length === subjects.length
376
+ const source = observed.length >= estimated.length && observed.length > 0
377
377
  ? "observed"
378
- : subjects.length > 0 && estimated.length === subjects.length
378
+ : estimated.length > 0
379
379
  ? "estimated"
380
380
  : null;
381
381
  const valued = source === "observed" ? observed : source === "estimated" ? estimated : [];
@@ -385,7 +385,11 @@ function costForSlots(slots) {
385
385
  return Object.freeze({
386
386
  value,
387
387
  source,
388
- state: source === null ? "unavailable" : "available",
388
+ state: source === null
389
+ ? "unavailable"
390
+ : valued.length < subjects.length
391
+ ? "partial"
392
+ : "available",
389
393
  samples: valued.length,
390
394
  total: subjects.length,
391
395
  basis: "slot",
@@ -1 +1 @@
1
- {"version":3,"file":"overview.js","sourceRoot":"","sources":["overview.ts"],"names":[],"mappings":"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","sourcesContent":["import { foldRecordedAttemptVerdict } from \"../eval/record/verdict.ts\";\nimport type { VerdictState } from \"../eval/record/verdict.ts\";\nimport { Predicate, Result, Schema } from \"effect\";\nimport type { MemberDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RunSlotPublication } from \"../run/index.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport { closeInspectionJson, type InspectionJson, } from \"./codec.ts\";\nimport { attemptAttachment, loadInspectionRuns, readInspectionAssertions, resolveInspectionMemberAttempt, type InspectionAssertionsRead, type LoadedInspectionRun, type ResolvedInspectionAttempt, } from \"./facts.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport { projectAttemptTiming, projectAttemptUsage, } from \"./trace.ts\";\nexport type InspectionMetricState = \"available\" | \"partial\" | \"unavailable\" | \"empty\" | \"unsupported\" | \"failed\";\nexport interface InspectionAttemptRef {\n readonly identity: {\n readonly kind: \"attempt\";\n readonly locator: string;\n };\n}\nexport interface InspectionMetricValue {\n readonly value: number | null;\n readonly state: InspectionMetricState;\n readonly samples: number;\n readonly total: number;\n readonly basis: \"slot\" | \"eval\";\n readonly issues: readonly InspectionJson[];\n readonly refs: readonly InspectionAttemptRef[];\n readonly unit?: \"points\" | \"USD\" | \"ms\" | \"tokens\";\n readonly bounds?: {\n readonly min: number;\n readonly max: number;\n };\n}\nexport interface InspectionCostMetricValue extends InspectionMetricValue {\n readonly source: \"observed\" | \"estimated\" | null;\n}\nexport interface InspectionOverviewDenominator {\n readonly expected: number;\n readonly observed: number;\n readonly classified: number;\n readonly missing: number;\n}\nexport interface InspectionVerdictTally {\n readonly passed: number;\n readonly failed: number;\n readonly errored: number;\n readonly skipped: number;\n}\nexport type InspectionEvaluationKind = \"pass\" | \"points\" | \"mixed\";\nexport interface InspectionOverviewAggregate {\n readonly evaluationKind: InspectionEvaluationKind;\n readonly denominator: InspectionOverviewDenominator;\n readonly verdict: {\n readonly tally: InspectionVerdictTally;\n readonly passRate: InspectionMetricValue;\n };\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n}\nexport interface InspectionOverviewMember {\n readonly runId: string;\n readonly slotId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly labels: InspectionLabels;\n readonly publication: Exclude<RunSlotPublication, {\n readonly state: \"published\";\n }> | (Extract<RunSlotPublication, {\n readonly state: \"published\";\n }> & {\n readonly verdict: VerdictState | null;\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n });\n}\nexport interface InspectionOverviewCell extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly evalId: string;\n readonly groupPath: readonly string[];\n readonly members: readonly InspectionOverviewMember[];\n}\nexport interface InspectionOverviewGroup extends InspectionOverviewAggregate {\n readonly groupPath: readonly string[];\n}\nexport interface InspectionOverviewExperiment extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly agent: InspectionExecutionValue;\n readonly model: InspectionExecutionValue;\n readonly labels: InspectionLabels;\n readonly groups: readonly InspectionOverviewGroup[];\n}\nexport type InspectionExecutionValue = {\n readonly state: \"available\";\n readonly value: string;\n} | {\n readonly state: \"mixed\";\n} | {\n readonly state: \"unavailable\";\n};\nexport type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;\nexport interface InspectionOverview {\n readonly totals: InspectionOverviewAggregate;\n readonly experiments: readonly InspectionOverviewExperiment[];\n readonly cells: readonly InspectionOverviewCell[];\n}\ninterface SelectedSlot {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n readonly member: MemberDocument | undefined;\n readonly resolved: ResolvedInspectionAttempt | undefined;\n readonly analysis: AttemptAnalysis;\n}\ninterface AttemptAnalysis {\n readonly assertionsState: InspectionAssertionsRead[\"state\"] | \"attempt-missing\";\n readonly evaluationKind: \"pass\" | \"points\" | null;\n readonly verdict: VerdictState | null;\n readonly score: {\n readonly hasPoints: boolean;\n readonly earned: number;\n readonly possible: number;\n readonly hasValue: boolean;\n readonly complete: boolean;\n };\n readonly costUSD: {\n readonly observed: number | null;\n readonly estimated: number | null;\n };\n readonly durationMs: OperationalMetric;\n readonly tokens: OperationalMetric;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n readonly ref: InspectionAttemptRef | null;\n}\ninterface OperationalMetric {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\" | \"failed\";\n}\n/**\n * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot\n * and closes the shared machine/Insight Overview without platform APIs.\n */\nexport function selectInspectionOverview(facts: InspectionFactSource | readonly LoadedInspectionRun[], supportingRuns?: readonly LoadedInspectionRun[]): InspectionOverview {\n const runs = isLoadedInspectionRuns(facts) ? facts : loadInspectionRuns(facts);\n const selected = selectLatestSlots(runs, supportingRuns ?? runs);\n const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\\u0000${slot.evalId}`)\n .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ target }) => target.run.experimentId === slots[0]?.target.run.experimentId))));\n const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)\n .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId), inspectionLabelKeys(slots)));\n return closeOverview({\n totals: aggregate(selected, scoreFromCells(cells)),\n experiments,\n cells,\n });\n}\nfunction isLoadedInspectionRuns(facts: InspectionFactSource | readonly LoadedInspectionRun[]): facts is readonly LoadedInspectionRun[] {\n return Array.isArray(facts);\n}\nfunction selectLatestSlots(runs: readonly LoadedInspectionRun[], resolutionRuns: readonly LoadedInspectionRun[] = runs): readonly SelectedSlot[] {\n const latest = new Map<string, {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n }>();\n for (const target of runs) {\n for (const slot of target.run.expectedSlots) {\n const key = `${target.run.experimentId}\\u0000${slot.evalId}\\u0000${slot.attemptOrdinal}`;\n const current = latest.get(key);\n if (current === undefined || compareOccurrence(target, current.target) > 0) {\n latest.set(key, Object.freeze({ target, slot }));\n }\n }\n }\n return Object.freeze([...latest.values()]\n .sort((left, right) => compareText(left.target.run.experimentId, right.target.run.experimentId) ||\n compareText(left.slot.evalId, right.slot.evalId) ||\n left.slot.attemptOrdinal - right.slot.attemptOrdinal ||\n compareText(left.target.run.runId, right.target.run.runId))\n .map(({ target, slot }): SelectedSlot => {\n const member = target.members.find((candidate) => candidate.slotId === slot.slotId);\n const resolved = member === undefined\n ? undefined\n : resolveInspectionMemberAttempt(resolutionRuns, target, member);\n return Object.freeze({\n target,\n slot,\n member,\n resolved,\n analysis: analyzeAttempt(resolved, target, member, slot),\n });\n }));\n}\nfunction compareOccurrence(left: LoadedInspectionRun, right: LoadedInspectionRun): number {\n return left.run.completedAt - right.run.completedAt ||\n left.run.startedAt - right.run.startedAt ||\n compareText(left.run.runId, right.run.runId);\n}\nfunction analyzeAttempt(resolved: ResolvedInspectionAttempt | undefined, target: LoadedInspectionRun, member: MemberDocument | undefined, slot: RecordSlotIdentity): AttemptAnalysis {\n if (resolved === undefined) {\n const hasReference = member?.attempt !== undefined && member.attempt !== null;\n return Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([overviewIssue(hasReference ? \"attempt-origin-missing\" : \"attempt-not-observed\", target.run.runId, slot)]),\n ref: null,\n });\n }\n const ref = attemptRef(resolved.locator);\n const operational = attemptOperationalMetrics(resolved);\n const assertions = readInspectionAssertions(resolved);\n if (assertions.state !== \"available\") {\n return Object.freeze({\n assertionsState: assertions.state,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze([Object.freeze({\n identity: ref.identity,\n state: assertions.state,\n })]),\n issues: assertions.issues,\n ref,\n });\n }\n let earned = 0;\n let possible = 0;\n let hasPoints = false;\n let earnedContributions = 0;\n let unavailableContributions = 0;\n const coverage: InspectionJson[] = [];\n const issues: InspectionJson[] = [];\n for (const entry of assertions.value.entries) {\n const contribution = entry.contribution;\n if (contribution.state === \"earned\") {\n hasPoints = true;\n earned += contribution.earned;\n possible += contribution.points;\n earnedContributions += 1;\n }\n else if (contribution.state === \"unavailable\") {\n hasPoints = true;\n possible += contribution.points;\n unavailableContributions += 1;\n issues.push(Object.freeze({\n code: \"score-contribution-unavailable\",\n locator: resolved.locator,\n entryId: entry.entryId,\n reason: contribution.reason,\n }));\n }\n coverage.push(Object.freeze({\n identity: ref.identity,\n entryId: entry.entryId,\n groupPath: Object.freeze([...entry.display.groupPath]),\n state: entry.materials.coverage.state,\n ...(entry.materials.coverage.state === \"complete\"\n ? {}\n : { reason: entry.materials.coverage.reason }),\n limitations: Object.freeze([...entry.materials.limitations]),\n }));\n }\n return Object.freeze({\n assertionsState: \"available\" as const,\n evaluationKind: hasPoints ? \"points\" as const : \"pass\" as const,\n verdict: foldRecordedAttemptVerdict({\n outcome: resolved.attempt.outcome,\n assertions: assertions.value,\n }),\n score: Object.freeze({\n hasPoints,\n earned,\n possible,\n hasValue: earnedContributions > 0,\n complete: hasPoints && unavailableContributions === 0,\n }),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze(coverage),\n issues: Object.freeze(issues),\n ref,\n });\n}\nfunction makeCell(slots: readonly SelectedSlot[], labelKeys: readonly string[]): InspectionOverviewCell {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview cell cannot be empty\");\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n evalId: first.slot.evalId,\n groupPath: groupPath(first.slot.evalId),\n ...aggregate(slots, scoreForCell(slots)),\n members: Object.freeze(slots.map((selected): InspectionOverviewMember => {\n const resolved = selected.resolved;\n return Object.freeze({\n runId: selected.target.run.runId,\n slotId: selected.slot.slotId,\n evalId: selected.slot.evalId,\n attemptOrdinal: selected.slot.attemptOrdinal,\n labels: inspectionLabels([selected], labelKeys),\n publication: overviewPublication(selected),\n });\n })),\n });\n}\nfunction makeExperiment(slots: readonly SelectedSlot[], cells: readonly InspectionOverviewCell[], labelKeys: readonly string[]): InspectionOverviewExperiment {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview Experiment cannot be empty\");\n const prefixes = new Map<string, SelectedSlot[]>();\n for (const selected of slots) {\n const path = groupPath(selected.slot.evalId);\n for (let length = 1; length <= path.length; length += 1) {\n const prefix = path.slice(0, length);\n const key = prefix.join(\"\\u0000\");\n const values = prefixes.get(key);\n if (values === undefined)\n prefixes.set(key, [selected]);\n else\n values.push(selected);\n }\n }\n const groups = [...prefixes.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([key, values]): InspectionOverviewGroup => Object.freeze({\n groupPath: Object.freeze(key.split(\"\\u0000\")),\n ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split(\"\\u0000\"))))),\n }));\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n agent: executionValue(slots.map(({ target }) => target.run.context.execution.agentId)),\n model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),\n labels: inspectionLabels(slots, labelKeys),\n ...aggregate(slots, scoreFromCells(cells)),\n groups: Object.freeze(groups),\n });\n}\nfunction aggregate(slots: readonly SelectedSlot[], score: InspectionMetricValue): InspectionOverviewAggregate {\n const denominator = denominatorOf(slots);\n const tally = tallyOf(slots);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.issues));\n return Object.freeze({\n evaluationKind: evaluationKindOf(slots),\n denominator,\n verdict: Object.freeze({\n tally,\n passRate: passRateOf(slots, denominator, tally),\n }),\n score,\n costUSD: costForSlots(slots),\n durationMs: metricForSlots(slots, \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots(slots, \"tokens\", \"tokens\", \"sum\"),\n coverage: uniqueJson(slots.flatMap(({ analysis }) => analysis.coverage)),\n issues,\n });\n}\nfunction attemptOperationalMetrics(resolved: ResolvedInspectionAttempt): Pick<AttemptAnalysis, \"durationMs\" | \"tokens\"> {\n const timing = projectAttemptTiming(Object.freeze({\n runnerActivities: attemptAttachment(resolved, NiceEvalRecordAttachments.runnerActivities.attempt.family),\n }));\n const durationMs = timing.activities.reduce<number | null>((maximum, activity) => {\n const end = activity.startOffsetMs + activity.durationMs;\n return Math.max(maximum ?? 0, end);\n }, null);\n const usage = projectAttemptUsage(Object.freeze({\n agentTurns: attemptAttachment(resolved, NiceEvalRecordAttachments.agentTurns.family),\n }));\n const input = usage.totals.inputTokens.value;\n const output = usage.totals.outputTokens.value;\n const tokenValues = [input, output].filter((value): value is number => value !== null);\n return Object.freeze({\n durationMs: Object.freeze({\n value: durationMs,\n state: timing.state === \"invalid\"\n ? \"failed\" as const\n : durationMs === null\n ? \"unavailable\" as const\n : timing.state === \"complete\" && !timing.hasMore\n ? \"available\" as const\n : \"partial\" as const,\n }),\n tokens: Object.freeze({\n value: tokenValues.length === 0 ? null : tokenValues.reduce((total, value) => total + value, 0),\n state: usage.state === \"invalid\"\n ? \"failed\" as const\n : tokenValues.length === 0\n ? \"unavailable\" as const\n : usage.state === \"complete\" && usage.totals.inputTokens.state === \"available\" &&\n usage.totals.outputTokens.state === \"available\"\n ? \"available\" as const\n : \"partial\" as const,\n }),\n });\n}\nfunction unavailableOperationalMetric(): OperationalMetric {\n return Object.freeze({ value: null, state: \"unavailable\" as const });\n}\nfunction metricForSlots(slots: readonly SelectedSlot[], key: \"durationMs\" | \"tokens\", unit: \"ms\" | \"tokens\", fold: \"average\" | \"sum\"): InspectionMetricValue {\n const valued = slots.filter(({ analysis }) => analysis[key].value !== null);\n const total = valued.reduce((sum, { analysis }) => sum + (analysis[key].value ?? 0), 0);\n const value = valued.length === 0 ? null : fold === \"average\" ? total / valued.length : total;\n const failed = slots.some(({ analysis }) => analysis[key].state === \"failed\");\n const partial = valued.length < slots.length || slots.some(({ analysis }) => analysis[key].state === \"partial\");\n return Object.freeze({\n value,\n state: failed ? \"failed\" : valued.length === 0 ? \"unavailable\" : partial ? \"partial\" : \"available\",\n samples: valued.length,\n total: slots.length,\n basis: \"slot\",\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction overviewPublication(selected: SelectedSlot): InspectionOverviewMember[\"publication\"] {\n const { member, resolved } = selected;\n if (member === undefined)\n return Object.freeze({ state: \"pending\" as const });\n if (member.attempt === null) {\n return Object.freeze({\n state: \"absent\" as const,\n reason: member.absenceReason,\n });\n }\n if (resolved === undefined) {\n throw new Error(`Published Slot ${selected.slot.slotId} has no readable Attempt`);\n }\n return Object.freeze({\n state: \"published\" as const,\n action: member.action,\n attemptId: member.attempt.attemptId,\n attemptLocator: resolved.locator,\n originRunId: member.attempt.originRunId,\n originSlotId: resolved.attempt.slotId,\n verdict: selected.analysis.verdict,\n score: scoreForMember(selected),\n costUSD: costForSlots([selected]),\n durationMs: metricForSlots([selected], \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots([selected], \"tokens\", \"tokens\", \"sum\"),\n });\n}\nfunction executionValue(values: readonly (string | null)[]): InspectionExecutionValue {\n const distinct = new Set(values);\n if (distinct.size !== 1)\n return Object.freeze({ state: \"mixed\" as const });\n const value = values[0];\n return value === null || value === undefined\n ? Object.freeze({ state: \"unavailable\" as const })\n : Object.freeze({ state: \"available\" as const, value });\n}\nfunction inspectionLabelKeys(slots: readonly SelectedSlot[]): readonly string[] {\n return Object.freeze([...new Set(slots.flatMap(({ target }) => Object.keys(target.run.context.labels)))].sort(compareText));\n}\nfunction inspectionLabels(slots: readonly SelectedSlot[], keys: readonly string[]): InspectionLabels {\n const targets = new Map<string, LoadedInspectionRun>();\n for (const { target } of slots)\n targets.set(target.run.runId, target);\n const runs = [...targets.values()];\n return Object.freeze(Object.fromEntries(keys.map((key) => [\n key,\n executionValue(runs.map(({ run }) => run.context.labels[key] ?? null)),\n ])));\n}\nfunction costUSDOf(resolved: ResolvedInspectionAttempt): AttemptAnalysis[\"costUSD\"] {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.attemptCost.family);\n if (attachment === undefined ||\n attachment.physical.familyRevision !== NiceEvalCurrentRecordAttachments.attemptCost.revision)\n return unavailableAttemptCost();\n const raw = attachment.value;\n if (!Predicate.isObject(raw))\n return unavailableAttemptCost();\n const decode = Schema.decodeUnknownResult(NiceEvalRecordAttachments.attemptCost.schema, { errors: \"all\", onExcessProperty: \"error\" });\n const observed = Reflect.has(raw, \"observed\")\n ? decode({ observed: Reflect.get(raw, \"observed\") })\n : undefined;\n if (observed !== undefined && Result.isFailure(observed))\n return unavailableAttemptCost();\n const estimated = Reflect.has(raw, \"estimated\")\n ? decode({ estimated: Reflect.get(raw, \"estimated\") })\n : undefined;\n return Object.freeze({\n observed: observed === undefined ? null : observed.success.observed?.amountUSD ?? null,\n estimated: estimated === undefined || Result.isFailure(estimated)\n ? null\n : estimated.success.estimated?.amountUSD ?? null,\n });\n}\nfunction unavailableAttemptCost(): AttemptAnalysis[\"costUSD\"] {\n return Object.freeze({ observed: null, estimated: null });\n}\nfunction costForSlots(slots: readonly SelectedSlot[]): InspectionCostMetricValue {\n const unique = new Map<string, SelectedSlot>();\n for (const slot of slots) {\n const key = slot.resolved?.locator ?? `slot:${slot.target.run.runId}:${slot.slot.slotId}`;\n if (!unique.has(key))\n unique.set(key, slot);\n }\n const subjects = [...unique.values()];\n const observed = subjects.filter(({ analysis }) => analysis.costUSD.observed !== null);\n const estimated = subjects.filter(({ analysis }) => analysis.costUSD.estimated !== null);\n const source = subjects.length > 0 && observed.length === subjects.length\n ? \"observed\" as const\n : subjects.length > 0 && estimated.length === subjects.length\n ? \"estimated\" as const\n : null;\n const valued = source === \"observed\" ? observed : source === \"estimated\" ? estimated : [];\n const value = source === null\n ? null\n : valued.reduce((sum, { analysis }) => sum + (analysis.costUSD[source] ?? 0), 0);\n return Object.freeze({\n value,\n source,\n state: source === null ? \"unavailable\" as const : \"available\" as const,\n samples: valued.length,\n total: subjects.length,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit: \"USD\" as const,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction denominatorOf(slots: readonly SelectedSlot[]): InspectionOverviewDenominator {\n const observed = slots.filter(({ resolved }) => resolved !== undefined).length;\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null).length;\n return Object.freeze({\n expected: slots.length,\n observed,\n classified,\n missing: slots.length - observed,\n });\n}\nfunction tallyOf(slots: readonly SelectedSlot[]): InspectionVerdictTally {\n let passed = 0;\n let failed = 0;\n let errored = 0;\n let skipped = 0;\n for (const { analysis } of slots) {\n switch (analysis.verdict) {\n case \"passed\":\n passed += 1;\n break;\n case \"failed\":\n failed += 1;\n break;\n case \"errored\":\n errored += 1;\n break;\n case \"skipped\":\n skipped += 1;\n break;\n case null: break;\n }\n }\n return Object.freeze({ passed, failed, errored, skipped });\n}\nfunction passRateOf(slots: readonly SelectedSlot[], denominator: InspectionOverviewDenominator, tally: InspectionVerdictTally): InspectionMetricValue {\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.verdict === null ? analysis.issues : []));\n return Object.freeze({\n value: denominator.classified === 0 ? null : tally.passed / denominator.classified,\n state: metricState({\n expected: denominator.expected,\n samples: denominator.classified,\n complete: denominator.classified === denominator.expected,\n analyses: slots.map(({ analysis }) => analysis),\n }),\n samples: denominator.classified,\n total: denominator.expected,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(classified),\n });\n}\nfunction scoreForMember(selected: SelectedSlot): InspectionMetricValue {\n const { analysis } = selected;\n if (analysis.evaluationKind === \"pass\") {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const hasValue = analysis.score.hasPoints && analysis.score.hasValue;\n const complete = hasValue && analysis.score.complete;\n return Object.freeze({\n value: hasValue ? analysis.score.earned : null,\n state: complete\n ? \"available\" as const\n : hasValue\n ? \"partial\" as const\n : metricState({\n expected: 1,\n samples: 0,\n complete: false,\n analyses: [analysis],\n }),\n samples: complete ? 1 : 0,\n total: 1,\n basis: \"slot\" as const,\n issues: uniqueJson([\n ...analysis.issues,\n ...(analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: analysis.score.possible }),\n });\n}\n/** One Experiment × Eval cell: complete point Attempts are averaged. */\nfunction scoreForCell(slots: readonly SelectedSlot[]): InspectionMetricValue {\n const knownPoints = slots.filter(({ analysis }) => analysis.evaluationKind === \"points\");\n const hasKnownPass = slots.some(({ analysis }) => analysis.evaluationKind === \"pass\");\n const unknown = slots.filter(({ analysis }) => analysis.evaluationKind === null);\n if (knownPoints.length === 0 && (hasKnownPass || unknown.length === 0)) {\n return Object.freeze({\n value: null,\n state: slots.length === 0 ? \"empty\" as const : \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n // In mixed historical data, explicit pass Attempts are not point-eligible.\n // Unknown facts remain in the denominator once the cell is known to score.\n const eligible = knownPoints.length === 0\n ? unknown\n : slots.filter(({ analysis }) => analysis.evaluationKind !== \"pass\");\n const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&\n analysis.score.hasValue &&\n analysis.score.complete);\n const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);\n const possible = complete.length === 0\n ? 0\n : complete.reduce((sum, { analysis }) => sum + analysis.score.possible, 0) / complete.length;\n const issues = uniqueJson([\n ...eligible.flatMap(({ analysis }) => analysis.issues),\n ...eligible.flatMap(({ analysis }) => analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]);\n return Object.freeze({\n value: complete.length === 0 ? null : earned / complete.length,\n state: metricState({\n expected: eligible.length,\n samples: complete.length,\n complete: complete.length === eligible.length,\n analyses: eligible.map(({ analysis }) => analysis),\n }),\n samples: complete.length,\n total: eligible.length,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(eligible),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: possible }),\n });\n}\n/** Experiment, path group, and total scores sum their visible cell means. */\nfunction scoreFromCells(cells: readonly InspectionOverviewCell[]): InspectionMetricValue {\n if (cells.length === 0) {\n return Object.freeze({\n value: null,\n state: \"empty\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const eligible = cells.filter(({ evaluationKind }) => evaluationKind !== \"pass\");\n if (eligible.length === 0) {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const valued = eligible.filter(({ score }) => score.value !== null);\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { score }) => sum + (score.value ?? 0), 0);\n const state = valued.length > 0\n ? eligible.every(({ score }) => score.state === \"available\")\n ? \"available\" as const\n : \"partial\" as const\n : aggregateMetricState(eligible.map(({ score }) => score.state));\n return Object.freeze({\n value,\n state,\n samples: valued.length,\n total: eligible.length,\n basis: \"eval\" as const,\n issues: uniqueJson(eligible.flatMap(({ score }) => score.issues)),\n refs: uniqueRefs(eligible.flatMap(({ score }) => score.refs)),\n unit: \"points\" as const,\n bounds: Object.freeze({\n min: 0,\n max: eligible.reduce((sum, { score }) => sum + (score.bounds?.max ?? 0), 0),\n }),\n });\n}\nfunction metricState(input: {\n readonly expected: number;\n readonly samples: number;\n readonly complete: boolean;\n readonly analyses: readonly AttemptAnalysis[];\n}): InspectionMetricState {\n if (input.expected === 0)\n return \"empty\";\n if (input.samples > 0)\n return input.complete ? \"available\" : \"partial\";\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"failed\")) {\n return \"failed\";\n }\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"not-recorded\" || assertionsState === \"unsupported\") &&\n input.analyses.every(({ assertionsState }) => assertionsState !== \"available\" && assertionsState !== \"attempt-missing\")) {\n return \"unsupported\";\n }\n return \"unavailable\";\n}\nfunction evaluationKindOf(slots: readonly SelectedSlot[]): InspectionEvaluationKind {\n const hasPoints = slots.some(({ analysis }) => analysis.evaluationKind === \"points\");\n if (!hasPoints)\n return \"pass\";\n return slots.some(({ analysis }) => analysis.evaluationKind === \"pass\")\n ? \"mixed\"\n : \"points\";\n}\nfunction refsOf(slots: readonly SelectedSlot[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const { analysis } of slots) {\n if (analysis.ref !== null)\n refs.set(analysis.ref.identity.locator, analysis.ref);\n }\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction uniqueRefs(values: readonly InspectionAttemptRef[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const ref of values)\n refs.set(ref.identity.locator, ref);\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction aggregateMetricState(states: readonly InspectionMetricState[]): InspectionMetricState {\n if (states.length === 0)\n return \"empty\";\n if (states.some((state) => state === \"failed\"))\n return \"failed\";\n if (states.every((state) => state === \"unsupported\"))\n return \"unsupported\";\n if (states.some((state) => state === \"partial\"))\n return \"partial\";\n return \"unavailable\";\n}\nfunction scorePartialIssue(analysis: AttemptAnalysis): InspectionJson {\n return Object.freeze({\n code: \"score-partial\",\n locator: analysis.ref?.identity.locator ?? null,\n });\n}\nfunction groupSelectedSlots(slots: readonly SelectedSlot[], keyOf: (slot: SelectedSlot) => string): readonly (readonly SelectedSlot[])[] {\n const groups = new Map<string, SelectedSlot[]>();\n for (const slot of slots) {\n const key = keyOf(slot);\n const values = groups.get(key);\n if (values === undefined)\n groups.set(key, [slot]);\n else\n values.push(slot);\n }\n return Object.freeze([...groups.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, values]) => Object.freeze(values)));\n}\nfunction groupPath(evalId: string): readonly string[] {\n const segments = evalId.split(\"/\").filter((segment) => segment.length > 0);\n return Object.freeze(segments.slice(0, -1));\n}\nfunction hasGroupPrefix(path: readonly string[], prefix: readonly string[]): boolean {\n return prefix.length <= path.length &&\n prefix.every((segment, index) => path[index] === segment);\n}\nfunction attemptRef(locator: string): InspectionAttemptRef {\n return Object.freeze({\n identity: Object.freeze({ kind: \"attempt\" as const, locator }),\n });\n}\nfunction emptyAttemptScore(): AttemptAnalysis[\"score\"] {\n return Object.freeze({\n hasPoints: false,\n earned: 0,\n possible: 0,\n hasValue: false,\n complete: false,\n });\n}\nfunction overviewIssue(code: string, runId: string, slot: RecordSlotIdentity): InspectionJson {\n return Object.freeze({\n code,\n runId,\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n });\n}\nfunction uniqueJson(values: readonly InspectionJson[]): readonly InspectionJson[] {\n const byJson = new Map<string, InspectionJson>();\n for (const value of values)\n byJson.set(JSON.stringify(value), value);\n return Object.freeze([...byJson.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, value]) => value));\n}\nfunction closeOverview(value: InspectionOverview): InspectionOverview {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed)) {\n throw closed;\n }\n return closed as unknown as InspectionOverview;\n}\nfunction isInspectionCodecError(value: InspectionJson | {\n readonly code: string;\n readonly reason: string;\n}): value is {\n readonly code: string;\n readonly reason: string;\n} {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Reflect.get(value, \"code\") === \"inspection-result-invalid\" &&\n typeof Reflect.get(value, \"reason\") === \"string\";\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["overview.ts"],"names":[],"mappings":"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","sourcesContent":["import { foldRecordedAttemptVerdict } from \"../eval/record/verdict.ts\";\nimport type { VerdictState } from \"../eval/record/verdict.ts\";\nimport { Predicate, Result, Schema } from \"effect\";\nimport type { MemberDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RunSlotPublication } from \"../run/index.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport { closeInspectionJson, type InspectionJson, } from \"./codec.ts\";\nimport { attemptAttachment, loadInspectionRuns, readInspectionAssertions, resolveInspectionMemberAttempt, type InspectionAssertionsRead, type LoadedInspectionRun, type ResolvedInspectionAttempt, } from \"./facts.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport { projectAttemptTiming, projectAttemptUsage, } from \"./trace.ts\";\nexport type InspectionMetricState = \"available\" | \"partial\" | \"unavailable\" | \"empty\" | \"unsupported\" | \"failed\";\nexport interface InspectionAttemptRef {\n readonly identity: {\n readonly kind: \"attempt\";\n readonly locator: string;\n };\n}\nexport interface InspectionMetricValue {\n readonly value: number | null;\n readonly state: InspectionMetricState;\n readonly samples: number;\n readonly total: number;\n readonly basis: \"slot\" | \"eval\";\n readonly issues: readonly InspectionJson[];\n readonly refs: readonly InspectionAttemptRef[];\n readonly unit?: \"points\" | \"USD\" | \"ms\" | \"tokens\";\n readonly bounds?: {\n readonly min: number;\n readonly max: number;\n };\n}\nexport interface InspectionCostMetricValue extends InspectionMetricValue {\n readonly source: \"observed\" | \"estimated\" | null;\n}\nexport interface InspectionOverviewDenominator {\n readonly expected: number;\n readonly observed: number;\n readonly classified: number;\n readonly missing: number;\n}\nexport interface InspectionVerdictTally {\n readonly passed: number;\n readonly failed: number;\n readonly errored: number;\n readonly skipped: number;\n}\nexport type InspectionEvaluationKind = \"pass\" | \"points\" | \"mixed\";\nexport interface InspectionOverviewAggregate {\n readonly evaluationKind: InspectionEvaluationKind;\n readonly denominator: InspectionOverviewDenominator;\n readonly verdict: {\n readonly tally: InspectionVerdictTally;\n readonly passRate: InspectionMetricValue;\n };\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n}\nexport interface InspectionOverviewMember {\n readonly runId: string;\n readonly slotId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly labels: InspectionLabels;\n readonly publication: Exclude<RunSlotPublication, {\n readonly state: \"published\";\n }> | (Extract<RunSlotPublication, {\n readonly state: \"published\";\n }> & {\n readonly verdict: VerdictState | null;\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n });\n}\nexport interface InspectionOverviewCell extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly evalId: string;\n readonly groupPath: readonly string[];\n readonly members: readonly InspectionOverviewMember[];\n}\nexport interface InspectionOverviewGroup extends InspectionOverviewAggregate {\n readonly groupPath: readonly string[];\n}\nexport interface InspectionOverviewExperiment extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly agent: InspectionExecutionValue;\n readonly model: InspectionExecutionValue;\n readonly labels: InspectionLabels;\n readonly groups: readonly InspectionOverviewGroup[];\n}\nexport type InspectionExecutionValue = {\n readonly state: \"available\";\n readonly value: string;\n} | {\n readonly state: \"mixed\";\n} | {\n readonly state: \"unavailable\";\n};\nexport type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;\nexport interface InspectionOverview {\n readonly totals: InspectionOverviewAggregate;\n readonly experiments: readonly InspectionOverviewExperiment[];\n readonly cells: readonly InspectionOverviewCell[];\n}\ninterface SelectedSlot {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n readonly member: MemberDocument | undefined;\n readonly resolved: ResolvedInspectionAttempt | undefined;\n readonly analysis: AttemptAnalysis;\n}\ninterface AttemptAnalysis {\n readonly assertionsState: InspectionAssertionsRead[\"state\"] | \"attempt-missing\";\n readonly evaluationKind: \"pass\" | \"points\" | null;\n readonly verdict: VerdictState | null;\n readonly score: {\n readonly hasPoints: boolean;\n readonly earned: number;\n readonly possible: number;\n readonly hasValue: boolean;\n readonly complete: boolean;\n };\n readonly costUSD: {\n readonly observed: number | null;\n readonly estimated: number | null;\n };\n readonly durationMs: OperationalMetric;\n readonly tokens: OperationalMetric;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n readonly ref: InspectionAttemptRef | null;\n}\ninterface OperationalMetric {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\" | \"failed\";\n}\n/**\n * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot\n * and closes the shared machine/Insight Overview without platform APIs.\n */\nexport function selectInspectionOverview(facts: InspectionFactSource | readonly LoadedInspectionRun[], supportingRuns?: readonly LoadedInspectionRun[]): InspectionOverview {\n const runs = isLoadedInspectionRuns(facts) ? facts : loadInspectionRuns(facts);\n const selected = selectLatestSlots(runs, supportingRuns ?? runs);\n const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\\u0000${slot.evalId}`)\n .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ target }) => target.run.experimentId === slots[0]?.target.run.experimentId))));\n const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)\n .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId), inspectionLabelKeys(slots)));\n return closeOverview({\n totals: aggregate(selected, scoreFromCells(cells)),\n experiments,\n cells,\n });\n}\nfunction isLoadedInspectionRuns(facts: InspectionFactSource | readonly LoadedInspectionRun[]): facts is readonly LoadedInspectionRun[] {\n return Array.isArray(facts);\n}\nfunction selectLatestSlots(runs: readonly LoadedInspectionRun[], resolutionRuns: readonly LoadedInspectionRun[] = runs): readonly SelectedSlot[] {\n const latest = new Map<string, {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n }>();\n for (const target of runs) {\n for (const slot of target.run.expectedSlots) {\n const key = `${target.run.experimentId}\\u0000${slot.evalId}\\u0000${slot.attemptOrdinal}`;\n const current = latest.get(key);\n if (current === undefined || compareOccurrence(target, current.target) > 0) {\n latest.set(key, Object.freeze({ target, slot }));\n }\n }\n }\n return Object.freeze([...latest.values()]\n .sort((left, right) => compareText(left.target.run.experimentId, right.target.run.experimentId) ||\n compareText(left.slot.evalId, right.slot.evalId) ||\n left.slot.attemptOrdinal - right.slot.attemptOrdinal ||\n compareText(left.target.run.runId, right.target.run.runId))\n .map(({ target, slot }): SelectedSlot => {\n const member = target.members.find((candidate) => candidate.slotId === slot.slotId);\n const resolved = member === undefined\n ? undefined\n : resolveInspectionMemberAttempt(resolutionRuns, target, member);\n return Object.freeze({\n target,\n slot,\n member,\n resolved,\n analysis: analyzeAttempt(resolved, target, member, slot),\n });\n }));\n}\nfunction compareOccurrence(left: LoadedInspectionRun, right: LoadedInspectionRun): number {\n return left.run.completedAt - right.run.completedAt ||\n left.run.startedAt - right.run.startedAt ||\n compareText(left.run.runId, right.run.runId);\n}\nfunction analyzeAttempt(resolved: ResolvedInspectionAttempt | undefined, target: LoadedInspectionRun, member: MemberDocument | undefined, slot: RecordSlotIdentity): AttemptAnalysis {\n if (resolved === undefined) {\n const hasReference = member?.attempt !== undefined && member.attempt !== null;\n return Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([overviewIssue(hasReference ? \"attempt-origin-missing\" : \"attempt-not-observed\", target.run.runId, slot)]),\n ref: null,\n });\n }\n const ref = attemptRef(resolved.locator);\n const operational = attemptOperationalMetrics(resolved);\n const assertions = readInspectionAssertions(resolved);\n if (assertions.state !== \"available\") {\n return Object.freeze({\n assertionsState: assertions.state,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze([Object.freeze({\n identity: ref.identity,\n state: assertions.state,\n })]),\n issues: assertions.issues,\n ref,\n });\n }\n let earned = 0;\n let possible = 0;\n let hasPoints = false;\n let earnedContributions = 0;\n let unavailableContributions = 0;\n const coverage: InspectionJson[] = [];\n const issues: InspectionJson[] = [];\n for (const entry of assertions.value.entries) {\n const contribution = entry.contribution;\n if (contribution.state === \"earned\") {\n hasPoints = true;\n earned += contribution.earned;\n possible += contribution.points;\n earnedContributions += 1;\n }\n else if (contribution.state === \"unavailable\") {\n hasPoints = true;\n possible += contribution.points;\n unavailableContributions += 1;\n issues.push(Object.freeze({\n code: \"score-contribution-unavailable\",\n locator: resolved.locator,\n entryId: entry.entryId,\n reason: contribution.reason,\n }));\n }\n coverage.push(Object.freeze({\n identity: ref.identity,\n entryId: entry.entryId,\n groupPath: Object.freeze([...entry.display.groupPath]),\n state: entry.materials.coverage.state,\n ...(entry.materials.coverage.state === \"complete\"\n ? {}\n : { reason: entry.materials.coverage.reason }),\n limitations: Object.freeze([...entry.materials.limitations]),\n }));\n }\n return Object.freeze({\n assertionsState: \"available\" as const,\n evaluationKind: hasPoints ? \"points\" as const : \"pass\" as const,\n verdict: foldRecordedAttemptVerdict({\n outcome: resolved.attempt.outcome,\n assertions: assertions.value,\n }),\n score: Object.freeze({\n hasPoints,\n earned,\n possible,\n hasValue: earnedContributions > 0,\n complete: hasPoints && unavailableContributions === 0,\n }),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze(coverage),\n issues: Object.freeze(issues),\n ref,\n });\n}\nfunction makeCell(slots: readonly SelectedSlot[], labelKeys: readonly string[]): InspectionOverviewCell {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview cell cannot be empty\");\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n evalId: first.slot.evalId,\n groupPath: groupPath(first.slot.evalId),\n ...aggregate(slots, scoreForCell(slots)),\n members: Object.freeze(slots.map((selected): InspectionOverviewMember => {\n const resolved = selected.resolved;\n return Object.freeze({\n runId: selected.target.run.runId,\n slotId: selected.slot.slotId,\n evalId: selected.slot.evalId,\n attemptOrdinal: selected.slot.attemptOrdinal,\n labels: inspectionLabels([selected], labelKeys),\n publication: overviewPublication(selected),\n });\n })),\n });\n}\nfunction makeExperiment(slots: readonly SelectedSlot[], cells: readonly InspectionOverviewCell[], labelKeys: readonly string[]): InspectionOverviewExperiment {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview Experiment cannot be empty\");\n const prefixes = new Map<string, SelectedSlot[]>();\n for (const selected of slots) {\n const path = groupPath(selected.slot.evalId);\n for (let length = 1; length <= path.length; length += 1) {\n const prefix = path.slice(0, length);\n const key = prefix.join(\"\\u0000\");\n const values = prefixes.get(key);\n if (values === undefined)\n prefixes.set(key, [selected]);\n else\n values.push(selected);\n }\n }\n const groups = [...prefixes.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([key, values]): InspectionOverviewGroup => Object.freeze({\n groupPath: Object.freeze(key.split(\"\\u0000\")),\n ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split(\"\\u0000\"))))),\n }));\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n agent: executionValue(slots.map(({ target }) => target.run.context.execution.agentId)),\n model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),\n labels: inspectionLabels(slots, labelKeys),\n ...aggregate(slots, scoreFromCells(cells)),\n groups: Object.freeze(groups),\n });\n}\nfunction aggregate(slots: readonly SelectedSlot[], score: InspectionMetricValue): InspectionOverviewAggregate {\n const denominator = denominatorOf(slots);\n const tally = tallyOf(slots);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.issues));\n return Object.freeze({\n evaluationKind: evaluationKindOf(slots),\n denominator,\n verdict: Object.freeze({\n tally,\n passRate: passRateOf(slots, denominator, tally),\n }),\n score,\n costUSD: costForSlots(slots),\n durationMs: metricForSlots(slots, \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots(slots, \"tokens\", \"tokens\", \"sum\"),\n coverage: uniqueJson(slots.flatMap(({ analysis }) => analysis.coverage)),\n issues,\n });\n}\nfunction attemptOperationalMetrics(resolved: ResolvedInspectionAttempt): Pick<AttemptAnalysis, \"durationMs\" | \"tokens\"> {\n const timing = projectAttemptTiming(Object.freeze({\n runnerActivities: attemptAttachment(resolved, NiceEvalRecordAttachments.runnerActivities.attempt.family),\n }));\n const durationMs = timing.activities.reduce<number | null>((maximum, activity) => {\n const end = activity.startOffsetMs + activity.durationMs;\n return Math.max(maximum ?? 0, end);\n }, null);\n const usage = projectAttemptUsage(Object.freeze({\n agentTurns: attemptAttachment(resolved, NiceEvalRecordAttachments.agentTurns.family),\n }));\n const input = usage.totals.inputTokens.value;\n const output = usage.totals.outputTokens.value;\n const tokenValues = [input, output].filter((value): value is number => value !== null);\n return Object.freeze({\n durationMs: Object.freeze({\n value: durationMs,\n state: timing.state === \"invalid\"\n ? \"failed\" as const\n : durationMs === null\n ? \"unavailable\" as const\n : timing.state === \"complete\" && !timing.hasMore\n ? \"available\" as const\n : \"partial\" as const,\n }),\n tokens: Object.freeze({\n value: tokenValues.length === 0 ? null : tokenValues.reduce((total, value) => total + value, 0),\n state: usage.state === \"invalid\"\n ? \"failed\" as const\n : tokenValues.length === 0\n ? \"unavailable\" as const\n : usage.state === \"complete\" && usage.totals.inputTokens.state === \"available\" &&\n usage.totals.outputTokens.state === \"available\"\n ? \"available\" as const\n : \"partial\" as const,\n }),\n });\n}\nfunction unavailableOperationalMetric(): OperationalMetric {\n return Object.freeze({ value: null, state: \"unavailable\" as const });\n}\nfunction metricForSlots(slots: readonly SelectedSlot[], key: \"durationMs\" | \"tokens\", unit: \"ms\" | \"tokens\", fold: \"average\" | \"sum\"): InspectionMetricValue {\n const valued = slots.filter(({ analysis }) => analysis[key].value !== null);\n const total = valued.reduce((sum, { analysis }) => sum + (analysis[key].value ?? 0), 0);\n const value = valued.length === 0 ? null : fold === \"average\" ? total / valued.length : total;\n const failed = slots.some(({ analysis }) => analysis[key].state === \"failed\");\n const partial = valued.length < slots.length || slots.some(({ analysis }) => analysis[key].state === \"partial\");\n return Object.freeze({\n value,\n state: failed ? \"failed\" : valued.length === 0 ? \"unavailable\" : partial ? \"partial\" : \"available\",\n samples: valued.length,\n total: slots.length,\n basis: \"slot\",\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction overviewPublication(selected: SelectedSlot): InspectionOverviewMember[\"publication\"] {\n const { member, resolved } = selected;\n if (member === undefined)\n return Object.freeze({ state: \"pending\" as const });\n if (member.attempt === null) {\n return Object.freeze({\n state: \"absent\" as const,\n reason: member.absenceReason,\n });\n }\n if (resolved === undefined) {\n throw new Error(`Published Slot ${selected.slot.slotId} has no readable Attempt`);\n }\n return Object.freeze({\n state: \"published\" as const,\n action: member.action,\n attemptId: member.attempt.attemptId,\n attemptLocator: resolved.locator,\n originRunId: member.attempt.originRunId,\n originSlotId: resolved.attempt.slotId,\n verdict: selected.analysis.verdict,\n score: scoreForMember(selected),\n costUSD: costForSlots([selected]),\n durationMs: metricForSlots([selected], \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots([selected], \"tokens\", \"tokens\", \"sum\"),\n });\n}\nfunction executionValue(values: readonly (string | null)[]): InspectionExecutionValue {\n const distinct = new Set(values);\n if (distinct.size !== 1)\n return Object.freeze({ state: \"mixed\" as const });\n const value = values[0];\n return value === null || value === undefined\n ? Object.freeze({ state: \"unavailable\" as const })\n : Object.freeze({ state: \"available\" as const, value });\n}\nfunction inspectionLabelKeys(slots: readonly SelectedSlot[]): readonly string[] {\n return Object.freeze([...new Set(slots.flatMap(({ target }) => Object.keys(target.run.context.labels)))].sort(compareText));\n}\nfunction inspectionLabels(slots: readonly SelectedSlot[], keys: readonly string[]): InspectionLabels {\n const targets = new Map<string, LoadedInspectionRun>();\n for (const { target } of slots)\n targets.set(target.run.runId, target);\n const runs = [...targets.values()];\n return Object.freeze(Object.fromEntries(keys.map((key) => [\n key,\n executionValue(runs.map(({ run }) => run.context.labels[key] ?? null)),\n ])));\n}\nfunction costUSDOf(resolved: ResolvedInspectionAttempt): AttemptAnalysis[\"costUSD\"] {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.attemptCost.family);\n if (attachment === undefined ||\n attachment.physical.familyRevision !== NiceEvalCurrentRecordAttachments.attemptCost.revision)\n return unavailableAttemptCost();\n const raw = attachment.value;\n if (!Predicate.isObject(raw))\n return unavailableAttemptCost();\n const decode = Schema.decodeUnknownResult(NiceEvalRecordAttachments.attemptCost.schema, { errors: \"all\", onExcessProperty: \"error\" });\n const observed = Reflect.has(raw, \"observed\")\n ? decode({ observed: Reflect.get(raw, \"observed\") })\n : undefined;\n if (observed !== undefined && Result.isFailure(observed))\n return unavailableAttemptCost();\n const estimated = Reflect.has(raw, \"estimated\")\n ? decode({ estimated: Reflect.get(raw, \"estimated\") })\n : undefined;\n return Object.freeze({\n observed: observed === undefined ? null : observed.success.observed?.amountUSD ?? null,\n estimated: estimated === undefined || Result.isFailure(estimated)\n ? null\n : estimated.success.estimated?.amountUSD ?? null,\n });\n}\nfunction unavailableAttemptCost(): AttemptAnalysis[\"costUSD\"] {\n return Object.freeze({ observed: null, estimated: null });\n}\nfunction costForSlots(slots: readonly SelectedSlot[]): InspectionCostMetricValue {\n const unique = new Map<string, SelectedSlot>();\n for (const slot of slots) {\n const key = slot.resolved?.locator ?? `slot:${slot.target.run.runId}:${slot.slot.slotId}`;\n if (!unique.has(key))\n unique.set(key, slot);\n }\n const subjects = [...unique.values()];\n const observed = subjects.filter(({ analysis }) => analysis.costUSD.observed !== null);\n const estimated = subjects.filter(({ analysis }) => analysis.costUSD.estimated !== null);\n const source = observed.length >= estimated.length && observed.length > 0\n ? \"observed\" as const\n : estimated.length > 0\n ? \"estimated\" as const\n : null;\n const valued = source === \"observed\" ? observed : source === \"estimated\" ? estimated : [];\n const value = source === null\n ? null\n : valued.reduce((sum, { analysis }) => sum + (analysis.costUSD[source] ?? 0), 0);\n return Object.freeze({\n value,\n source,\n state: source === null\n ? \"unavailable\" as const\n : valued.length < subjects.length\n ? \"partial\" as const\n : \"available\" as const,\n samples: valued.length,\n total: subjects.length,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit: \"USD\" as const,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction denominatorOf(slots: readonly SelectedSlot[]): InspectionOverviewDenominator {\n const observed = slots.filter(({ resolved }) => resolved !== undefined).length;\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null).length;\n return Object.freeze({\n expected: slots.length,\n observed,\n classified,\n missing: slots.length - observed,\n });\n}\nfunction tallyOf(slots: readonly SelectedSlot[]): InspectionVerdictTally {\n let passed = 0;\n let failed = 0;\n let errored = 0;\n let skipped = 0;\n for (const { analysis } of slots) {\n switch (analysis.verdict) {\n case \"passed\":\n passed += 1;\n break;\n case \"failed\":\n failed += 1;\n break;\n case \"errored\":\n errored += 1;\n break;\n case \"skipped\":\n skipped += 1;\n break;\n case null: break;\n }\n }\n return Object.freeze({ passed, failed, errored, skipped });\n}\nfunction passRateOf(slots: readonly SelectedSlot[], denominator: InspectionOverviewDenominator, tally: InspectionVerdictTally): InspectionMetricValue {\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.verdict === null ? analysis.issues : []));\n return Object.freeze({\n value: denominator.classified === 0 ? null : tally.passed / denominator.classified,\n state: metricState({\n expected: denominator.expected,\n samples: denominator.classified,\n complete: denominator.classified === denominator.expected,\n analyses: slots.map(({ analysis }) => analysis),\n }),\n samples: denominator.classified,\n total: denominator.expected,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(classified),\n });\n}\nfunction scoreForMember(selected: SelectedSlot): InspectionMetricValue {\n const { analysis } = selected;\n if (analysis.evaluationKind === \"pass\") {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const hasValue = analysis.score.hasPoints && analysis.score.hasValue;\n const complete = hasValue && analysis.score.complete;\n return Object.freeze({\n value: hasValue ? analysis.score.earned : null,\n state: complete\n ? \"available\" as const\n : hasValue\n ? \"partial\" as const\n : metricState({\n expected: 1,\n samples: 0,\n complete: false,\n analyses: [analysis],\n }),\n samples: complete ? 1 : 0,\n total: 1,\n basis: \"slot\" as const,\n issues: uniqueJson([\n ...analysis.issues,\n ...(analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: analysis.score.possible }),\n });\n}\n/** One Experiment × Eval cell: complete point Attempts are averaged. */\nfunction scoreForCell(slots: readonly SelectedSlot[]): InspectionMetricValue {\n const knownPoints = slots.filter(({ analysis }) => analysis.evaluationKind === \"points\");\n const hasKnownPass = slots.some(({ analysis }) => analysis.evaluationKind === \"pass\");\n const unknown = slots.filter(({ analysis }) => analysis.evaluationKind === null);\n if (knownPoints.length === 0 && (hasKnownPass || unknown.length === 0)) {\n return Object.freeze({\n value: null,\n state: slots.length === 0 ? \"empty\" as const : \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n // In mixed historical data, explicit pass Attempts are not point-eligible.\n // Unknown facts remain in the denominator once the cell is known to score.\n const eligible = knownPoints.length === 0\n ? unknown\n : slots.filter(({ analysis }) => analysis.evaluationKind !== \"pass\");\n const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&\n analysis.score.hasValue &&\n analysis.score.complete);\n const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);\n const possible = complete.length === 0\n ? 0\n : complete.reduce((sum, { analysis }) => sum + analysis.score.possible, 0) / complete.length;\n const issues = uniqueJson([\n ...eligible.flatMap(({ analysis }) => analysis.issues),\n ...eligible.flatMap(({ analysis }) => analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]);\n return Object.freeze({\n value: complete.length === 0 ? null : earned / complete.length,\n state: metricState({\n expected: eligible.length,\n samples: complete.length,\n complete: complete.length === eligible.length,\n analyses: eligible.map(({ analysis }) => analysis),\n }),\n samples: complete.length,\n total: eligible.length,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(eligible),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: possible }),\n });\n}\n/** Experiment, path group, and total scores sum their visible cell means. */\nfunction scoreFromCells(cells: readonly InspectionOverviewCell[]): InspectionMetricValue {\n if (cells.length === 0) {\n return Object.freeze({\n value: null,\n state: \"empty\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const eligible = cells.filter(({ evaluationKind }) => evaluationKind !== \"pass\");\n if (eligible.length === 0) {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const valued = eligible.filter(({ score }) => score.value !== null);\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { score }) => sum + (score.value ?? 0), 0);\n const state = valued.length > 0\n ? eligible.every(({ score }) => score.state === \"available\")\n ? \"available\" as const\n : \"partial\" as const\n : aggregateMetricState(eligible.map(({ score }) => score.state));\n return Object.freeze({\n value,\n state,\n samples: valued.length,\n total: eligible.length,\n basis: \"eval\" as const,\n issues: uniqueJson(eligible.flatMap(({ score }) => score.issues)),\n refs: uniqueRefs(eligible.flatMap(({ score }) => score.refs)),\n unit: \"points\" as const,\n bounds: Object.freeze({\n min: 0,\n max: eligible.reduce((sum, { score }) => sum + (score.bounds?.max ?? 0), 0),\n }),\n });\n}\nfunction metricState(input: {\n readonly expected: number;\n readonly samples: number;\n readonly complete: boolean;\n readonly analyses: readonly AttemptAnalysis[];\n}): InspectionMetricState {\n if (input.expected === 0)\n return \"empty\";\n if (input.samples > 0)\n return input.complete ? \"available\" : \"partial\";\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"failed\")) {\n return \"failed\";\n }\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"not-recorded\" || assertionsState === \"unsupported\") &&\n input.analyses.every(({ assertionsState }) => assertionsState !== \"available\" && assertionsState !== \"attempt-missing\")) {\n return \"unsupported\";\n }\n return \"unavailable\";\n}\nfunction evaluationKindOf(slots: readonly SelectedSlot[]): InspectionEvaluationKind {\n const hasPoints = slots.some(({ analysis }) => analysis.evaluationKind === \"points\");\n if (!hasPoints)\n return \"pass\";\n return slots.some(({ analysis }) => analysis.evaluationKind === \"pass\")\n ? \"mixed\"\n : \"points\";\n}\nfunction refsOf(slots: readonly SelectedSlot[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const { analysis } of slots) {\n if (analysis.ref !== null)\n refs.set(analysis.ref.identity.locator, analysis.ref);\n }\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction uniqueRefs(values: readonly InspectionAttemptRef[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const ref of values)\n refs.set(ref.identity.locator, ref);\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction aggregateMetricState(states: readonly InspectionMetricState[]): InspectionMetricState {\n if (states.length === 0)\n return \"empty\";\n if (states.some((state) => state === \"failed\"))\n return \"failed\";\n if (states.every((state) => state === \"unsupported\"))\n return \"unsupported\";\n if (states.some((state) => state === \"partial\"))\n return \"partial\";\n return \"unavailable\";\n}\nfunction scorePartialIssue(analysis: AttemptAnalysis): InspectionJson {\n return Object.freeze({\n code: \"score-partial\",\n locator: analysis.ref?.identity.locator ?? null,\n });\n}\nfunction groupSelectedSlots(slots: readonly SelectedSlot[], keyOf: (slot: SelectedSlot) => string): readonly (readonly SelectedSlot[])[] {\n const groups = new Map<string, SelectedSlot[]>();\n for (const slot of slots) {\n const key = keyOf(slot);\n const values = groups.get(key);\n if (values === undefined)\n groups.set(key, [slot]);\n else\n values.push(slot);\n }\n return Object.freeze([...groups.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, values]) => Object.freeze(values)));\n}\nfunction groupPath(evalId: string): readonly string[] {\n const segments = evalId.split(\"/\").filter((segment) => segment.length > 0);\n return Object.freeze(segments.slice(0, -1));\n}\nfunction hasGroupPrefix(path: readonly string[], prefix: readonly string[]): boolean {\n return prefix.length <= path.length &&\n prefix.every((segment, index) => path[index] === segment);\n}\nfunction attemptRef(locator: string): InspectionAttemptRef {\n return Object.freeze({\n identity: Object.freeze({ kind: \"attempt\" as const, locator }),\n });\n}\nfunction emptyAttemptScore(): AttemptAnalysis[\"score\"] {\n return Object.freeze({\n hasPoints: false,\n earned: 0,\n possible: 0,\n hasValue: false,\n complete: false,\n });\n}\nfunction overviewIssue(code: string, runId: string, slot: RecordSlotIdentity): InspectionJson {\n return Object.freeze({\n code,\n runId,\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n });\n}\nfunction uniqueJson(values: readonly InspectionJson[]): readonly InspectionJson[] {\n const byJson = new Map<string, InspectionJson>();\n for (const value of values)\n byJson.set(JSON.stringify(value), value);\n return Object.freeze([...byJson.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, value]) => value));\n}\nfunction closeOverview(value: InspectionOverview): InspectionOverview {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed)) {\n throw closed;\n }\n return closed as unknown as InspectionOverview;\n}\nfunction isInspectionCodecError(value: InspectionJson | {\n readonly code: string;\n readonly reason: string;\n}): value is {\n readonly code: string;\n readonly reason: string;\n} {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Reflect.get(value, \"code\") === \"inspection-result-invalid\" &&\n typeof Reflect.get(value, \"reason\") === \"string\";\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}