{
  "version": 3,
  "sources": ["../../src/app/ai/agents/evals2/harness/categoryStatistics.ts", "../../src/app/ai/agents/evals2/harness/reportSchemas.ts", "../../src/app/ai/agents/evals2/harness/tokenUsage.ts", "../../src/app/ai/agents/evals2/harness/jsonReport.ts", "../../src/app/ai/agents/evals2/harness/helpers.ts", "../../src/app/ai/agents/evals2/harness/passedAssertionCapture.ts", "../../src/app/ai/agents/evals2/harness/report.ts", "../../src/app/ai/agents/evals2/harness/scoring.ts", "../../src/app/ai/agents/evals2/harness/transcriptInput.ts", "../../src/app/ai/agents/evals2/harness/runner.ts", "../../src/app/ai/agents/evals2/harness/transcriptData.ts", "../../src/app/ai/agents/evals2/harness/uiAdapter.ts", "../../src/app/ai/agents/evals2/harness/browserRunner.ts", "../../src/app/ai/agents/evals2/harness/evalGlobals.ts", "../../src/app/ai/agents/evals2/harness/browserEvalGlobals.ts", "agent-evals-browser-manifest:/Users/alex/Projects/FramerStudio/src/app/vekter/src/app/ai/agents/evals2/harness/bundledEvalFiles.ts", "../../src/app/ai/agents/evals2/harness/definitionFilter.ts", "../../src/app/ai/agents/evals2/harness/importEvalDefinitions.ts", "../../src/app/ai/agents/evals2/harness/modelConfig.ts", "../../src/document/components/chrome/evaluations/evalDefinitions.ts", "../../src/document/components/chrome/evaluations/evalRunState.ts", "../../src/document/components/chrome/evaluations/evalRunner.ts"],
  "sourcesContent": ["import type { AgentEvalCategoryStatisticsByCategory } from \"./reportTypes.ts\"\n\ntype AgentEvalCategory = keyof AgentEvalCategoryStatisticsByCategory\n\nconst categories: Record<AgentEvalCategory, true> = {\n\tcorrectness: true,\n\taccuracy: true,\n\tefficiency: true,\n\tfunctionality: true,\n\tdesign: true,\n}\n\nexport const agentEvalCategories = Object.keys(categories) as readonly AgentEvalCategory[]\n\nexport function createEmptyAgentEvalCategoryStatistics(): AgentEvalCategoryStatisticsByCategory {\n\treturn {\n\t\tcorrectness: { passed: 0, failed: 0, total: 0 },\n\t\taccuracy: { passed: 0, failed: 0, total: 0 },\n\t\tefficiency: { passed: 0, failed: 0, total: 0 },\n\t\tfunctionality: { passed: 0, failed: 0, total: 0 },\n\t\tdesign: { passed: 0, failed: 0, total: 0 },\n\t}\n}\n", "import { isLanguageModel } from \"app/ai/languageModels.ts\"\nimport type { LanguageModel } from \"app/ai/languageModels.ts\"\nimport { isAgentReasoningEffort, type AgentReasoningEffort } from \"app/ai/models.ts\"\nimport { z } from \"zod\"\n\nconst agentEvalCheckCategories = [\"correctness\", \"accuracy\", \"efficiency\", \"functionality\", \"design\"] as const\nexport const agentEvalCheckCategorySchema = z.enum(agentEvalCheckCategories)\nexport const agentEvalCheckKindSchema = z.enum([\"required\", \"forbidden\", \"scored\", \"diagnostic\"])\n\nconst agentEvalCategoryStatisticsSchema = z.object({\n\tpassed: z.number(),\n\tfailed: z.number(),\n\ttotal: z.number(),\n})\n\nexport const agentEvalCategoryStatisticsByCategorySchema = z.record(\n\tagentEvalCheckCategorySchema,\n\tagentEvalCategoryStatisticsSchema,\n)\n\nexport const agentEvalCallbackStatisticsSchema = z.object({\n\texecutedWithoutThrow: z.number(),\n\texecuted: z.number(),\n\tthrew: z.number(),\n\tpassed: z.number(),\n\tfailed: z.number(),\n\ttotal: z.number(),\n})\n\nexport const agentEvalCheckResultSchema = z.object({\n\tid: z.string(),\n\tcategory: agentEvalCheckCategorySchema,\n\tkind: agentEvalCheckKindSchema.optional(),\n\tname: z.string(),\n\tgroup: z.string().optional(),\n\titem: z.string().optional(),\n\tpassed: z.boolean(),\n\tscore: z.number().min(0).max(1).optional(),\n\tmessage: z.string().optional(),\n\tassertion: z.string().optional(),\n\tachievedStep: z.number().optional(),\n\terror: z.string().optional(),\n\texpected: z.string().optional(),\n\treceived: z.string().optional(),\n\tmatcher: z.string().optional(),\n\terrorStack: z.string().optional(),\n\tdurationMs: z.number(),\n})\n\nconst agentEvalRunStatusSchema = z.enum([\"passed\", \"failed\", \"error\", \"stopped\"])\n\nexport const agentEvalRunStatisticsSchema = z.object({\n\tdurationMs: z.number(),\n\ttotalToolSteps: z.number(),\n\tearlyStopped: z.boolean(),\n\tstopStep: z.number().optional(),\n\tcategories: agentEvalCategoryStatisticsByCategorySchema,\n\tcallbacks: agentEvalCallbackStatisticsSchema,\n})\n\nexport const agentEvalTokenUsageSchema = z.object({\n\tinputTokens: z.number().optional(),\n\toutputTokens: z.number().optional(),\n\ttotalTokens: z.number().optional(),\n\treasoningTokens: z.number().optional(),\n})\n\nexport const agentEvalRunResultSchema = z.object({\n\tevalId: z.string(),\n\tfixtureId: z.string(),\n\tname: z.string(),\n\tsourceFile: z.string(),\n\tmodel: z.custom<LanguageModel>(isLanguageModel),\n\treasoningEffort: z.custom<AgentReasoningEffort>(isAgentReasoningEffort).optional(),\n\trunNumber: z.number(),\n\tstatus: agentEvalRunStatusSchema,\n\tscore: z.number().min(0).max(1).optional(),\n\tdurationMs: z.number(),\n\tcost: z.number(),\n\ttokenUsage: agentEvalTokenUsageSchema.optional(),\n\ttotalToolSteps: z.number(),\n\ttoolStepNames: z.array(z.string()).optional(),\n\tstatistics: agentEvalRunStatisticsSchema,\n\tchecks: z.array(agentEvalCheckResultSchema),\n\terror: z.string().optional(),\n\ttranscriptPath: z.string().optional(),\n\terrorStack: z.string().optional(),\n})\n\nconst agentEvalReportSummarySchema = z.object({\n\ttotalRuns: z.number(),\n\tpassedRuns: z.number(),\n\tfailedRuns: z.number(),\n\terrorRuns: z.number(),\n\tstoppedRuns: z.number().default(0),\n\tscore: z.number().min(0).max(1).default(0),\n\tdurationMs: z.number(),\n\tcost: z.number(),\n\ttokenUsage: agentEvalTokenUsageSchema.optional(),\n\ttotalToolSteps: z.number(),\n\ttotalChecks: z.number(),\n\tpassedChecks: z.number(),\n\tfailedChecks: z.number(),\n\tcategories: agentEvalCategoryStatisticsByCategorySchema,\n\tcallbacks: agentEvalCallbackStatisticsSchema,\n})\n\nexport const agentEvalJsonReportSchema = z.object({\n\tschemaVersion: z.literal(1),\n\tgeneratedAt: z.string(),\n\tevaluatedSha: z.string().optional(),\n\tsummary: agentEvalReportSummarySchema,\n\tresults: z.array(agentEvalRunResultSchema),\n})\n", "import type { LanguageModelUsage } from \"ai\"\nimport type { z } from \"zod\"\nimport type { agentEvalTokenUsageSchema } from \"./reportSchemas.ts\"\n\nexport type AgentEvalTokenUsage = z.infer<typeof agentEvalTokenUsageSchema>\n\nexport function toAgentEvalTokenUsage(usage: LanguageModelUsage | undefined): AgentEvalTokenUsage | undefined {\n\tif (usage === undefined) return undefined\n\n\tconst { inputTokens, outputTokens, totalTokens, outputTokenDetails, reasoningTokens } = usage\n\n\tconst tokenUsage: AgentEvalTokenUsage = {\n\t\tinputTokens,\n\t\toutputTokens,\n\t\ttotalTokens,\n\t\treasoningTokens: reasoningTokens ?? outputTokenDetails?.reasoningTokens,\n\t}\n\n\treturn tokenUsage\n}\n\nexport function aggregateAgentEvalTokenUsage(\n\tleft: AgentEvalTokenUsage | undefined,\n\tright: AgentEvalTokenUsage | undefined,\n): AgentEvalTokenUsage | undefined {\n\tif (left === undefined && right === undefined) return undefined\n\n\treturn {\n\t\tinputTokens: sumOptionalTokenCount(left?.inputTokens, right?.inputTokens),\n\t\toutputTokens: sumOptionalTokenCount(left?.outputTokens, right?.outputTokens),\n\t\ttotalTokens: sumOptionalTokenCount(left?.totalTokens, right?.totalTokens),\n\t\treasoningTokens: sumOptionalTokenCount(left?.reasoningTokens, right?.reasoningTokens),\n\t}\n}\n\nfunction sumOptionalTokenCount(left: number | undefined, right: number | undefined): number | undefined {\n\tif (left === undefined && right === undefined) return undefined\n\treturn (left ?? 0) + (right ?? 0)\n}\n\nfunction formatTokenCount(count: number): string {\n\tif (count >= 1_000_000) return `${(count / 1_000_000).toFixed(1)}M`\n\tif (count >= 10_000) return `${Math.round(count / 1_000)}k`\n\tif (count >= 1_000) return `${(count / 1_000).toFixed(1)}k`\n\treturn count.toLocaleString(\"en-US\")\n}\n\nexport function formatTokenUsage(usage: AgentEvalTokenUsage | undefined): string {\n\tif (usage === undefined) return \"-\"\n\n\tconst parts: string[] = []\n\tif (usage.inputTokens !== undefined) parts.push(`${formatTokenCount(usage.inputTokens)} in`)\n\tif (usage.outputTokens !== undefined) parts.push(`${formatTokenCount(usage.outputTokens)} out`)\n\tif (parts.length > 0) {\n\t\tif (usage.reasoningTokens !== undefined && usage.reasoningTokens > 0) {\n\t\t\tparts.push(`${formatTokenCount(usage.reasoningTokens)} reasoning`)\n\t\t}\n\t\treturn parts.join(\" / \")\n\t}\n\n\tif (usage.totalTokens !== undefined) return `${formatTokenCount(usage.totalTokens)} tokens`\n\treturn \"-\"\n}\n", "import { z } from \"zod\"\nimport { agentEvalCategories, createEmptyAgentEvalCategoryStatistics } from \"./categoryStatistics.ts\"\nimport type { AgentEvalJsonReport } from \"./jsonReportTypes.ts\"\nimport { agentEvalJsonReportSchema } from \"./reportSchemas.ts\"\nimport type { AgentEvalCallbackStatistics } from \"./reportTypes.ts\"\nimport { aggregateAgentEvalTokenUsage } from \"./tokenUsage.ts\"\nimport type { AgentEvalTokenUsage } from \"./tokenUsage.ts\"\nimport type { AgentEvalRunResult } from \"./types.ts\"\n\ninterface AgentEvalJsonReportOptions {\n\tevaluatedSha?: string\n}\n\nfunction createEmptyCallbackStatistics(): AgentEvalCallbackStatistics {\n\treturn {\n\t\texecutedWithoutThrow: 0,\n\t\texecuted: 0,\n\t\tthrew: 0,\n\t\tpassed: 0,\n\t\tfailed: 0,\n\t\ttotal: 0,\n\t}\n}\n\nexport function createAgentEvalJsonReport(\n\tresults: readonly AgentEvalRunResult[],\n\toptions: AgentEvalJsonReportOptions = {},\n): AgentEvalJsonReport {\n\tconst categoryStatistics = createEmptyAgentEvalCategoryStatistics()\n\tconst callbacks = createEmptyCallbackStatistics()\n\tlet durationMs = 0\n\tlet cost = 0\n\tlet tokenUsage: AgentEvalTokenUsage | undefined\n\tlet totalToolSteps = 0\n\tlet totalChecks = 0\n\tlet passedChecks = 0\n\tlet failedChecks = 0\n\tlet passedRuns = 0\n\tlet failedRuns = 0\n\tlet errorRuns = 0\n\tlet stoppedRuns = 0\n\tlet score = 0\n\n\tfor (const result of results) {\n\t\tdurationMs += result.statistics.durationMs\n\t\tcost += result.cost\n\t\ttokenUsage = aggregateAgentEvalTokenUsage(tokenUsage, result.tokenUsage)\n\t\ttotalToolSteps += result.statistics.totalToolSteps\n\t\tscore += result.score ?? 0\n\t\ttotalChecks += result.statistics.callbacks.total\n\t\tpassedChecks += result.statistics.callbacks.passed\n\t\tfailedChecks += result.statistics.callbacks.failed\n\t\tif (result.status === \"passed\") passedRuns++\n\t\tif (result.status === \"failed\") failedRuns++\n\t\tif (result.status === \"error\") errorRuns++\n\t\tif (result.status === \"stopped\") stoppedRuns++\n\n\t\tfor (const category of agentEvalCategories) {\n\t\t\tcategoryStatistics[category].passed += result.statistics.categories[category].passed\n\t\t\tcategoryStatistics[category].failed += result.statistics.categories[category].failed\n\t\t\tcategoryStatistics[category].total += result.statistics.categories[category].total\n\t\t}\n\n\t\tcallbacks.executedWithoutThrow += result.statistics.callbacks.executedWithoutThrow\n\t\tcallbacks.executed += result.statistics.callbacks.executed\n\t\tcallbacks.threw += result.statistics.callbacks.threw\n\t\tcallbacks.passed += result.statistics.callbacks.passed\n\t\tcallbacks.failed += result.statistics.callbacks.failed\n\t\tcallbacks.total += result.statistics.callbacks.total\n\t}\n\n\tconst report: AgentEvalJsonReport = {\n\t\tschemaVersion: 1,\n\t\tgeneratedAt: new Date().toISOString(),\n\t\tsummary: {\n\t\t\ttotalRuns: results.length,\n\t\t\tpassedRuns,\n\t\t\tfailedRuns,\n\t\t\terrorRuns,\n\t\t\tstoppedRuns,\n\t\t\tscore: results.length === 0 ? 0 : score / results.length,\n\t\t\tdurationMs,\n\t\t\tcost,\n\t\t\ttokenUsage,\n\t\t\ttotalToolSteps,\n\t\t\ttotalChecks,\n\t\t\tpassedChecks,\n\t\t\tfailedChecks,\n\t\t\tcategories: categoryStatistics,\n\t\t\tcallbacks,\n\t\t},\n\t\tresults: [...results],\n\t\tevaluatedSha: options.evaluatedSha,\n\t}\n\treturn report\n}\n\nexport function parseAgentEvalJsonReport(raw: string, filePath: string): AgentEvalJsonReport {\n\tconst parsed: unknown = JSON.parse(raw)\n\tconst report = agentEvalJsonReportSchema.safeParse(parsed)\n\tif (report.success) return report.data\n\tthrow new Error(`Unsupported agent eval JSON report: ${filePath}\\n${z.prettifyError(report.error)}`)\n}\n", "import { assert } from \"@framerjs/shared\"\nimport type { Agent } from \"app/ai/agents/Agent.ts\"\nimport { type CommandType, isCommand, type Command } from \"app/ai/agents/dsl.ts\"\nimport { isAssistantToolCallPart, isCommandError, isDesignPlan } from \"app/ai/agents/messages.ts\"\nimport type { CommandError, ToolStep } from \"app/ai/agents/messages.ts\"\nimport type { ClarificationQuestion } from \"app/ai/agents/tools/askClarification.ts\"\nimport type { ReadProjectQuery } from \"app/ai/agents/tools/readProject.ts\"\nimport { isReviewChangesToolResponseValue, type ReviewChangesResponse } from \"app/ai/agents/tools/reviewChanges.ts\"\nimport type { AgentScriptRecordedCall } from \"app/ai/agents/tools/script/bridge.ts\"\nimport {\n\tASK_CLARIFICATION_TOOL_NAME,\n\tREAD_PROJECT_TOOL_NAME,\n\tREVIEW_CHANGES_TOOL_NAME,\n\tSCRIPT_TOOL_NAME,\n} from \"app/ai/agents/tools/toolNames.ts\"\nimport type { AgentTypedToolCall, AgentTypedToolResult } from \"app/ai/agents/tools/toolSet.ts\"\nimport type { AgentRequest } from \"app/ai/agents/types.ts\"\nimport type { NodeID } from \"document/models/CanvasTree/nodes/NodeID.ts\"\nimport { isObject } from \"utils/typeChecks.ts\"\nimport type { AgentEvalReport } from \"./reportTypes.ts\"\n\nconst PROJECT_MUTATION_SCRIPT_PATTERN = /\\bapi\\.updateProject\\s*\\(/u\n\nexport type AgentEvalStepPart = ToolStep[\"content\"][number]\n\nexport interface AgentEvalPartPosition {\n\tstepIndex: number\n\tpartIndex: number\n}\n\nexport interface AgentEvalPositionedPart {\n\tposition: AgentEvalPartPosition\n\tpart: AgentEvalStepPart\n}\n\nexport type AgentEvalToolCallName = AgentTypedToolCall[\"toolName\"]\nexport type AgentEvalToolCallForName<TName extends AgentEvalToolCallName> = Extract<\n\tAgentTypedToolCall,\n\t{ toolName: TName }\n>\ntype AgentEvalToolInputForName<TName extends AgentEvalToolCallName> =\n\tAgentEvalToolCallForName<TName> extends {\n\t\tinput: infer TInput\n\t}\n\t\t? TInput\n\t\t: never\n\nexport type AgentEvalToolResult = AgentTypedToolResult & {\n\tstepIndex: number\n}\n\nexport type AgentEvalToolResultName = AgentTypedToolResult[\"toolName\"]\nexport type AgentEvalToolResultForName<TName extends AgentEvalToolResultName> = Extract<\n\tAgentTypedToolResult,\n\t{ toolName: TName }\n> & {\n\tstepIndex: number\n}\nexport type AgentEvalScriptCallMethod = AgentScriptRecordedCall[\"method\"]\nexport type AgentEvalScriptCallForMethod<TMethod extends AgentEvalScriptCallMethod> = Extract<\n\tAgentScriptRecordedCall,\n\t{ method: TMethod }\n>\nexport type AgentEvalPositionedScriptCall = AgentScriptRecordedCall & {\n\tposition: AgentEvalPartPosition\n\t/** entire script in which the call occurred */\n\tscript: string\n}\nexport type AgentEvalPositionedScriptCallForMethod<TMethod extends AgentEvalScriptCallMethod> =\n\tAgentEvalScriptCallForMethod<TMethod> & {\n\t\tposition: AgentEvalPartPosition\n\t\t/** entire script in which the call occurred */\n\t\tscript: string\n\t}\n\nexport interface AgentEvalScriptRunInstrumentation {\n\tcallCount: number\n}\n\nexport interface AgentEvalScriptInstrumentationState {\n\tcalls: AgentScriptRecordedCall[]\n}\n\nexport interface AgentEvalClarificationQuestionGroup {\n\tstepIndex: number\n\tquestions: readonly ClarificationQuestion[]\n}\n\n/**\n * Generic transcript queries for an eval run.\n *\n * Keep this layer about the agent transcript itself: ordered step parts, tool-call positions, and\n * command/script mutation boundaries. Fixture-specific document assertions should live in scenario\n * helpers instead of growing the harness API.\n */\nexport interface AgentEvalStepsHelper {\n\tall(): readonly ToolStep[]\n\tlast(): ToolStep | undefined\n\tparts(): readonly AgentEvalPositionedPart[]\n\tdesignPlans(): readonly string[]\n\tfirstDesignPlanPosition(): AgentEvalPartPosition | undefined\n\treadProjectQueries(predicate?: (query: ReadProjectQuery) => boolean): readonly ReadProjectQuery[]\n\tfirstPartPosition(\n\t\tpredicate: (part: AgentEvalStepPart, position: AgentEvalPartPosition) => boolean,\n\t): AgentEvalPartPosition | undefined\n\tfirstToolCallPosition<TName extends AgentEvalToolCallName>(\n\t\tname: TName,\n\t\tpredicate?: (call: AgentEvalToolCallForName<TName>, position: AgentEvalPartPosition) => boolean,\n\t): AgentEvalPartPosition | undefined\n\tfirstReadProjectQueryPosition(predicate: (query: ReadProjectQuery) => boolean): AgentEvalPartPosition | undefined\n\tfirstScriptPosition(predicate: (script: string) => boolean): AgentEvalPartPosition | undefined\n\tfirstProjectMutationPosition(): AgentEvalPartPosition | undefined\n\thasPartAtOrBefore(\n\t\tposition: AgentEvalPartPosition,\n\t\tpredicate: (part: AgentEvalStepPart, position: AgentEvalPartPosition) => boolean,\n\t): boolean\n\thasReadProjectQueryAtOrBefore(\n\t\tposition: AgentEvalPartPosition,\n\t\tpredicate: (query: ReadProjectQuery) => boolean,\n\t): boolean\n\tcomparePositions(left: AgentEvalPartPosition, right: AgentEvalPartPosition): number\n\texpectBefore(left: AgentEvalPartPosition | undefined, right: AgentEvalPartPosition | undefined): void\n\texpectNoReviewBeforeMutation(): void\n}\n\n/**\n * Generic tool transcript queries for an eval run.\n *\n * The low-level methods (`calls`, `results`, `inputs`, `firstCall`) work for every agent tool. The\n * named conveniences below cover high-frequency eval assertions while still staying transcript-only.\n */\nexport interface AgentEvalToolsHelper {\n\tcalls(): readonly AgentTypedToolCall[]\n\tcalls<TName extends AgentEvalToolCallName>(name: TName): readonly AgentEvalToolCallForName<TName>[]\n\tresults(): readonly AgentEvalToolResult[]\n\tresults<TName extends AgentEvalToolResultName>(name: TName): readonly AgentEvalToolResultForName<TName>[]\n\tinputs<TName extends AgentEvalToolCallName>(name: TName): readonly AgentEvalToolInputForName<TName>[]\n\tfirstCall<TName extends AgentEvalToolCallName>(\n\t\tname: TName,\n\t\tpredicate?: (call: AgentEvalToolCallForName<TName>) => boolean,\n\t): AgentEvalToolCallForName<TName> | undefined\n\thasCall<TName extends AgentEvalToolCallName>(\n\t\tname: TName,\n\t\tpredicate?: (call: AgentEvalToolCallForName<TName>) => boolean,\n\t): boolean\n\tfirstResult<TName extends AgentEvalToolResultName>(\n\t\tname: TName,\n\t\tpredicate?: (result: AgentEvalToolResultForName<TName>) => boolean,\n\t): AgentEvalToolResultForName<TName> | undefined\n\thasResult<TName extends AgentEvalToolResultName>(\n\t\tname: TName,\n\t\tpredicate?: (result: AgentEvalToolResultForName<TName>) => boolean,\n\t): boolean\n\treadProjectQueries(predicate?: (query: ReadProjectQuery) => boolean): readonly ReadProjectQuery[]\n\treadProjectResults(\n\t\tpredicate?: (query: ReadProjectQuery) => boolean,\n\t): readonly AgentEvalToolResultForName<typeof READ_PROJECT_TOOL_NAME>[]\n\tfirstReadProjectResult(\n\t\tpredicate?: (query: ReadProjectQuery) => boolean,\n\t): AgentEvalToolResultForName<typeof READ_PROJECT_TOOL_NAME> | undefined\n\thasReadProjectQuery(predicate: (query: ReadProjectQuery) => boolean): boolean\n\tscriptInputs(predicate?: (script: string) => boolean): readonly string[]\n\tscriptCalls(): readonly AgentEvalPositionedScriptCall[]\n\tscriptCalls<TMethod extends AgentEvalScriptCallMethod>(\n\t\tmethod: TMethod,\n\t\tpredicate?: (call: AgentEvalPositionedScriptCallForMethod<TMethod>) => boolean,\n\t): readonly AgentEvalPositionedScriptCallForMethod<TMethod>[]\n\thasScriptCall<TMethod extends AgentEvalScriptCallMethod>(\n\t\tmethod: TMethod,\n\t\tpredicate?: (call: AgentEvalPositionedScriptCallForMethod<TMethod>) => boolean,\n\t): boolean\n\tnodeLookups(idOrPredicate: NodeID | ((id: NodeID) => boolean)): readonly AgentEvalPositionedScriptCall[]\n\tfirstNodeLookup(idOrPredicate: NodeID | ((id: NodeID) => boolean)): AgentEvalPositionedScriptCall | undefined\n\thasNodeLookup(idOrPredicate: NodeID | ((id: NodeID) => boolean)): boolean\n\tclarificationQuestions(): readonly AgentEvalClarificationQuestionGroup[]\n\tclarificationQuestionText(): string\n\tcommandErrors(): readonly CommandError[]\n\treviewChangesResults(): readonly ReviewChangesResponse[]\n\treportNoReadProject(report: AgentEvalReport): void\n\treportNoReviewBeforeMutation(report: AgentEvalReport): void\n\treportReplayContinued(report: AgentEvalReport, options: AgentEvalReplayContinuedOptions): void\n\treportReplayChecks(report: AgentEvalReport, options?: AgentEvalReplayChecksOptions): void\n}\n\nexport interface AgentEvalCommandsHelper {\n\tall(): readonly Command[]\n\tfirst(): Command | undefined\n\tbyType<T extends CommandType>(type: T): readonly Extract<Command, { type: T }>[]\n}\n\ninterface AgentEvalHelpers {\n\tsteps: AgentEvalStepsHelper\n\ttools: AgentEvalToolsHelper\n\tcommands: AgentEvalCommandsHelper\n}\n\ninterface AgentEvalHelperSource {\n\tagent: Pick<Agent, \"chatMessages\">\n\tcurrent?: {\n\t\trequest: AgentRequest\n\t}\n\trequestStartIndex?: number\n\tscriptInstrumentationState?: AgentEvalScriptInstrumentationState\n}\n\nexport interface AgentEvalReplayChecksOptions {\n\trequestId?: string\n\tstepIndex?: number\n\tforbidReadProject?: boolean\n}\n\nexport interface AgentEvalReplayContinuedOptions {\n\trequestId?: string\n\tstepIndex?: number\n}\n\nfunction getLatestRequest(source: AgentEvalHelperSource): AgentRequest | undefined {\n\treturn source.current?.request ?? source.agent.chatMessages.at(-1)\n}\n\nfunction getHelperRequests(source: AgentEvalHelperSource): readonly AgentRequest[] {\n\tconst requestStartIndex = source.requestStartIndex\n\tif (requestStartIndex === undefined) {\n\t\tconst request = getLatestRequest(source)\n\t\treturn request === undefined ? [] : [request]\n\t}\n\n\tconst requests = source.agent.chatMessages.slice(requestStartIndex)\n\tconst currentRequest = source.current?.request\n\tif (currentRequest === undefined || requests.includes(currentRequest)) return requests\n\treturn [...requests, currentRequest]\n}\n\nfunction isClarificationQuestion(value: unknown): value is ClarificationQuestion {\n\tif (!isObject(value)) return false\n\tif (typeof value.question !== \"string\") return false\n\tif (!Array.isArray(value.suggestedAnswers)) return false\n\treturn value.suggestedAnswers.every(answer => {\n\t\treturn (\n\t\t\ttypeof answer === \"string\" ||\n\t\t\t(isObject(answer) && typeof answer.answer === \"string\" && typeof answer.description === \"string\")\n\t\t)\n\t})\n}\n\nfunction formatClarificationQuestionText(questions: readonly ClarificationQuestion[]): string {\n\treturn questions\n\t\t.map(question => question.question)\n\t\t.join(\" \")\n\t\t.toLowerCase()\n}\n\nfunction getClarificationQuestionsFromInput(input: unknown): readonly ClarificationQuestion[] {\n\tif (!isObject(input) || !Array.isArray(input.questions)) return []\n\treturn input.questions.filter(isClarificationQuestion)\n}\n\nfunction collectClarificationQuestions(steps: readonly ToolStep[]): readonly AgentEvalClarificationQuestionGroup[] {\n\tconst clarificationQuestions: AgentEvalClarificationQuestionGroup[] = []\n\tfor (const { part, position } of getPositionedParts(steps)) {\n\t\tif (!isAssistantToolCallPart(part) || !isToolCallForName(part.content, ASK_CLARIFICATION_TOOL_NAME)) continue\n\t\tclarificationQuestions.push({\n\t\t\tstepIndex: position.stepIndex,\n\t\t\tquestions: getClarificationQuestionsFromInput(part.content.input),\n\t\t})\n\t}\n\treturn clarificationQuestions\n}\n\nfunction getReadProjectQueries(input: unknown): readonly ReadProjectQuery[] {\n\tif (!isObject(input) || !Array.isArray(input.queries)) return []\n\treturn input.queries.filter((query): query is ReadProjectQuery => isObject(query) && typeof query.type === \"string\")\n}\n\nfunction getPositionedParts(steps: readonly ToolStep[]): readonly AgentEvalPositionedPart[] {\n\tconst positionedParts: AgentEvalPositionedPart[] = []\n\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\tconst step = steps[stepIndex]\n\t\tassert(step !== undefined, `Expected eval step ${stepIndex} to exist.`)\n\t\tfor (let partIndex = 0; partIndex < step.content.length; partIndex++) {\n\t\t\tconst part = step.content[partIndex]\n\t\t\tassert(part !== undefined, `Expected eval step part ${stepIndex}:${partIndex} to exist.`)\n\t\t\tpositionedParts.push({ position: { stepIndex, partIndex }, part })\n\t\t}\n\t}\n\treturn positionedParts\n}\n\nfunction comparePartPositions(left: AgentEvalPartPosition, right: AgentEvalPartPosition): number {\n\treturn left.stepIndex - right.stepIndex || left.partIndex - right.partIndex\n}\n\nfunction getReadProjectQueriesFromPart(part: AgentEvalStepPart): readonly ReadProjectQuery[] {\n\tif (!isAssistantToolCallPart(part) || part.content.toolName !== READ_PROJECT_TOOL_NAME) return []\n\treturn getReadProjectQueries(part.content.input)\n}\n\nfunction getScriptInput(part: AgentEvalStepPart): string | undefined {\n\tif (!isAssistantToolCallPart(part) || part.content.toolName !== SCRIPT_TOOL_NAME) return undefined\n\treturn part.content.input.script\n}\n\nfunction isProjectMutationPart(part: AgentEvalStepPart): boolean {\n\tconst script = getScriptInput(part)\n\treturn Array.isArray(part) || (script !== undefined && PROJECT_MUTATION_SCRIPT_PATTERN.test(script))\n}\n\nfunction collectReadProjectQueriesFromSteps(\n\tsteps: readonly ToolStep[],\n\tpredicate: (query: ReadProjectQuery) => boolean = () => true,\n): readonly ReadProjectQuery[] {\n\tconst queries: ReadProjectQuery[] = []\n\tfor (const step of steps) {\n\t\tfor (const part of step.content) {\n\t\t\tfor (const query of getReadProjectQueriesFromPart(part)) {\n\t\t\t\tif (predicate(query)) queries.push(query)\n\t\t\t}\n\t\t}\n\t}\n\treturn queries\n}\n\nfunction collectCommandParts(steps: readonly ToolStep[]): {\n\tcommands: readonly Command[]\n\terrors: readonly CommandError[]\n} {\n\tconst commands: Command[] = []\n\tconst errors: CommandError[] = []\n\tfor (const step of steps) {\n\t\tfor (const part of step.content) {\n\t\t\tif (!Array.isArray(part)) continue\n\t\t\tfor (const line of part) {\n\t\t\t\tif (isCommand(line)) commands.push(line)\n\t\t\t\tif (isCommandError(line)) errors.push(line)\n\t\t\t}\n\t\t}\n\t}\n\treturn { commands, errors }\n}\n\nfunction isToolCallForName<TName extends AgentEvalToolCallName>(\n\tcall: AgentTypedToolCall,\n\tname: TName,\n): call is AgentEvalToolCallForName<TName> {\n\treturn call.toolName === name\n}\n\nfunction isToolResultForName<TName extends AgentEvalToolResultName>(\n\tresult: AgentTypedToolResult,\n\tname: TName,\n): result is Extract<AgentTypedToolResult, { toolName: TName }> {\n\treturn result.toolName === name\n}\n\nfunction addStepIndex<TToolResult extends AgentTypedToolResult>(\n\tresult: TToolResult,\n\tstepIndex: number,\n): TToolResult & { stepIndex: number } {\n\treturn { ...result, stepIndex }\n}\n\nfunction collectToolCalls(steps: readonly ToolStep[]): readonly AgentTypedToolCall[]\nfunction collectToolCalls<TName extends AgentEvalToolCallName>(\n\tsteps: readonly ToolStep[],\n\tname: TName,\n): readonly AgentEvalToolCallForName<TName>[]\nfunction collectToolCalls<TName extends AgentEvalToolCallName>(\n\tsteps: readonly ToolStep[],\n\tname?: TName,\n): readonly AgentTypedToolCall[] | readonly AgentEvalToolCallForName<TName>[] {\n\tconst calls: AgentTypedToolCall[] = []\n\tfor (const step of steps) {\n\t\tfor (const part of step.content) {\n\t\t\tif (!isAssistantToolCallPart(part)) continue\n\t\t\tif (name !== undefined && !isToolCallForName(part.content, name)) continue\n\t\t\tcalls.push(part.content)\n\t\t}\n\t}\n\treturn calls\n}\n\nfunction collectToolResults(steps: readonly ToolStep[]): readonly AgentEvalToolResult[]\nfunction collectToolResults<TName extends AgentEvalToolResultName>(\n\tsteps: readonly ToolStep[],\n\tname: TName,\n): readonly AgentEvalToolResultForName<TName>[]\nfunction collectToolResults<TName extends AgentEvalToolResultName>(\n\tsteps: readonly ToolStep[],\n\tname?: TName,\n): readonly AgentEvalToolResult[] | readonly AgentEvalToolResultForName<TName>[] {\n\tif (name === undefined) {\n\t\tconst results: AgentEvalToolResult[] = []\n\t\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\t\tconst step = steps[stepIndex]\n\t\t\tassert(step !== undefined, `Expected eval step ${stepIndex} to exist.`)\n\t\t\tfor (const result of step.toolResults) {\n\t\t\t\tresults.push(addStepIndex(result, stepIndex))\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tconst results: AgentEvalToolResultForName<TName>[] = []\n\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\tconst step = steps[stepIndex]\n\t\tassert(step !== undefined, `Expected eval step ${stepIndex} to exist.`)\n\t\tfor (const result of step.toolResults) {\n\t\t\tif (!isToolResultForName(result, name)) continue\n\t\t\tresults.push(addStepIndex(result, stepIndex))\n\t\t}\n\t}\n\treturn results\n}\n\nfunction createToolCallsHelper(getSteps: () => readonly ToolStep[]): AgentEvalToolsHelper[\"calls\"] {\n\tfunction calls(): readonly AgentTypedToolCall[]\n\tfunction calls<TName extends AgentEvalToolCallName>(name: TName): readonly AgentEvalToolCallForName<TName>[]\n\tfunction calls<TName extends AgentEvalToolCallName>(\n\t\tname?: TName,\n\t): readonly AgentTypedToolCall[] | readonly AgentEvalToolCallForName<TName>[] {\n\t\tif (name === undefined) return collectToolCalls(getSteps())\n\t\treturn collectToolCalls(getSteps(), name)\n\t}\n\treturn calls\n}\n\nfunction createToolResultsHelper(getSteps: () => readonly ToolStep[]): AgentEvalToolsHelper[\"results\"] {\n\tfunction results(): readonly AgentEvalToolResult[]\n\tfunction results<TName extends AgentEvalToolResultName>(name: TName): readonly AgentEvalToolResultForName<TName>[]\n\tfunction results<TName extends AgentEvalToolResultName>(\n\t\tname?: TName,\n\t): readonly AgentEvalToolResult[] | readonly AgentEvalToolResultForName<TName>[] {\n\t\tif (name === undefined) return collectToolResults(getSteps())\n\t\treturn collectToolResults(getSteps(), name)\n\t}\n\treturn results\n}\n\nfunction createToolInputsHelper(getSteps: () => readonly ToolStep[]): AgentEvalToolsHelper[\"inputs\"] {\n\treturn function inputs<TName extends AgentEvalToolCallName>(\n\t\tname: TName,\n\t): readonly AgentEvalToolInputForName<TName>[] {\n\t\tconst toolInputs: AgentEvalToolInputForName<TName>[] = []\n\t\tfor (const call of collectToolCalls(getSteps(), name)) {\n\t\t\t// collectToolCalls filters by the same name, but TypeScript cannot keep that\n\t\t\t// relationship through the generic union of all typed tool inputs.\n\t\t\ttoolInputs.push(call.input as AgentEvalToolInputForName<TName>)\n\t\t}\n\t\treturn toolInputs\n\t}\n}\n\nfunction createFirstToolCallHelper(getSteps: () => readonly ToolStep[]): AgentEvalToolsHelper[\"firstCall\"] {\n\treturn function firstCall<TName extends AgentEvalToolCallName>(\n\t\tname: TName,\n\t\tpredicate: (call: AgentEvalToolCallForName<TName>) => boolean = () => true,\n\t): AgentEvalToolCallForName<TName> | undefined {\n\t\treturn collectToolCalls(getSteps(), name).find(predicate)\n\t}\n}\n\nfunction createFirstToolResultHelper(getSteps: () => readonly ToolStep[]): AgentEvalToolsHelper[\"firstResult\"] {\n\treturn function firstResult<TName extends AgentEvalToolResultName>(\n\t\tname: TName,\n\t\tpredicate: (result: AgentEvalToolResultForName<TName>) => boolean = () => true,\n\t): AgentEvalToolResultForName<TName> | undefined {\n\t\treturn collectToolResults(getSteps(), name).find(predicate)\n\t}\n}\n\nfunction createScriptCallsHelper(\n\toptions: AgentEvalHelpersOptions,\n\tgetScriptInstrumentationState: () => AgentEvalScriptInstrumentationState | undefined,\n\tgetSteps: () => readonly ToolStep[],\n): AgentEvalToolsHelper[\"scriptCalls\"] {\n\tfunction scriptCalls(): readonly AgentEvalPositionedScriptCall[]\n\tfunction scriptCalls<TMethod extends AgentEvalScriptCallMethod>(\n\t\tmethod: TMethod,\n\t\tpredicate?: (call: AgentEvalPositionedScriptCallForMethod<TMethod>) => boolean,\n\t): readonly AgentEvalPositionedScriptCallForMethod<TMethod>[]\n\tfunction scriptCalls<TMethod extends AgentEvalScriptCallMethod>(\n\t\tmethod?: TMethod,\n\t\tpredicate?: (call: AgentEvalPositionedScriptCallForMethod<TMethod>) => boolean,\n\t): readonly AgentEvalPositionedScriptCall[] | readonly AgentEvalPositionedScriptCallForMethod<TMethod>[] {\n\t\tconst calls = collectPositionedScriptCalls(\n\t\t\toptions.initialStepIndex ?? 0,\n\t\t\tgetSteps(),\n\t\t\tgetScriptInstrumentationState(),\n\t\t)\n\t\tif (method === undefined) return calls\n\t\treturn calls.filter(\n\t\t\t(call): call is AgentEvalPositionedScriptCallForMethod<TMethod> =>\n\t\t\t\tisScriptCallForMethod(call, method) && (predicate?.(call) ?? true),\n\t\t)\n\t}\n\treturn scriptCalls\n}\n\nfunction isScriptCallForMethod<TMethod extends AgentEvalScriptCallMethod>(\n\tcall: AgentEvalPositionedScriptCall,\n\tmethod: TMethod,\n): call is AgentEvalPositionedScriptCallForMethod<TMethod> {\n\treturn call.method === method\n}\n\nfunction collectPositionedScriptCalls(\n\tinitialStepIndex: number,\n\tsteps: readonly ToolStep[],\n\tstate: AgentEvalScriptInstrumentationState | undefined,\n): readonly AgentEvalPositionedScriptCall[] {\n\tif (!state || state.calls.length === 0) return []\n\tconst positionedCalls: AgentEvalPositionedScriptCall[] = []\n\tlet scriptCallIndex = 0\n\n\tfor (\n\t\tlet stepIndex = initialStepIndex;\n\t\tstepIndex < steps.length && scriptCallIndex < state.calls.length;\n\t\tstepIndex++\n\t) {\n\t\tconst step = steps[stepIndex]\n\t\tassert(step !== undefined, `Expected eval step ${stepIndex} to exist.`)\n\t\tfor (let partIndex = 0; partIndex < step.content.length && scriptCallIndex < state.calls.length; partIndex++) {\n\t\t\tconst part = step.content[partIndex]\n\t\t\tassert(part !== undefined, `Expected eval step part ${stepIndex}:${partIndex} to exist.`)\n\t\t\tif (!isAssistantToolCallPart(part) || part.content.toolName !== SCRIPT_TOOL_NAME) continue\n\n\t\t\tlet lastSearchedIndex = 0\n\t\t\tfor (; scriptCallIndex < state.calls.length; scriptCallIndex++) {\n\t\t\t\tconst scriptCall = state.calls[scriptCallIndex]\n\t\t\t\tif (!scriptCall) continue\n\n\t\t\t\tconst searchString = `${scriptCall.method}(`\n\t\t\t\tconst searchIndex = part.content.input.script.indexOf(searchString, lastSearchedIndex)\n\t\t\t\tif (searchIndex === -1) break\n\n\t\t\t\tlastSearchedIndex = searchIndex + searchString.length\n\n\t\t\t\tconst position = { stepIndex, partIndex }\n\t\t\t\tpositionedCalls.push({ ...scriptCall, position, script: part.content.input.script })\n\t\t\t}\n\t\t}\n\t}\n\n\treturn positionedCalls\n}\n\nfunction createAgentEvalHelpersFromSteps(\n\toptions: AgentEvalHelpersOptions,\n\tgetSteps: () => readonly ToolStep[],\n\tgetRequests?: () => readonly AgentRequest[],\n\tgetScriptInstrumentationState?: () => AgentEvalScriptInstrumentationState | undefined,\n): AgentEvalHelpers {\n\tconst steps: AgentEvalStepsHelper = {\n\t\tall: getSteps,\n\t\tlast: () => getSteps().at(-1),\n\t\tparts: () => getPositionedParts(getSteps()),\n\t\tdesignPlans: () => {\n\t\t\tconst designPlans: string[] = []\n\t\t\tfor (const { part } of steps.parts()) {\n\t\t\t\tif (isDesignPlan(part)) designPlans.push(part.content)\n\t\t\t}\n\t\t\treturn designPlans\n\t\t},\n\t\tfirstDesignPlanPosition: () => steps.firstPartPosition(isDesignPlan),\n\t\treadProjectQueries: predicate => collectReadProjectQueriesFromSteps(getSteps(), predicate),\n\t\tfirstPartPosition: predicate => {\n\t\t\treturn steps.parts().find(({ part, position }) => predicate(part, position))?.position\n\t\t},\n\t\tfirstToolCallPosition: (name, predicate) => {\n\t\t\treturn steps.firstPartPosition((part, position) => {\n\t\t\t\tif (!isAssistantToolCallPart(part) || !isToolCallForName(part.content, name)) return false\n\t\t\t\treturn predicate?.(part.content, position) ?? true\n\t\t\t})\n\t\t},\n\t\tfirstReadProjectQueryPosition: predicate => {\n\t\t\treturn steps.firstPartPosition(part => getReadProjectQueriesFromPart(part).some(predicate))\n\t\t},\n\t\tfirstScriptPosition: predicate => {\n\t\t\treturn steps.firstPartPosition(part => {\n\t\t\t\tconst script = getScriptInput(part)\n\t\t\t\treturn script !== undefined && predicate(script)\n\t\t\t})\n\t\t},\n\t\tfirstProjectMutationPosition: () => steps.firstPartPosition(isProjectMutationPart),\n\t\thasPartAtOrBefore: (position, predicate) => {\n\t\t\treturn steps.parts().some(({ part, position: partPosition }) => {\n\t\t\t\treturn comparePartPositions(partPosition, position) <= 0 && predicate(part, partPosition)\n\t\t\t})\n\t\t},\n\t\thasReadProjectQueryAtOrBefore: (position, predicate) => {\n\t\t\treturn steps.hasPartAtOrBefore(position, part => getReadProjectQueriesFromPart(part).some(predicate))\n\t\t},\n\t\tcomparePositions: comparePartPositions,\n\t\texpectBefore: (left, right) => {\n\t\t\texpect(left).toBeDefined()\n\t\t\texpect(right).toBeDefined()\n\t\t\tif (left === undefined || right === undefined) return\n\t\t\texpect(comparePartPositions(left, right)).toBeLessThan(0)\n\t\t},\n\t\texpectNoReviewBeforeMutation: () => {\n\t\t\tconst firstReviewPosition = steps.firstToolCallPosition(REVIEW_CHANGES_TOOL_NAME)\n\t\t\tif (firstReviewPosition === undefined) return\n\t\t\tsteps.expectBefore(steps.firstProjectMutationPosition(), firstReviewPosition)\n\t\t},\n\t}\n\n\tconst tools: AgentEvalToolsHelper = {\n\t\tcalls: createToolCallsHelper(getSteps),\n\t\tresults: createToolResultsHelper(getSteps),\n\t\tinputs: createToolInputsHelper(getSteps),\n\t\tfirstCall: createFirstToolCallHelper(getSteps),\n\t\thasCall: (name, predicate) => tools.firstCall(name, predicate) !== undefined,\n\t\tfirstResult: createFirstToolResultHelper(getSteps),\n\t\thasResult: (name, predicate) => tools.firstResult(name, predicate) !== undefined,\n\t\treadProjectQueries: predicate => {\n\t\t\tconst queries = tools.calls(READ_PROJECT_TOOL_NAME).flatMap(call => call.input.queries)\n\t\t\treturn predicate === undefined ? queries : queries.filter(predicate)\n\t\t},\n\t\treadProjectResults: predicate => {\n\t\t\tconst results = tools.results(READ_PROJECT_TOOL_NAME)\n\t\t\tif (predicate === undefined) return results\n\t\t\treturn results.filter(result => getReadProjectQueries(result.input).some(predicate))\n\t\t},\n\t\tfirstReadProjectResult: predicate => tools.readProjectResults(predicate).at(0),\n\t\thasReadProjectQuery: predicate => tools.readProjectQueries(predicate).length > 0,\n\t\tscriptInputs: predicate =>\n\t\t\ttools\n\t\t\t\t.calls(SCRIPT_TOOL_NAME)\n\t\t\t\t.map(call => call.input.script)\n\t\t\t\t.filter(script => predicate?.(script) ?? true),\n\t\tscriptCalls: createScriptCallsHelper(options, () => getScriptInstrumentationState?.(), getSteps),\n\t\thasScriptCall: (method, predicate) => tools.scriptCalls(method).some(call => predicate?.(call) ?? true),\n\t\tnodeLookups: idOrPredicate => {\n\t\t\tconst predicate = typeof idOrPredicate === \"function\" ? idOrPredicate : (id: NodeID) => id === idOrPredicate\n\t\t\treturn tools.scriptCalls().filter(call => {\n\t\t\t\tif (call.method === \"getNode\" || call.method === \"serialize\") return predicate(call.input.id)\n\t\t\t\tif (call.method === \"getNodes\" || call.method === \"serializeNodes\") return call.input.ids.some(predicate)\n\t\t\t\treturn false\n\t\t\t})\n\t\t},\n\t\tfirstNodeLookup: idOrPredicate => {\n\t\t\treturn tools.nodeLookups(idOrPredicate).at(0)\n\t\t},\n\t\thasNodeLookup: idOrPredicate => tools.nodeLookups(idOrPredicate).length > 0,\n\t\tclarificationQuestions: () => collectClarificationQuestions(getSteps()),\n\t\tclarificationQuestionText: () =>\n\t\t\tformatClarificationQuestionText(tools.clarificationQuestions()[0]?.questions ?? []),\n\t\tcommandErrors: () => collectCommandParts(getSteps()).errors,\n\t\treviewChangesResults: () => {\n\t\t\tconst results: ReviewChangesResponse[] = []\n\t\t\tfor (const result of tools.results(REVIEW_CHANGES_TOOL_NAME)) {\n\t\t\t\tif (isReviewChangesToolResponseValue(result.output)) results.push(result.output)\n\t\t\t}\n\t\t\treturn results\n\t\t},\n\t\treportNoReadProject: report => {\n\t\t\treport.efficiency.scored(\"does not call read_project\", () => {\n\t\t\t\texpect(tools.calls(READ_PROJECT_TOOL_NAME)).toHaveLength(0)\n\t\t\t})\n\t\t},\n\t\treportNoReviewBeforeMutation: report => {\n\t\t\treport.efficiency.scored(\"does not review changes before project update\", () => {\n\t\t\t\tsteps.expectNoReviewBeforeMutation()\n\t\t\t})\n\t\t},\n\t\treportReplayContinued: (report, options) => {\n\t\t\tconst requests = getRequests?.() ?? []\n\t\t\tconst replayStepCount = options.stepIndex ?? 0\n\n\t\t\tif (options.requestId !== undefined) {\n\t\t\t\treport.correctness.required(\"continues captured request\", () => {\n\t\t\t\t\texpect(requests.some(request => request.id === options.requestId)).toBe(true)\n\t\t\t\t})\n\t\t\t}\n\t\t\treport.correctness.required(\"runs after replayed checkpoint\", () => {\n\t\t\t\texpect(steps.all().length).toBeGreaterThan(replayStepCount)\n\t\t\t})\n\t\t},\n\t\treportReplayChecks: (report, options = {}) => {\n\t\t\tconst requests = getRequests?.() ?? []\n\t\t\tconst replayStepCount = options.stepIndex ?? 0\n\n\t\t\tif (options.requestId !== undefined) {\n\t\t\t\treport.correctness.required(\"continues captured request\", () => {\n\t\t\t\t\texpect(requests.some(request => request.id === options.requestId)).toBe(true)\n\t\t\t\t})\n\t\t\t}\n\t\t\treport.correctness.scored(\"no command errors\", () => {\n\t\t\t\texpect(tools.commandErrors()).toHaveLength(0)\n\t\t\t})\n\t\t\treport.correctness.required(\"runs after initial replay checkpoint\", () => {\n\t\t\t\texpect(steps.all().length).toBeGreaterThan(replayStepCount)\n\t\t\t})\n\t\t\tif (options.forbidReadProject === true) tools.reportNoReadProject(report)\n\t\t\treport.efficiency.diagnostic(\"does not ask for clarification\", () => {\n\t\t\t\texpect(tools.calls(ASK_CLARIFICATION_TOOL_NAME)).toHaveLength(0)\n\t\t\t})\n\t\t\ttools.reportNoReviewBeforeMutation(report)\n\t\t},\n\t}\n\n\tconst commands: AgentEvalCommandsHelper = {\n\t\tall: () => collectCommandParts(getSteps()).commands,\n\t\tfirst: () => commands.all().at(0),\n\t\tbyType: <T extends CommandType>(type: T) =>\n\t\t\tcommands.all().filter((command): command is Extract<Command, { type: T }> => command.type === type),\n\t}\n\n\treturn { steps, tools, commands }\n}\n\ntype AgentEvalHelpersOptions = { initialStepIndex?: number }\nexport function createAgentEvalHelpers(\n\tsource: AgentEvalHelperSource,\n\toptions: AgentEvalHelpersOptions = {},\n): AgentEvalHelpers {\n\treturn createAgentEvalHelpersFromSteps(\n\t\toptions,\n\t\t() => getHelperRequests(source).flatMap(request => request.steps),\n\t\t() => getHelperRequests(source),\n\t\t() => source.scriptInstrumentationState,\n\t)\n}\n\nexport function createAgentEvalHelpersForSteps(\n\tsteps: readonly ToolStep[],\n\tscriptInstrumentationState?: AgentEvalScriptInstrumentationState,\n\toptions: AgentEvalHelpersOptions = {},\n): AgentEvalHelpers {\n\treturn createAgentEvalHelpersFromSteps(\n\t\toptions,\n\t\t() => steps,\n\t\tundefined,\n\t\t() => scriptInstrumentationState,\n\t)\n}\n", "/**\n * Side-channel for surfacing the message of a passing assertion.\n *\n * Matchers (see browserEvalGlobals) only throw on failure, so a passing\n * `expect(...)` normally records nothing. To show the asserted condition on\n * passed checks too, the matcher stashes its last passing assertion here and the\n * report recorder consumes it immediately after running each check.\n */\nexport interface PassedAssertion {\n\tmessage: string\n\texpected?: string\n\treceived?: string\n\tmatcher?: string\n}\n\nlet lastPassedAssertion: PassedAssertion | undefined\n\nexport function recordPassedAssertion(assertion: PassedAssertion): void {\n\tlastPassedAssertion = assertion\n}\n\n/** Clears any captured assertion so a check never inherits a previous check's result. */\nexport function resetPassedAssertionCapture(): void {\n\tlastPassedAssertion = undefined\n}\n\n/** Returns the assertion captured since the last reset and clears it. */\nexport function consumePassedAssertion(): PassedAssertion | undefined {\n\tconst assertion = lastPassedAssertion\n\tlastPassedAssertion = undefined\n\treturn assertion\n}\n", "import { assert } from \"@framerjs/shared/src/assert.ts\"\nimport { isBoolean, isFunction, isObject, isString } from \"utils/typeChecks.ts\"\nimport { consumePassedAssertion, resetPassedAssertionCapture } from \"./passedAssertionCapture.ts\"\nimport type {\n\tAgentEvalCheck,\n\tAgentEvalCheckCategory,\n\tAgentEvalCheckKind,\n\tAgentEvalCheckResult,\n\tAgentEvalReportCategory,\n\tAgentEvalReportCategoryEachArgs,\n\tAgentEvalReportCategoryMultiCard,\n\tAgentEvalReportCategoryMultiLabels,\n\tAgentEvalReportController,\n} from \"./reportTypes.ts\"\n\ninterface PendingCheckResult {\n\tpassed: boolean\n\tscore?: number\n\tassertion?: string\n\terror?: string\n\texpected?: string\n\treceived?: string\n\tmatcher?: string\n\terrorStack?: string\n}\n\ninterface CheckMetadata {\n\tkind?: AgentEvalCheckKind\n\tgroup?: string\n\titem?: string\n\titemIndex?: number\n\tinvocationKey?: number\n}\n\nfunction getCheckId(category: AgentEvalCheckCategory, name: string, metadata: CheckMetadata = {}): string {\n\tif (metadata.group !== undefined && metadata.invocationKey !== undefined && metadata.itemIndex !== undefined) {\n\t\treturn `${category}:${metadata.group}:${metadata.invocationKey}:${metadata.itemIndex}:${name}`\n\t}\n\n\treturn `${category}:${name}`\n}\n\nfunction getErrorMessage(error: unknown): string {\n\tif (error instanceof Error) return error.message\n\treturn String(error)\n}\n\nfunction getErrorStack(error: unknown): string | undefined {\n\tif (error instanceof Error && isString(error.stack)) return error.stack\n\treturn undefined\n}\n\nfunction createMultiCard<T extends AgentEvalReportCategoryMultiLabels>(\n\tkeys: readonly Extract<keyof T, string>[],\n): AgentEvalReportCategoryMultiCard<T> {\n\tconst entries = keys.map(key => [key, false] as const)\n\treturn Object.fromEntries(entries) as AgentEvalReportCategoryMultiCard<T>\n}\n\nfunction isPartialMultiCard<T extends AgentEvalReportCategoryMultiLabels>(\n\tkeys: readonly Extract<keyof T, string>[],\n\tresult: unknown,\n): result is Partial<AgentEvalReportCategoryMultiCard<T>> {\n\tif (!isObject(result)) return false\n\n\tconst validKeys = new Set<string>(keys)\n\tfor (const [key, value] of Object.entries(result)) {\n\t\tif (!validKeys.has(key)) return false\n\t\tif (!isBoolean(value)) return false\n\t}\n\treturn true\n}\n\nfunction getStringProperty(value: unknown, property: string): string | undefined {\n\tif (value === null || typeof value !== \"object\") return undefined\n\tconst propertyValue = Reflect.get(value, property)\n\treturn isString(propertyValue) ? propertyValue : undefined\n}\n\nfunction getAssertionDetail(error: unknown, property: string): string | undefined {\n\tif (error === null || typeof error !== \"object\") return undefined\n\tconst assertion = Reflect.get(error, \"assertion\")\n\treturn getStringProperty(assertion, property)\n}\n\nfunction normalizeScore(score: number): number {\n\tif (!Number.isFinite(score) || score < 0 || score > 1) {\n\t\tthrow new Error(`Expected scored eval check to return a number between 0 and 1, received ${score}.`)\n\t}\n\treturn score\n}\n\nfunction getPendingCheckResult(result: unknown, metadata: CheckMetadata): PendingCheckResult {\n\tconst passed = result === undefined ? true : result === true\n\tif (metadata.kind !== \"scored\") return { passed, received: passed ? undefined : String(result) }\n\n\tconst score = typeof result === \"number\" ? normalizeScore(result) : passed ? 1 : 0\n\treturn {\n\t\tpassed: score === 1,\n\t\tscore,\n\t\treceived: score === 1 ? undefined : String(score),\n\t}\n}\n\nexport function createAgentEvalReport(): AgentEvalReportController {\n\tconst checksById = new Map<string, AgentEvalCheckResult>()\n\tlet currentStep: number | undefined\n\tlet eachInvocationKey = 0\n\n\tfunction record(\n\t\tcategory: AgentEvalCheckCategory,\n\t\tname: string,\n\t\tresult: PendingCheckResult,\n\t\tdurationMs: number,\n\t\tmetadata: CheckMetadata = {},\n\t): void {\n\t\tconst id = getCheckId(category, name, metadata)\n\t\tconst existing = checksById.get(id)\n\t\tconst achievedStep =\n\t\t\texisting?.achievedStep ?? (result.passed && currentStep !== undefined ? currentStep : undefined)\n\t\tconst next: AgentEvalCheckResult = {\n\t\t\tid,\n\t\t\tcategory,\n\t\t\tname,\n\t\t\tpassed: result.passed,\n\t\t\tdurationMs,\n\t\t\tgroup: metadata.group,\n\t\t\titem: metadata.item,\n\t\t\tmessage: existing?.message,\n\t\t\tassertion: result.assertion,\n\t\t\tachievedStep,\n\t\t\terror: result.error,\n\t\t\texpected: result.expected,\n\t\t\treceived: result.received,\n\t\t\tmatcher: result.matcher,\n\t\t\terrorStack: result.errorStack,\n\t\t}\n\t\tif (metadata.kind !== undefined) next.kind = metadata.kind\n\t\tif (result.score !== undefined) next.score = result.score\n\t\tchecksById.set(id, next)\n\t}\n\n\tfunction runCheck(\n\t\tcategory: AgentEvalCheckCategory,\n\t\tname: string,\n\t\tcheck: AgentEvalCheck,\n\t\tmessage?: string,\n\t\tmetadata: CheckMetadata = {},\n\t) {\n\t\tconst startedAt = performance.now()\n\t\tconst recordError = (error: unknown) => {\n\t\t\trecord(\n\t\t\t\tcategory,\n\t\t\t\tname,\n\t\t\t\t{\n\t\t\t\t\tpassed: false,\n\t\t\t\t\tscore: metadata.kind === \"scored\" ? 0 : undefined,\n\t\t\t\t\terror: getErrorMessage(error),\n\t\t\t\t\texpected: getAssertionDetail(error, \"expected\"),\n\t\t\t\t\treceived: getAssertionDetail(error, \"received\"),\n\t\t\t\t\tmatcher: getAssertionDetail(error, \"matcher\"),\n\t\t\t\t\terrorStack: getErrorStack(error),\n\t\t\t\t},\n\t\t\t\tMath.round(performance.now() - startedAt),\n\t\t\t\tmetadata,\n\t\t\t)\n\t\t}\n\n\t\ttry {\n\t\t\tresetPassedAssertionCapture()\n\t\t\tconst result = isFunction(check) ? check() : check\n\t\t\tconst pendingResult = getPendingCheckResult(result, metadata)\n\t\t\tif (pendingResult.passed) {\n\t\t\t\tconst passedAssertion = consumePassedAssertion()\n\t\t\t\tif (passedAssertion) {\n\t\t\t\t\tpendingResult.assertion = passedAssertion.message\n\t\t\t\t\tpendingResult.expected = passedAssertion.expected\n\t\t\t\t\tpendingResult.received = passedAssertion.received\n\t\t\t\t\tpendingResult.matcher = passedAssertion.matcher\n\t\t\t\t}\n\t\t\t}\n\t\t\trecord(category, name, pendingResult, Math.round(performance.now() - startedAt), metadata)\n\t\t\tconst latest = checksById.get(getCheckId(category, name, metadata))\n\t\t\tif (latest && message !== undefined) checksById.set(latest.id, { ...latest, message })\n\t\t} catch (error) {\n\t\t\trecordError(error)\n\t\t}\n\t}\n\n\tfunction recordMulti<T extends AgentEvalReportCategoryMultiLabels>(\n\t\tcategory: AgentEvalCheckCategory,\n\t\tlabels: T,\n\t\tkeys: readonly Extract<keyof T, string>[],\n\t\tcard: AgentEvalReportCategoryMultiCard<T>,\n\t\tdurationMs: number,\n\t\terror?: unknown,\n\t): void {\n\t\tfor (const key of keys) {\n\t\t\tconst label = labels[key]\n\t\t\tassert(label !== undefined, `Missing multi check label for \"${key}\".`)\n\t\t\tconst passed = card[key]\n\t\t\trecord(\n\t\t\t\tcategory,\n\t\t\t\tlabel,\n\t\t\t\t{\n\t\t\t\t\tpassed,\n\t\t\t\t\terror: passed || error === undefined ? undefined : getErrorMessage(error),\n\t\t\t\t\terrorStack: passed || error === undefined ? undefined : getErrorStack(error),\n\t\t\t\t\treceived: passed ? undefined : String(passed),\n\t\t\t\t},\n\t\t\t\tdurationMs,\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Runs one callback that can report several checks by mutating a shared result card.\n\t * The callback may return the card, a partial card, or nothing; when it completes, the\n\t * card's current state is used as the result unless `true` or an invalid value is returned.\n\t */\n\tfunction runMultiCheck<T extends AgentEvalReportCategoryMultiLabels>(\n\t\tcategory: AgentEvalCheckCategory,\n\t\tlabels: T,\n\t\tcheck: (card: AgentEvalReportCategoryMultiCard<T>) => unknown,\n\t): void {\n\t\tconst startedAt = performance.now()\n\t\tconst keys = Object.keys(labels) as Extract<keyof T, string>[]\n\t\tconst card = createMultiCard<T>(keys)\n\n\t\ttry {\n\t\t\tconst result = check(card)\n\t\t\tconst durationMs = Math.round(performance.now() - startedAt)\n\n\t\t\tif (result === true) {\n\t\t\t\tfor (const key of keys) {\n\t\t\t\t\tconst label = labels[key]\n\t\t\t\t\tassert(label !== undefined, `Missing multi check label for \"${key}\".`)\n\t\t\t\t\trecord(category, label, { passed: true }, durationMs)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (isPartialMultiCard(keys, result)) {\n\t\t\t\tfor (const key of keys) {\n\t\t\t\t\tcard[key] = result[key] ?? card[key]\n\t\t\t\t}\n\t\t\t\trecordMulti(category, labels, keys, card, durationMs)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (result === undefined) {\n\t\t\t\trecordMulti(category, labels, keys, card, durationMs)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trecordMulti(category, labels, keys, createMultiCard<T>(keys), durationMs)\n\t\t} catch (error) {\n\t\t\trecordMulti(category, labels, keys, card, Math.round(performance.now() - startedAt), error)\n\t\t}\n\t}\n\n\tfunction createCategory(category: AgentEvalCheckCategory): AgentEvalReportCategory {\n\t\tconst reportCategory = {} as AgentEvalReportCategory\n\t\treportCategory.required = (name, check, message) => runCheck(category, name, check, message, { kind: \"required\" })\n\t\treportCategory.forbidden = (name, check, message) => runCheck(category, name, check, message, { kind: \"forbidden\" })\n\t\treportCategory.scored = (name, check, message) => runCheck(category, name, check, message, { kind: \"scored\" })\n\t\treportCategory.diagnostic = (name, check, message) =>\n\t\t\trunCheck(category, name, check, message, { kind: \"diagnostic\" })\n\t\treportCategory.each = <T>(...args: AgentEvalReportCategoryEachArgs<T>) => {\n\t\t\tconst [group, items, check] = args\n\t\t\tconst invocationKey = eachInvocationKey\n\n\t\t\tlet index = 0\n\t\t\tfor (const item of items) {\n\t\t\t\trunCheck(category, String(item), () => check(item, index), undefined, {\n\t\t\t\t\tkind: \"scored\",\n\t\t\t\t\tgroup,\n\t\t\t\t\titem: String(item),\n\t\t\t\t\titemIndex: index,\n\t\t\t\t\tinvocationKey,\n\t\t\t\t})\n\t\t\t\tindex++\n\t\t\t}\n\t\t\teachInvocationKey++\n\t\t}\n\t\treportCategory.multi = (...args) => {\n\t\t\tconst [labels, check] = args\n\t\t\trunMultiCheck(category, labels, check)\n\t\t}\n\t\treturn reportCategory\n\t}\n\n\treturn {\n\t\tcorrectness: createCategory(\"correctness\"),\n\t\taccuracy: createCategory(\"accuracy\"),\n\t\tefficiency: createCategory(\"efficiency\"),\n\t\tfunctionality: createCategory(\"functionality\"),\n\t\tdesign: createCategory(\"design\"),\n\t\tgetChecks: () => Array.from(checksById.values()),\n\t\tsetCurrentStep: stepIndex => {\n\t\t\tcurrentStep = stepIndex\n\t\t\teachInvocationKey = 0\n\t\t},\n\t}\n}\n", "import { agentEvalCategories } from \"./categoryStatistics.ts\"\nimport type { AgentEvalCheckCategory, AgentEvalCheckResult } from \"./reportTypes.ts\"\n\nconst defaultAgentEvalCategoryWeights = {\n\tcorrectness: 0.7,\n\taccuracy: 0.2,\n\tefficiency: 0.1,\n\tfunctionality: 1,\n\tdesign: 1,\n} satisfies Record<AgentEvalCheckCategory, number>\n\ninterface AgentEvalCategoryScore {\n\tearned: number\n\tpossible: number\n\tscore: number\n}\n\ntype AgentEvalCategoryScores = Record<AgentEvalCheckCategory, AgentEvalCategoryScore>\n\nfunction getEmptyCategoryScore(): AgentEvalCategoryScore {\n\treturn { earned: 0, possible: 0, score: 0 }\n}\n\nfunction createEmptyCategoryScores(): AgentEvalCategoryScores {\n\treturn {\n\t\tcorrectness: getEmptyCategoryScore(),\n\t\taccuracy: getEmptyCategoryScore(),\n\t\tefficiency: getEmptyCategoryScore(),\n\t\tfunctionality: getEmptyCategoryScore(),\n\t\tdesign: getEmptyCategoryScore(),\n\t}\n}\n\nexport function hasFailedGatingCheck(checks: readonly AgentEvalCheckResult[]): boolean {\n\treturn checks.some(check => (check.kind === \"required\" || check.kind === \"forbidden\") && !check.passed)\n}\n\nfunction isScoredCheck(check: AgentEvalCheckResult): boolean {\n\treturn check.kind === \"scored\" || check.kind === undefined\n}\n\nexport function createCategoryScores(checks: readonly AgentEvalCheckResult[]): AgentEvalCategoryScores {\n\tconst scores = createEmptyCategoryScores()\n\n\tfor (const check of checks) {\n\t\tif (!isScoredCheck(check)) continue\n\t\tconst category = scores[check.category]\n\t\tcategory.earned += check.score ?? (check.passed ? 1 : 0)\n\t\tcategory.possible += 1\n\t}\n\n\tfor (const category of agentEvalCategories) {\n\t\tconst score = scores[category]\n\t\tscore.score = score.possible === 0 ? 0 : score.earned / score.possible\n\t}\n\n\treturn scores\n}\n\nexport function getWeightedScore(checks: readonly AgentEvalCheckResult[]): number {\n\tif (hasFailedGatingCheck(checks)) return 0\n\n\tconst scores = createCategoryScores(checks)\n\tlet earned = 0\n\tlet possible = 0\n\n\tfor (const category of agentEvalCategories) {\n\t\tconst categoryScore = scores[category]\n\t\tif (categoryScore.possible === 0) continue\n\t\tconst weight = defaultAgentEvalCategoryWeights[category]\n\t\tearned += categoryScore.score * weight\n\t\tpossible += weight\n\t}\n\n\treturn possible === 0 ? 1 : earned / possible\n}\n\nexport function getScorePercent(score: number): number {\n\tif (score >= 1) return 100\n\treturn Math.floor(score * 100)\n}\n", "import type { ModelMessage } from \"ai\"\nimport { segmentsToTextContent } from \"app/agent/editor/utils/input.ts\"\nimport type { AgentRequest } from \"app/ai/agents/types.ts\"\nimport type { CanvasTree } from \"document/models/CanvasTree/CanvasTree.ts\"\n\ninterface TextModelMessageContent {\n\ttype: \"text\"\n\ttext: string\n}\n\nfunction createTextContent(text: string): TextModelMessageContent {\n\treturn { type: \"text\", text }\n}\n\nexport function createAgentEvalInputMessage(request: AgentRequest, tree: CanvasTree): ModelMessage {\n\treturn {\n\t\trole: \"user\",\n\t\tcontent: [\n\t\t\t...request.contextMessages.map(createTextContent),\n\t\t\tcreateTextContent(segmentsToTextContent(tree, request.parts).trim()),\n\t\t],\n\t}\n}\n", "import { assert } from \"@framerjs/shared\"\nimport type { LanguageModelUsage } from \"ai\"\nimport type { AgentInputSegment } from \"app/agent/editor/agentInputSchema.ts\"\nimport type { AgentLifeCycleHooks, AgentTurnOptions } from \"app/ai/agents/Agent.ts\"\nimport { isAssistantToolCallPart, type ToolStep } from \"app/ai/agents/messages.ts\"\nimport type { ClarificationAnswerProvider } from \"app/ai/agents/tools/askClarification.ts\"\nimport { ASK_CLARIFICATION_TOOL_NAME, READ_PROJECT_TOOL_NAME, SCRIPT_TOOL_NAME } from \"app/ai/agents/tools/toolNames.ts\"\nimport type { AgentRequest } from \"app/ai/agents/types.ts\"\nimport type { LanguageModel } from \"app/ai/languageModels.ts\"\nimport type { AgentReasoningEffort } from \"app/ai/models.ts\"\nimport { resolveAgentTurnUsdCost } from \"app/ai/utils/languageModelUsdEstimate.ts\"\nimport { getOpenRouterCostFromMetadata } from \"app/ai/utils/openRouterUsage.ts\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport { createEmptyAgentEvalCategoryStatistics } from \"./categoryStatistics.ts\"\nimport type { AgentEvalDefinition } from \"./definition.ts\"\nimport { createAgentEvalHelpers } from \"./helpers.ts\"\nimport type { AgentEvalScriptInstrumentationState } from \"./helpers.ts\"\nimport type { AgentEvalModelConfig } from \"./modelConfig.ts\"\nimport { createAgentEvalReport } from \"./report.ts\"\nimport type { AgentEvalCategoryStatisticsByCategory, AgentEvalCheckResult } from \"./reportTypes.ts\"\nimport { getWeightedScore, hasFailedGatingCheck } from \"./scoring.ts\"\nimport { toAgentEvalTokenUsage } from \"./tokenUsage.ts\"\nimport type { AgentEvalTranscriptInputMessages } from \"./transcriptData.ts\"\nimport { createAgentEvalInputMessage } from \"./transcriptInput.ts\"\nimport type {\n\tAgentEvalCurrentStep,\n\tAgentEvalProgressLogger,\n\tAgentEvalRequestInput,\n\tAgentEvalRunContext,\n\tAgentEvalRunResult,\n\tAgentEvalRunStatistics,\n\tAgentEvalRuntime,\n} from \"./types.ts\"\n\nexport type AgentEvalTranscriptWriter = (context: {\n\tresult: AgentEvalRunResult\n\tchatMessages: readonly AgentRequest[]\n\ttree: VekterEngine[\"tree\"]\n\tinputMessages: AgentEvalTranscriptInputMessages\n}) => Promise<string>\n\ninterface AgentEvalRunnerOptions {\n\tmodelConfigs: readonly AgentEvalModelConfig[]\n\truns: number\n\tsignal?: AbortSignal\n\tshouldRun?: (context: AgentEvalRunSelectionContext) => boolean\n\tsend?: (context: AgentEvalSendContext) => Promise<void>\n\tonRunStart?: (context: AgentEvalRunStartContext) => void | Promise<void>\n\tonRunProgressMessage?: (context: AgentEvalRunProgressMessageContext) => void\n\tonRunProgress?: (context: AgentEvalRunProgressContext) => void | Promise<void>\n\tonRunComplete?: (result: AgentEvalRunResult) => void | Promise<void>\n\tonRunUpdate?: (update: AgentEvalRunUpdate) => void | Promise<void>\n\tonProgress?: AgentEvalProgressLogger\n\ttranscript?: boolean\n\twriteTranscript?: AgentEvalTranscriptWriter\n}\n\nexport interface AgentEvalRunStartContext {\n\tdefinition: AgentEvalDefinition\n\tmodelConfig: AgentEvalModelConfig\n\trunNumber: number\n\ttotalRuns: number\n\trunInvocationId?: string\n}\n\nexport interface AgentEvalRunSelectionContext extends AgentEvalRunStartContext {\n\tdefinitionIndex: number\n\tmodelConfigIndex: number\n\t/** Flattened eval x model x run ordinal used for balanced CI sharding. */\n\trunIndex: number\n}\n\ninterface AgentEvalRunProgressContext extends AgentEvalRunStartContext {\n\tchecks: readonly AgentEvalCheckResult[]\n}\n\nexport interface AgentEvalRunProgressMessageContext extends AgentEvalRunStartContext {\n\tmessage: string\n}\n\nexport interface AgentEvalRunUpdate {\n\tdefinition: AgentEvalDefinition\n\trunInvocationId?: string\n\tmodel: LanguageModel\n\treasoningEffort?: AgentReasoningEffort\n\trunNumber: number\n\truntime: AgentEvalRuntime\n\ttranscriptInputMessages: AgentEvalTranscriptInputMessages\n}\n\ninterface AgentEvalSendContext extends AgentEvalRunContext {\n\tdefinition: AgentEvalDefinition\n\truntime: AgentEvalRuntime\n\tsignal?: AbortSignal\n}\n\ninterface AgentEvalDefinitionRunOptions extends Pick<AgentEvalRunnerOptions, \"send\" | \"onProgress\" | \"signal\"> {\n\treasoningEffort?: AgentReasoningEffort\n\tonRunProgressMessage?: AgentEvalProgressLogger\n\tonRunProgress?: (checks: readonly AgentEvalCheckResult[]) => void | Promise<void>\n\ttranscript?: boolean\n\twriteTranscript?: AgentEvalTranscriptWriter\n\tonRunUpdate?: (update: AgentEvalRunUpdate) => void | Promise<void>\n}\n\nfunction shouldEvaluateOnStepFinish(definition: AgentEvalDefinition): boolean {\n\tif (definition.options.runOnStepFinish === true) return true\n\treturn definition.options.stopWhenPassed === true\n}\n\nfunction getPrompt(definition: AgentEvalDefinition): readonly AgentInputSegment[] {\n\treturn [definition.name]\n}\n\nfunction getReplayRequestInput(request: AgentRequest): AgentEvalRequestInput {\n\treturn {\n\t\tparts: request.parts,\n\t\timplicitSelection: request.selection ?? [],\n\t\timages: request.images,\n\t\tfiles: request.files ?? [],\n\t}\n}\n\nfunction getAgentEvalRequestInput(context: AgentEvalSendContext): AgentEvalRequestInput {\n\tconst request = context.agent.chatMessages.at(-1)\n\tif (request) return getReplayRequestInput(request)\n\n\treturn {\n\t\tparts: context.runtime.prompt === undefined ? getPrompt(context.definition) : [context.runtime.prompt],\n\t\timplicitSelection: context.runtime.implicitSelection ?? [],\n\t\timages: context.runtime.images ?? [],\n\t\tfiles: context.runtime.files ?? [],\n\t}\n}\n\nconst defaultAgentSendTimeoutMs = 600_000\n/** Minimum budget per allowed tool step while `agent.send()` runs (model rounds + tool execution). */\nconst agentEvalSendTimeoutMsPerStep = 60_000\n\nfunction getAgentEvalProcessEnv(): NodeJS.ProcessEnv | undefined {\n\treturn typeof process === \"undefined\" ? undefined : process.env\n}\n\nfunction getAgentEvalSendTimeoutMs(\n\tenv: NodeJS.ProcessEnv | undefined = getAgentEvalProcessEnv(),\n\tevalSendTimeoutMs?: number,\n\tmaxSteps?: number,\n): number {\n\tconst configuredTimeout = env?.AGENT_EVAL_SEND_TIMEOUT_MS\n\tif (configuredTimeout !== undefined) {\n\t\tconst parsedTimeout = Number(configuredTimeout)\n\t\tif (Number.isInteger(parsedTimeout) && parsedTimeout > 0) return parsedTimeout\n\t}\n\n\tlet timeout = defaultAgentSendTimeoutMs\n\tif (evalSendTimeoutMs !== undefined && Number.isInteger(evalSendTimeoutMs) && evalSendTimeoutMs > 0) {\n\t\ttimeout = evalSendTimeoutMs\n\t}\n\n\tconst stepBudget = (maxSteps ?? 1) * agentEvalSendTimeoutMsPerStep\n\treturn Math.max(timeout, stepBudget)\n}\n\nfunction getAgentEvalTurnOptions(\n\tmaxSteps: number | undefined,\n\twaitForUserAnswers?: AgentTurnOptions[\"waitForUserAnswers\"],\n): AgentTurnOptions {\n\tconst options: AgentTurnOptions = {\n\t\tpropagateErrors: true,\n\t\t// TODO: If we ever want to eval title generation in the future we should make this configurable.\n\t\tskipTitleGeneration: true,\n\t\t// CLI eval assertions read the live engine state after command execution; committing the turn\n\t\t// into browser history only adds undo/timeline side effects. TODO: make this configurable once\n\t\t// we add evals that assert history, undo, or persisted timeline behavior.\n\t\tskipHistoryCommit: true,\n\t\t// Summary generation is post-turn memory maintenance and an extra model side effect; current\n\t\t// evals score the completed turn directly.\n\t\tskipSummaryGeneration: true,\n\t\t// Eval runs should not emit Raindrop events or SDK trace telemetry; this keeps CLI harness runs\n\t\t// deterministic and prevents telemetry failures from affecting model-turn diagnostics.\n\t\tdisableRaindropTelemetry: true,\n\t}\n\tif (maxSteps !== undefined) options.maxSteps = maxSteps\n\tif (waitForUserAnswers !== undefined) options.waitForUserAnswers = waitForUserAnswers\n\treturn options\n}\n\nexport const testing = {\n\tcreateEvalClarificationAnswerProvider,\n\tgetAgentEvalRequestInput,\n\tgetAgentEvalProcessEnv,\n\tgetAgentEvalSendTimeoutMs,\n\tgetAgentEvalTurnOptions,\n}\n\nfunction getRunRequests(runtime: AgentEvalRuntime | undefined): readonly AgentRequest[] {\n\tif (runtime === undefined) return []\n\tconst requestStartIndex = runtime.replayRequestStartIndex\n\tif (requestStartIndex === undefined) {\n\t\tconst request = runtime.agent.chatMessages.at(-1)\n\t\treturn request === undefined ? [] : [request]\n\t}\n\treturn runtime.agent.chatMessages.slice(requestStartIndex)\n}\n\nfunction getRequestStepOffset(runtime: AgentEvalRuntime, request: AgentRequest): number {\n\tlet offset = 0\n\tfor (const runRequest of getRunRequests(runtime)) {\n\t\tif (runRequest === request) return offset\n\t\toffset += runRequest.steps.length\n\t}\n\treturn 0\n}\n\nfunction shouldDeferFinalEvaluation(runtime: AgentEvalRuntime): boolean {\n\tconst followUpCount = runtime.followUpRequests?.length ?? 0\n\tif (followUpCount === 0) return false\n\tconst requestStartIndex = runtime.replayRequestStartIndex\n\tif (requestStartIndex === undefined) return false\n\treturn runtime.agent.chatMessages.length < requestStartIndex + 1 + followUpCount\n}\n\nfunction getTotalToolSteps(runtime: AgentEvalRuntime | undefined): number {\n\treturn getRunRequests(runtime).reduce((total, request) => total + request.steps.length, 0)\n}\n\nfunction getStringField(obj: Record<string, unknown>, key: string): string | undefined {\n\tconst value = obj[key]\n\treturn typeof value === \"string\" ? value : undefined\n}\n\nfunction formatReadProjectQueryLabel(query: Record<string, unknown>): string {\n\tconst type = getStringField(query, \"type\") ?? \"unknown\"\n\tconst identifier = getStringField(query, \"name\") ?? getStringField(query, \"id\")\n\treturn identifier ? `${type} > ${identifier}` : type\n}\n\nfunction formatReadProjectInput(input: unknown): string | undefined {\n\tif (!input || typeof input !== \"object\") return undefined\n\tif (!(\"queries\" in input)) return undefined\n\tconst { queries } = input\n\tif (!Array.isArray(queries)) return undefined\n\treturn queries\n\t\t.filter((query): query is object => typeof query === \"object\" && query !== null)\n\t\t.map(formatReadProjectQueryLabel)\n\t\t.join(\", \")\n}\n\nfunction formatScriptInput(input: unknown): string | undefined {\n\tif (!input || typeof input !== \"object\") return undefined\n\tif (!(\"script\" in input)) return undefined\n\tconst { script } = input\n\tif (typeof script !== \"string\") return undefined\n\tconst oneLine = script.replaceAll(\"\\n\", \" \").trim()\n\tconst maxLength = 120\n\treturn oneLine.length > maxLength ? `\"${oneLine.slice(0, maxLength)}...\"` : `\"${oneLine}\"`\n}\n\nfunction formatToolCallDetail(toolName: string, input: unknown): string {\n\tswitch (toolName) {\n\t\tcase READ_PROJECT_TOOL_NAME: {\n\t\t\tconst label = formatReadProjectInput(input)\n\t\t\treturn label ? `${toolName} > ${label}` : toolName\n\t\t}\n\t\tcase SCRIPT_TOOL_NAME: {\n\t\t\tconst label = formatScriptInput(input)\n\t\t\treturn label ? `${toolName} > ${label}` : toolName\n\t\t}\n\t\tdefault:\n\t\t\treturn toolName\n\t}\n}\n\nfunction formatToolStepName(step: ToolStep): string {\n\tconst toolCallParts = step.content.filter(isAssistantToolCallPart)\n\n\treturn step.toolResults\n\t\t.map(result => {\n\t\t\tconst toolCall = toolCallParts.find(part => part.content.toolCallId === result.toolCallId)\n\t\t\treturn formatToolCallDetail(result.toolName, toolCall?.content.input)\n\t\t})\n\t\t.join(\", \")\n}\n\nfunction getToolStepNames(runtime: AgentEvalRuntime | undefined): string[] {\n\treturn getRunRequests(runtime).flatMap(request => request.steps.map(formatToolStepName))\n}\n\nfunction normalizeStepUsage(\n\tusage: AgentRequest[\"steps\"][number][\"metadata\"][\"usage\"] | undefined,\n): LanguageModelUsage | undefined {\n\tif (usage === undefined) return undefined\n\treturn {\n\t\tinputTokens: usage.inputTokens,\n\t\tinputTokenDetails: {\n\t\t\tnoCacheTokens: usage.inputTokenDetails?.noCacheTokens,\n\t\t\tcacheReadTokens: usage.inputTokenDetails?.cacheReadTokens,\n\t\t\tcacheWriteTokens: usage.inputTokenDetails?.cacheWriteTokens,\n\t\t},\n\t\toutputTokens: usage.outputTokens,\n\t\toutputTokenDetails: {\n\t\t\ttextTokens: usage.outputTokenDetails?.textTokens,\n\t\t\treasoningTokens: usage.outputTokenDetails?.reasoningTokens,\n\t\t},\n\t\ttotalTokens: usage.totalTokens,\n\t\treasoningTokens: usage.reasoningTokens,\n\t\tcachedInputTokens: usage.cachedInputTokens,\n\t\traw: usage.raw,\n\t}\n}\n\nfunction sumOptionalUsageValue(left: number | undefined, right: number | undefined): number | undefined {\n\tif (left === undefined && right === undefined) return undefined\n\treturn (left ?? 0) + (right ?? 0)\n}\n\nfunction aggregateLanguageModelUsage(\n\tleft: LanguageModelUsage | undefined,\n\tright: LanguageModelUsage,\n): LanguageModelUsage {\n\treturn {\n\t\tinputTokens: sumOptionalUsageValue(left?.inputTokens, right.inputTokens),\n\t\tinputTokenDetails: {\n\t\t\tnoCacheTokens: sumOptionalUsageValue(\n\t\t\t\tleft?.inputTokenDetails?.noCacheTokens,\n\t\t\t\tright.inputTokenDetails?.noCacheTokens,\n\t\t\t),\n\t\t\tcacheReadTokens: sumOptionalUsageValue(\n\t\t\t\tleft?.inputTokenDetails?.cacheReadTokens,\n\t\t\t\tright.inputTokenDetails?.cacheReadTokens,\n\t\t\t),\n\t\t\tcacheWriteTokens: sumOptionalUsageValue(\n\t\t\t\tleft?.inputTokenDetails?.cacheWriteTokens,\n\t\t\t\tright.inputTokenDetails?.cacheWriteTokens,\n\t\t\t),\n\t\t},\n\t\toutputTokens: sumOptionalUsageValue(left?.outputTokens, right.outputTokens),\n\t\toutputTokenDetails: {\n\t\t\ttextTokens: sumOptionalUsageValue(left?.outputTokenDetails?.textTokens, right.outputTokenDetails?.textTokens),\n\t\t\treasoningTokens: sumOptionalUsageValue(\n\t\t\t\tleft?.outputTokenDetails?.reasoningTokens,\n\t\t\t\tright.outputTokenDetails?.reasoningTokens,\n\t\t\t),\n\t\t},\n\t\ttotalTokens: sumOptionalUsageValue(left?.totalTokens, right.totalTokens),\n\t\treasoningTokens: sumOptionalUsageValue(left?.reasoningTokens, right.reasoningTokens),\n\t\tcachedInputTokens: sumOptionalUsageValue(left?.cachedInputTokens, right.cachedInputTokens),\n\t}\n}\n\nfunction getRunUsage(request: AgentRequest): LanguageModelUsage | undefined {\n\tif (request.usage !== undefined) return request.usage\n\n\tlet aggregatedUsage: LanguageModelUsage | undefined\n\tfor (const step of request.steps) {\n\t\tconst usage = normalizeStepUsage(step.metadata.usage)\n\t\tif (usage === undefined) continue\n\t\taggregatedUsage = aggregateLanguageModelUsage(aggregatedUsage, usage)\n\t}\n\treturn aggregatedUsage\n}\n\nfunction getRunRequestsUsage(requests: readonly AgentRequest[]): LanguageModelUsage | undefined {\n\tlet aggregatedUsage: LanguageModelUsage | undefined\n\tfor (const request of requests) {\n\t\tconst usage = getRunUsage(request)\n\t\tif (usage === undefined) continue\n\t\taggregatedUsage = aggregateLanguageModelUsage(aggregatedUsage, usage)\n\t}\n\treturn aggregatedUsage\n}\n\nfunction getRunProviderReportedCost(request: AgentRequest): number {\n\tlet cost = 0\n\tfor (const step of request.steps) {\n\t\tcost += getOpenRouterCostFromMetadata(step.metadata.providerMetadata)\n\t}\n\treturn cost\n}\n\nfunction getRunCost(runtime: AgentEvalRuntime | undefined, model: LanguageModel): number {\n\tlet cost = 0\n\tfor (const request of getRunRequests(runtime)) {\n\t\tcost += request.cost ?? resolveAgentTurnUsdCost(getRunProviderReportedCost(request), 0, model, getRunUsage(request))\n\t}\n\treturn cost\n}\n\nfunction getRunStatus(checks: AgentEvalRunResult[\"checks\"], error: string | undefined): AgentEvalRunResult[\"status\"] {\n\tif (error) return \"error\"\n\tif (hasFailedGatingCheck(checks)) return \"failed\"\n\treturn haveAllChecksPassed(checks) ? \"passed\" : \"failed\"\n}\n\nfunction getFinalRunStatus(\n\tchecks: AgentEvalRunResult[\"checks\"],\n\terror: string | undefined,\n\tstopped: boolean,\n): AgentEvalRunResult[\"status\"] {\n\tif (stopped) return \"stopped\"\n\treturn getRunStatus(checks, error)\n}\n\nfunction hasClarificationToolCall(step: ToolStep): boolean {\n\treturn step.toolResults.some(result => result.toolName === ASK_CLARIFICATION_TOOL_NAME)\n}\n\nfunction createEvalClarificationAnswerProvider(autoAnswerClarifications = false): ClarificationAnswerProvider {\n\tif (autoAnswerClarifications) {\n\t\treturn async questions =>\n\t\t\tquestions.map((question, questionIndex) => {\n\t\t\t\tconst answer = question.suggestedAnswers[0]\n\t\t\t\tassert(answer !== undefined, \"Clarification question must have at least one suggested answer.\")\n\t\t\t\treturn { questionIndex, answer }\n\t\t\t})\n\t}\n\treturn async () => []\n}\n\nfunction getRunErrorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error)\n}\n\nfunction getRunErrorStack(error: unknown): string | undefined {\n\treturn error instanceof Error && typeof error.stack === \"string\" ? error.stack : undefined\n}\n\nfunction haveAllChecksPassed(checks: readonly AgentEvalCheckResult[]): boolean {\n\tconst nonDiagnosticChecks = checks.filter(check => check.kind !== \"diagnostic\")\n\tif (nonDiagnosticChecks.length === 0) return checks.length > 0 && checks.every(check => check.passed)\n\treturn nonDiagnosticChecks.every(check => check.passed)\n}\n\nfunction isRunStopped(signal: AbortSignal | undefined, runtime: AgentEvalRuntime | undefined): boolean {\n\tif (signal?.aborted) return true\n\treturn runtime?.agent.chatMessages.at(-1)?.aborted?.reason === \"user-stopped\"\n}\n\nfunction createRunProgressLogger(\n\toptions: Pick<AgentEvalDefinitionRunOptions, \"onProgress\" | \"onRunProgressMessage\">,\n): AgentEvalProgressLogger | undefined {\n\tif (!options.onProgress && !options.onRunProgressMessage) return\n\treturn message => {\n\t\toptions.onProgress?.(message)\n\t\toptions.onRunProgressMessage?.(message)\n\t}\n}\n\nfunction isDiagnosticCheck(check: AgentEvalCheckResult): boolean {\n\treturn check.kind === \"diagnostic\"\n}\n\nfunction createCategoryStatistics(checks: readonly AgentEvalCheckResult[]): AgentEvalCategoryStatisticsByCategory {\n\tconst categories = createEmptyAgentEvalCategoryStatistics()\n\n\tfor (const check of checks) {\n\t\tif (isDiagnosticCheck(check)) continue\n\t\tconst category = categories[check.category]\n\t\tcategory.total++\n\t\tif (check.passed) {\n\t\t\tcategory.passed++\n\t\t} else {\n\t\t\tcategory.failed++\n\t\t}\n\t}\n\n\treturn categories\n}\n\nfunction createRunStatistics(\n\tchecks: readonly AgentEvalCheckResult[],\n\tdurationMs: number,\n\ttotalToolSteps: number,\n\tearlyStop: AgentEvalCurrentStep | undefined,\n): AgentEvalRunStatistics {\n\tconst scoringChecks = checks.filter(check => !isDiagnosticCheck(check))\n\tconst threw = scoringChecks.filter(check => check.error !== undefined).length\n\tconst passed = scoringChecks.filter(check => check.passed).length\n\tconst failed = scoringChecks.length - passed\n\n\treturn {\n\t\tdurationMs,\n\t\ttotalToolSteps,\n\t\tearlyStopped: earlyStop !== undefined,\n\t\tstopStep: earlyStop?.stepIndex,\n\t\tcategories: createCategoryStatistics(checks),\n\t\tcallbacks: {\n\t\t\texecutedWithoutThrow: scoringChecks.length - threw,\n\t\t\texecuted: scoringChecks.length,\n\t\t\tthrew,\n\t\t\tpassed,\n\t\t\tfailed,\n\t\t\ttotal: scoringChecks.length,\n\t\t},\n\t}\n}\n\nfunction commitPendingTreeChanges(engine: VekterEngine): void {\n\tif (!engine.tree.hasUncommittedChanges()) return\n\n\tconst inEventHandlingBefore = engine.scheduler.inEventHandling\n\n\t// Force `processFrame` to commit by pretending to be a top-level handler\n\tengine.scheduler.inEventHandling = 0\n\ttry {\n\t\tengine.testing.processFrame(() => undefined, \"nonUserEvent\")\n\t} finally {\n\t\tengine.scheduler.inEventHandling = inEventHandlingBefore\n\t}\n\tassert(!engine.tree.hasUncommittedChanges(), \"Eval callback requires a committed tree.\")\n}\n\nasync function defaultSendAgentTurn(context: AgentEvalSendContext): Promise<void> {\n\tconst agentSendTimeoutMs = getAgentEvalSendTimeoutMs(\n\t\tundefined,\n\t\tcontext.definition.options.sendTimeoutMs,\n\t\tcontext.definition.options.maxSteps,\n\t)\n\tconst turnOptions = getAgentEvalTurnOptions(\n\t\tcontext.definition.options.maxSteps,\n\t\tcreateEvalClarificationAnswerProvider(context.definition.options.autoAnswerClarifications === true),\n\t)\n\tObject.assign(turnOptions, context.runtime.turnOptions)\n\tconst scriptInstrumentationState = context.scriptInstrumentationState\n\tif (scriptInstrumentationState !== undefined) {\n\t\tconst existingInstrumentation = turnOptions.scriptEvalInstrumentation\n\t\tturnOptions.scriptEvalInstrumentation = {\n\t\t\trecordCall: call => {\n\t\t\t\tscriptInstrumentationState.calls.push(call)\n\t\t\t\texistingInstrumentation?.recordCall(call)\n\t\t\t},\n\t\t}\n\t}\n\tconst requestInput = getAgentEvalRequestInput(context)\n\tawait sendAgentEvalTurnWithTimeout(\n\t\tcontext,\n\t\t() =>\n\t\t\tcontext.runtime.replayTarget !== undefined\n\t\t\t\t? context.agent.resumeLastRequest({\n\t\t\t\t\t\t...turnOptions,\n\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\tmodel: context.model,\n\t\t\t\t\t\treasoningEffort: context.reasoningEffort,\n\t\t\t\t\t})\n\t\t\t\t: context.agent.send(\n\t\t\t\t\t\trequestInput.parts,\n\t\t\t\t\t\trequestInput.implicitSelection,\n\t\t\t\t\t\tcontext.model,\n\t\t\t\t\t\tcontext.reasoningEffort,\n\t\t\t\t\t\trequestInput.images,\n\t\t\t\t\t\trequestInput.files,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...turnOptions,\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\tagentSendTimeoutMs,\n\t)\n\n\tfor (const followUpRequest of context.runtime.followUpRequests ?? []) {\n\t\tawait sendAgentEvalTurnWithTimeout(\n\t\t\tcontext,\n\t\t\t() =>\n\t\t\t\tcontext.agent.send(\n\t\t\t\t\tfollowUpRequest.parts,\n\t\t\t\t\tfollowUpRequest.implicitSelection,\n\t\t\t\t\tcontext.model,\n\t\t\t\t\tcontext.reasoningEffort,\n\t\t\t\t\tfollowUpRequest.images,\n\t\t\t\t\tfollowUpRequest.files,\n\t\t\t\t\t{\n\t\t\t\t\t\t...turnOptions,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\tagentSendTimeoutMs,\n\t\t)\n\t}\n}\n\nasync function sendAgentEvalTurnWithTimeout(\n\tcontext: AgentEvalSendContext,\n\tcreateSendPromise: () => Promise<unknown>,\n\tagentSendTimeoutMs: number,\n): Promise<void> {\n\tif (context.signal?.aborted) {\n\t\tawait context.agent.stop()\n\t\tthrow new Error(\"Agent eval run stopped.\")\n\t}\n\n\tconst sendPromise = createSendPromise()\n\tlet timeout: ReturnType<typeof setTimeout> | undefined\n\tconst timeoutPromise = new Promise<never>((_, reject) => {\n\t\ttimeout = setTimeout(() => {\n\t\t\tvoid context.agent.stop()\n\t\t\treject(\n\t\t\t\tnew Error(\n\t\t\t\t\t`Agent send timed out after ${agentSendTimeoutMs}ms (full turn: model rounds + tool execution). Raise sendTimeoutMs on the eval, maxSteps budget (~${agentEvalSendTimeoutMsPerStep}ms/step), or AGENT_EVAL_SEND_TIMEOUT_MS.`,\n\t\t\t\t),\n\t\t\t)\n\t\t}, agentSendTimeoutMs)\n\t})\n\tlet removeAbortListener = (): void => undefined\n\tconst abortPromise = new Promise<never>((_, reject) => {\n\t\tconst signal = context.signal\n\t\tif (signal === undefined) return\n\n\t\tconst handleAbort = () => {\n\t\t\tvoid context.agent.stop()\n\t\t\treject(new Error(\"Agent eval run stopped.\"))\n\t\t}\n\t\tsignal.addEventListener(\"abort\", handleAbort, { once: true })\n\t\tremoveAbortListener = () => signal.removeEventListener(\"abort\", handleAbort)\n\t})\n\tsendPromise.catch(() => undefined)\n\ttry {\n\t\tawait Promise.race([sendPromise, timeoutPromise, abortPromise])\n\t} finally {\n\t\tif (timeout !== undefined) clearTimeout(timeout)\n\t\tremoveAbortListener()\n\t}\n}\n\nexport async function runAgentEvalDefinition(\n\tdefinition: AgentEvalDefinition,\n\tmodel: LanguageModel,\n\trunNumber: number,\n\toptions: AgentEvalDefinitionRunOptions = {},\n): Promise<AgentEvalRunResult> {\n\tconst report = createAgentEvalReport()\n\tconst startedAt = performance.now()\n\tlet runtime: AgentEvalRuntime | undefined\n\tlet error: string | undefined\n\tlet errorStack: string | undefined\n\tlet earlyStop: AgentEvalCurrentStep | undefined\n\tlet stopped = false\n\tlet state: unknown\n\tconst transcriptInputMessages = new Map<AgentRequest[\"id\"], ReturnType<typeof createAgentEvalInputMessage>>()\n\tconst scriptInstrumentationState: AgentEvalScriptInstrumentationState = { calls: [] }\n\tconst send = options.send ?? defaultSendAgentTurn\n\tconst progress = createRunProgressLogger(options)\n\tprogress?.(`run start: ${definition.name} ${model} #${runNumber}`)\n\n\tconst evaluate = async (\n\t\tcontext: Omit<AgentEvalRunContext, \"report\" | \"steps\" | \"tools\" | \"commands\" | \"model\" | \"runNumber\" | \"state\">,\n\t): Promise<void> => {\n\t\tif (earlyStop !== undefined) return\n\t\tcommitPendingTreeChanges(context.engine)\n\t\tconst currentStep = context.current?.kind === \"step\" ? context.current : undefined\n\t\treport.setCurrentStep(currentStep?.stepIndex)\n\t\ttry {\n\t\t\tawait definition.evaluate({\n\t\t\t\t...context,\n\t\t\t\treport,\n\t\t\t\tstate,\n\t\t\t\t...createAgentEvalHelpers(\n\t\t\t\t\t{\n\t\t\t\t\t\t...context,\n\t\t\t\t\t\trequestStartIndex: runtime?.replayRequestStartIndex,\n\t\t\t\t\t},\n\t\t\t\t\t{ initialStepIndex: definition.options.stepIndex },\n\t\t\t\t),\n\t\t\t\tmodel,\n\t\t\t\treasoningEffort: options.reasoningEffort,\n\t\t\t\trunNumber,\n\t\t\t})\n\t\t\tif (currentStep !== undefined) await options.onRunProgress?.([...report.getChecks()])\n\t\t\tif (\n\t\t\t\tcurrentStep !== undefined &&\n\t\t\t\thasClarificationToolCall(currentStep.step) &&\n\t\t\t\tdefinition.options.autoAnswerClarifications !== true\n\t\t\t) {\n\t\t\t\tif (earlyStop === undefined) earlyStop = currentStep\n\t\t\t\tvoid context.agent.stop()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (definition.options.stopWhenPassed === false) return\n\t\t\tif (currentStep === undefined) return\n\t\t\tif (!haveAllChecksPassed(report.getChecks())) return\n\t\t\tif (earlyStop !== undefined) return\n\n\t\t\tearlyStop = currentStep\n\t\t\tvoid context.agent.stop()\n\t\t} finally {\n\t\t\treport.setCurrentStep(undefined)\n\t\t}\n\t}\n\n\tconst runnableDefinition: AgentEvalDefinition = {\n\t\t...definition,\n\t\tevaluate: context =>\n\t\t\tevaluate({\n\t\t\t\tengine: context.engine,\n\t\t\t\tagent: context.agent,\n\t\t\t\tcurrent: context.current,\n\t\t\t\tscriptInstrumentationState,\n\t\t\t}),\n\t}\n\n\tconst lifecycleHooks: AgentLifeCycleHooks = {\n\t\tonTurnStart: () => {\n\t\t\tprogress?.(`agent turn start: ${definition.name}`)\n\t\t},\n\t\tonFirstToken: () => {\n\t\t\tprogress?.(`model first token: ${definition.name}`)\n\t\t},\n\t\tonInputEstimate: estimatedTokens => {\n\t\t\tprogress?.(`model input estimate: ${definition.name} ${estimatedTokens} tokens`)\n\t\t},\n\t\tonPrepareStep: () => {\n\t\t\tassert(runtime, \"Eval runtime must be loaded before prepare-step hooks run.\")\n\t\t\tconst request = runtime.agent.chatMessages.at(-1)\n\t\t\tif (request !== undefined && !transcriptInputMessages.has(request.id)) {\n\t\t\t\ttranscriptInputMessages.set(request.id, createAgentEvalInputMessage(request, runtime.engine.tree))\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tonStepFinish: async () => {\n\t\t\tassert(runtime, \"Eval runtime must be loaded before step hooks run.\")\n\t\t\tconst request = runtime.agent.chatMessages.at(-1)\n\t\t\tassert(request, \"Step eval hook requires a completed request.\")\n\t\t\tconst step = request.steps.at(-1)\n\t\t\tassert(step, \"Step eval hook requires a current tool step.\")\n\t\t\tconst stepIndex = getRequestStepOffset(runtime, request) + request.steps.length - 1\n\n\t\t\tif (shouldEvaluateOnStepFinish(definition)) {\n\t\t\t\tprogress?.(`step hook: ${definition.name} step ${stepIndex}`)\n\t\t\t\tawait evaluate({\n\t\t\t\t\tengine: runtime.engine,\n\t\t\t\t\tagent: runtime.agent,\n\t\t\t\t\tscriptInstrumentationState,\n\t\t\t\t\tcurrent: {\n\t\t\t\t\t\tkind: \"step\",\n\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\tstep,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tprogress?.(`step hook complete: ${definition.name} step ${stepIndex}`)\n\t\t\t}\n\t\t\tawait options.onRunUpdate?.({\n\t\t\t\tdefinition,\n\t\t\t\tmodel,\n\t\t\t\treasoningEffort: options.reasoningEffort,\n\t\t\t\trunNumber,\n\t\t\t\truntime,\n\t\t\t\ttranscriptInputMessages: new Map(transcriptInputMessages),\n\t\t\t})\n\t\t},\n\t\tonTurnEnd: async agent => {\n\t\t\tassert(runtime, \"Eval runtime must be loaded before final hooks run.\")\n\t\t\tconst request = agent.chatMessages.at(-1)\n\t\t\tassert(request, \"Final eval hook requires a completed request.\")\n\t\t\tif (request.aborted) {\n\t\t\t\tprogress?.(`agent turn end: ${definition.name}`)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (shouldDeferFinalEvaluation(runtime)) {\n\t\t\t\tprogress?.(`final hook deferred: ${definition.name}`)\n\t\t\t\tawait options.onRunUpdate?.({\n\t\t\t\t\tdefinition,\n\t\t\t\t\tmodel,\n\t\t\t\t\treasoningEffort: options.reasoningEffort,\n\t\t\t\t\trunNumber,\n\t\t\t\t\truntime,\n\t\t\t\t\ttranscriptInputMessages: new Map(transcriptInputMessages),\n\t\t\t\t})\n\t\t\t\tprogress?.(`agent turn end: ${definition.name}`)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tprogress?.(`final hook: ${definition.name}`)\n\t\t\tconst lastToolStep = request.steps.at(-1)\n\t\t\tawait evaluate({\n\t\t\t\tengine: runtime.engine,\n\t\t\t\tagent: runtime.agent,\n\t\t\t\tscriptInstrumentationState,\n\t\t\t\tcurrent: {\n\t\t\t\t\tkind: \"final\",\n\t\t\t\t\trequest,\n\t\t\t\t\tlastToolStep,\n\t\t\t\t},\n\t\t\t})\n\t\t\tprogress?.(`final hook complete: ${definition.name}`)\n\t\t\tawait options.onRunUpdate?.({\n\t\t\t\tdefinition,\n\t\t\t\tmodel,\n\t\t\t\treasoningEffort: options.reasoningEffort,\n\t\t\t\trunNumber,\n\t\t\t\truntime,\n\t\t\t\ttranscriptInputMessages: new Map(transcriptInputMessages),\n\t\t\t})\n\t\t\tprogress?.(`agent turn end: ${definition.name}`)\n\t\t},\n\t}\n\n\ttry {\n\t\tprogress?.(`fixture load start: ${definition.fixture.id}`)\n\t\truntime = await definition.fixture.load({ definition, lifecycleHooks, onProgress: progress })\n\t\tprogress?.(`fixture load complete: ${definition.fixture.id}`)\n\t\tstate = await definition.options.prepareState?.(runtime.engine)\n\t\tawait options.onRunUpdate?.({\n\t\t\tdefinition,\n\t\t\tmodel,\n\t\t\treasoningEffort: options.reasoningEffort,\n\t\t\trunNumber,\n\t\t\truntime,\n\t\t\ttranscriptInputMessages: new Map(transcriptInputMessages),\n\t\t})\n\t\tprogress?.(`agent send start: ${definition.name} ${model}`)\n\t\tawait send({\n\t\t\tengine: runtime.engine,\n\t\t\tagent: runtime.agent,\n\t\t\treport,\n\t\t\tstate,\n\t\t\t...createAgentEvalHelpers(\n\t\t\t\t{\n\t\t\t\t\tagent: runtime.agent,\n\t\t\t\t\trequestStartIndex: runtime.replayRequestStartIndex,\n\t\t\t\t\tscriptInstrumentationState,\n\t\t\t\t},\n\t\t\t\t{ initialStepIndex: definition.options.stepIndex },\n\t\t\t),\n\t\t\tmodel,\n\t\t\treasoningEffort: options.reasoningEffort,\n\t\t\trunNumber,\n\t\t\tdefinition: runnableDefinition,\n\t\t\truntime,\n\t\t\tsignal: options.signal,\n\t\t\tscriptInstrumentationState,\n\t\t})\n\t\tstopped = earlyStop === undefined && isRunStopped(options.signal, runtime)\n\t\tprogress?.(`${stopped ? \"agent send stopped\" : \"agent send complete\"}: ${definition.name} ${model}`)\n\t} catch (runError) {\n\t\tstopped = earlyStop === undefined && isRunStopped(options.signal, runtime)\n\t\tif (stopped) {\n\t\t\tprogress?.(`run stopped: ${definition.name}`)\n\t\t} else {\n\t\t\terror = getRunErrorMessage(runError)\n\t\t\terrorStack = getRunErrorStack(runError)\n\t\t\tprogress?.(`run error: ${definition.name}: ${error}`)\n\t\t}\n\t} finally {\n\t\tprogress?.(`runtime dispose start: ${definition.name}`)\n\t\tawait runtime?.dispose?.()\n\t\tprogress?.(`runtime dispose complete: ${definition.name}`)\n\t}\n\n\tprogress?.(`result aggregation start: ${definition.name}`)\n\tconst checks = [...report.getChecks()]\n\tconst durationMs = Math.round(performance.now() - startedAt)\n\tconst runRequests = getRunRequests(runtime)\n\tconst tokenUsage = toAgentEvalTokenUsage(getRunRequestsUsage(runRequests))\n\tconst cost = getRunCost(runtime, model)\n\tconst totalToolSteps = getTotalToolSteps(runtime)\n\tconst toolStepNames = getToolStepNames(runtime)\n\tconst statistics = createRunStatistics(checks, durationMs, totalToolSteps, earlyStop)\n\tconst score = statistics.callbacks.total === 0 ? 0 : getWeightedScore(checks)\n\tconst result: AgentEvalRunResult = {\n\t\tevalId: definition.id,\n\t\tfixtureId: definition.fixture.id,\n\t\tname: definition.name,\n\t\tsourceFile: definition.sourceFile,\n\t\tmodel,\n\t\treasoningEffort: options.reasoningEffort,\n\t\trunNumber,\n\t\tstatus: getFinalRunStatus(checks, error, stopped),\n\t\tscore,\n\t\tdurationMs,\n\t\tcost,\n\t\ttokenUsage,\n\t\ttotalToolSteps,\n\t\ttoolStepNames: toolStepNames.length > 0 ? toolStepNames : undefined,\n\t\tstatistics,\n\t\tchecks,\n\t}\n\tprogress?.(`result aggregation complete: ${definition.name}`)\n\tlet finalResult: AgentEvalRunResult = error ? { ...result, error } : result\n\tif (options.transcript === true && runtime !== undefined) {\n\t\tprogress?.(`transcript write start: ${definition.name}`)\n\t\tconst writeTranscript = options.writeTranscript\n\t\tassert(writeTranscript !== undefined, \"Transcript writing is enabled but no transcript writer was provided.\")\n\t\tconst transcriptPath = await writeTranscript({\n\t\t\tresult: finalResult,\n\t\t\tchatMessages: runtime.agent.chatMessages,\n\t\t\ttree: runtime.engine.tree,\n\t\t\tinputMessages: transcriptInputMessages,\n\t\t})\n\t\tfinalResult = { ...finalResult, transcriptPath }\n\t\tprogress?.(`transcript write complete: ${definition.name}`)\n\t}\n\tprogress?.(`run complete: ${definition.name} ${finalResult.status}`)\n\treturn errorStack ? { ...finalResult, errorStack } : finalResult\n}\n\nexport async function runAgentEvalDefinitions(\n\tdefinitions: readonly AgentEvalDefinition[],\n\toptions: AgentEvalRunnerOptions,\n): Promise<readonly AgentEvalRunResult[]> {\n\tconst results: AgentEvalRunResult[] = []\n\toptions.onProgress?.(\n\t\t`run queue: ${definitions.length} evals x ${options.modelConfigs.length} model configs x ${options.runs} runs`,\n\t)\n\tlet runIndex = 0\n\tfor (let definitionIndex = 0; definitionIndex < definitions.length; definitionIndex++) {\n\t\tconst definition = definitions[definitionIndex]\n\t\tif (definition === undefined) continue\n\t\tfor (let modelConfigIndex = 0; modelConfigIndex < options.modelConfigs.length; modelConfigIndex++) {\n\t\t\tconst modelConfig = options.modelConfigs[modelConfigIndex]\n\t\t\tif (modelConfig === undefined) continue\n\t\t\tfor (let runNumber = 1; runNumber <= options.runs; runNumber++) {\n\t\t\t\tif (options.signal?.aborted) return results\n\t\t\t\tconst selectionContext: AgentEvalRunSelectionContext = {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tmodelConfig,\n\t\t\t\t\trunNumber,\n\t\t\t\t\ttotalRuns: options.runs,\n\t\t\t\t\tdefinitionIndex,\n\t\t\t\t\tmodelConfigIndex,\n\t\t\t\t\trunIndex,\n\t\t\t\t}\n\t\t\t\trunIndex++\n\t\t\t\tif (options.shouldRun !== undefined && !options.shouldRun(selectionContext)) continue\n\t\t\t\tawait options.onRunStart?.(selectionContext)\n\t\t\t\tconst result = await runAgentEvalDefinition(definition, modelConfig.model, runNumber, {\n\t\t\t\t\treasoningEffort: modelConfig.reasoningEffort,\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t\tsend: options.send,\n\t\t\t\t\tonProgress: options.onProgress,\n\t\t\t\t\tonRunProgressMessage: message =>\n\t\t\t\t\t\toptions.onRunProgressMessage?.({\n\t\t\t\t\t\t\tdefinition,\n\t\t\t\t\t\t\tmodelConfig,\n\t\t\t\t\t\t\trunNumber,\n\t\t\t\t\t\t\ttotalRuns: options.runs,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t}),\n\t\t\t\t\tonRunProgress: checks =>\n\t\t\t\t\t\toptions.onRunProgress?.({\n\t\t\t\t\t\t\tdefinition,\n\t\t\t\t\t\t\tmodelConfig,\n\t\t\t\t\t\t\trunNumber,\n\t\t\t\t\t\t\ttotalRuns: options.runs,\n\t\t\t\t\t\t\tchecks,\n\t\t\t\t\t\t}),\n\t\t\t\t\ttranscript: options.transcript,\n\t\t\t\t\twriteTranscript: options.writeTranscript,\n\t\t\t\t\tonRunUpdate: options.onRunUpdate,\n\t\t\t\t})\n\t\t\t\tresults.push(result)\n\t\t\t\tawait options.onRunComplete?.(result)\n\t\t\t}\n\t\t}\n\t}\n\treturn results\n}\n", "import type { ModelMessage } from \"ai\"\nimport { isCommand } from \"app/ai/agents/dsl.ts\"\nimport { getRequestModelMessages, isCommandError } from \"app/ai/agents/messages.ts\"\nimport { commandToDSL } from \"app/ai/agents/nodeToDSLCommands.ts\"\nimport type { AgentRequest } from \"app/ai/agents/types.ts\"\nimport type { CanvasTree } from \"document/models/CanvasTree/CanvasTree.ts\"\nimport { createAgentEvalInputMessage } from \"./transcriptInput.ts\"\nimport type { AgentEvalRunResult } from \"./types.ts\"\n\nexport type AgentEvalTranscriptInputMessages = ReadonlyMap<string, ModelMessage>\n\nexport interface AgentEvalTranscript {\n\tschemaVersion: 1\n\tgeneratedAt: string\n\tresult: AgentEvalRunResult\n\tdslCommands: readonly string[]\n\tinputMessages: readonly ModelMessage[]\n\tresponseMessages: readonly ModelMessage[]\n}\n\nfunction collectDSLCommands(chatMessages: readonly AgentRequest[]): readonly string[] {\n\treturn chatMessages\n\t\t.flatMap(request => request.steps ?? [])\n\t\t.flatMap(step => step.content)\n\t\t.flatMap(part => (Array.isArray(part) ? part : []))\n\t\t.flatMap(line => {\n\t\t\tif (isCommand(line)) return [commandToDSL(line)]\n\t\t\tif (isCommandError(line)) return [line.raw]\n\t\t\treturn []\n\t\t})\n}\n\nexport function createAgentEvalTranscriptData(\n\tresult: AgentEvalRunResult,\n\tchatMessages: readonly AgentRequest[],\n\ttree: CanvasTree,\n\tinputMessages?: AgentEvalTranscriptInputMessages,\n): AgentEvalTranscript {\n\treturn {\n\t\tschemaVersion: 1,\n\t\tgeneratedAt: new Date().toISOString(),\n\t\tresult,\n\t\tdslCommands: collectDSLCommands(chatMessages),\n\t\tinputMessages: chatMessages.map(\n\t\t\trequest => inputMessages?.get(request.id) ?? createAgentEvalInputMessage(request, tree),\n\t\t),\n\t\tresponseMessages: chatMessages.flatMap(getRequestModelMessages),\n\t}\n}\n", "import { assertNever } from \"@framerjs/shared\"\nimport { formatAgentModelConfig } from \"app/ai/agentModelConfig.ts\"\nimport { agentEvalCategories } from \"./categoryStatistics.ts\"\nimport type { AgentEvalJsonReport } from \"./jsonReportTypes.ts\"\nimport type { AgentEvalCheckCategory, AgentEvalCheckResult } from \"./reportTypes.ts\"\nimport type { AgentEvalTokenUsage } from \"./tokenUsage.ts\"\nimport type { AgentEvalRunResult } from \"./types.ts\"\n\nexport type AgentEvalPanelRunStatus = \"passed\" | \"failed\" | \"error\" | \"stopped\"\n\nexport function createAgentEvalUiRunId(\n\trunInvocationId: string | undefined,\n\tevalId: string,\n\tmodel: AgentEvalRunResult[\"model\"],\n\treasoningEffort: AgentEvalRunResult[\"reasoningEffort\"],\n\trunNumber: number,\n): string {\n\tconst runConfigId = formatAgentModelConfig({ model, reasoningEffort })\n\tif (runInvocationId === undefined) return `${evalId}:${runConfigId}:${runNumber}`\n\treturn `${runInvocationId}:${evalId}:${runConfigId}:${runNumber}`\n}\n\nexport interface AgentEvalUiCheck {\n\tid: string\n\tcategory: AgentEvalCheckCategory\n\tname: string\n\tsourceFile: string\n\tgroup?: string\n\titem?: string\n\tstatus: \"passed\" | \"failed\"\n\tfailureTitle?: string\n\tmessage?: string\n\tassertion?: string\n\tachievedStep?: number\n\terror?: string\n\terrorStack?: string\n\texpected?: string\n\treceived?: string\n\tmatcher?: string\n\tdurationMs: number\n}\n\nexport interface AgentEvalUiFailedCheck extends AgentEvalUiCheck {\n\tstatus: \"failed\"\n\tfailureTitle: string\n}\n\nexport interface AgentEvalUiCategory {\n\tcategory: AgentEvalCheckCategory\n\tpassed: number\n\tfailed: number\n\ttotal: number\n\tlabel: string\n}\n\nexport interface AgentEvalUiFailedCheckGroup {\n\tid: string\n\tlabel: string\n\tchecks: readonly AgentEvalUiFailedCheck[]\n}\n\nexport interface AgentEvalUiRun {\n\tid: string\n\trunInvocationId?: string\n\tevalId: string\n\tfixtureId: string\n\tname: string\n\tsourceFile: string\n\tmodel: AgentEvalRunResult[\"model\"]\n\treasoningEffort?: AgentEvalRunResult[\"reasoningEffort\"]\n\trunNumber: number\n\tstatus: AgentEvalRunResult[\"status\"]\n\tdurationMs: number\n\tcost: number\n\ttokenUsage?: AgentEvalTokenUsage\n\ttotalToolSteps: number\n\terror?: string\n\terrorStack?: string\n\tpanelStatus: AgentEvalPanelRunStatus\n\tstatusLabel: string\n\ttotalChecks: number\n\tpassedChecks: number\n\tfailedCheckCount: number\n\tcategorySummaries: readonly string[]\n\tfailedChecks: readonly AgentEvalUiFailedCheck[]\n\tfailedCheckGroups: readonly AgentEvalUiFailedCheckGroup[]\n\tcategories: readonly AgentEvalUiCategory[]\n\tchecks: readonly AgentEvalUiCheck[]\n\trawResult: AgentEvalRunResult\n}\n\nexport interface AgentEvalUiReport {\n\tgeneratedAt: string\n\tsummary: AgentEvalJsonReport[\"summary\"]\n\truns: readonly AgentEvalUiRun[]\n}\n\nexport function mapAgentEvalRunStatusToPanelStatus(status: AgentEvalRunResult[\"status\"]): AgentEvalPanelRunStatus {\n\tswitch (status) {\n\t\tcase \"passed\":\n\t\t\treturn \"passed\"\n\t\tcase \"failed\":\n\t\t\treturn \"failed\"\n\t\tcase \"error\":\n\t\t\treturn \"error\"\n\t\tcase \"stopped\":\n\t\t\treturn \"stopped\"\n\t\tdefault:\n\t\t\tassertNever(status)\n\t}\n}\n\nfunction getStatusLabel(status: AgentEvalPanelRunStatus): string {\n\tswitch (status) {\n\t\tcase \"passed\":\n\t\t\treturn \"Passed\"\n\t\tcase \"failed\":\n\t\t\treturn \"Failed\"\n\t\tcase \"error\":\n\t\t\treturn \"Error\"\n\t\tcase \"stopped\":\n\t\t\treturn \"Stopped\"\n\t\tdefault:\n\t\t\tassertNever(status)\n\t}\n}\n\nfunction formatAgentEvalCheckCategory(category: AgentEvalCheckCategory): string {\n\treturn `${category.slice(0, 1).toUpperCase()}${category.slice(1)}`\n}\n\nfunction getFailedCheckTitle(check: AgentEvalCheckResult): string {\n\tconst parts = [formatAgentEvalCheckCategory(check.category), check.group, check.item]\n\tif (check.item !== check.name) parts.push(check.name)\n\treturn parts.filter(part => part !== undefined).join(\" \u203A \")\n}\n\nfunction adaptCheck(check: AgentEvalCheckResult, sourceFile: string): AgentEvalUiCheck {\n\tconst status: AgentEvalUiCheck[\"status\"] = check.passed ? \"passed\" : \"failed\"\n\tconst uiCheck = {\n\t\t...check,\n\t\tsourceFile,\n\t\tstatus,\n\t}\n\treturn status === \"failed\" ? { ...uiCheck, failureTitle: getFailedCheckTitle(check) } : uiCheck\n}\n\nfunction isFailedCheck(check: AgentEvalUiCheck): check is AgentEvalUiFailedCheck {\n\treturn check.status === \"failed\"\n}\n\nfunction getFailedCheckGroup(check: AgentEvalUiFailedCheck): AgentEvalUiFailedCheckGroup {\n\tconst categoryLabel = formatAgentEvalCheckCategory(check.category)\n\tif (check.group === undefined) return { id: check.category, label: categoryLabel, checks: [check] }\n\treturn {\n\t\tid: `${check.category}:${check.group}`,\n\t\tlabel: `${categoryLabel} \u203A ${check.group}`,\n\t\tchecks: [check],\n\t}\n}\n\nfunction groupFailedChecks(checks: readonly AgentEvalUiFailedCheck[]): readonly AgentEvalUiFailedCheckGroup[] {\n\tconst groups = new Map<string, AgentEvalUiFailedCheckGroup>()\n\n\tfor (const check of checks) {\n\t\tconst group = getFailedCheckGroup(check)\n\t\tconst existing = groups.get(group.id)\n\t\tif (existing) {\n\t\t\tgroups.set(group.id, { ...existing, checks: [...existing.checks, check] })\n\t\t} else {\n\t\t\tgroups.set(group.id, group)\n\t\t}\n\t}\n\n\treturn Array.from(groups.values())\n}\n\nexport function adaptAgentEvalRunResultToUiRun(result: AgentEvalRunResult, runInvocationId?: string): AgentEvalUiRun {\n\tconst panelStatus = mapAgentEvalRunStatusToPanelStatus(result.status)\n\tconst adaptedCategories = agentEvalCategories.map(category => {\n\t\tconst statistics = result.statistics.categories[category]\n\t\treturn Object.assign({ category }, statistics, {\n\t\t\tlabel: `${category} ${statistics.passed}/${statistics.total}`,\n\t\t})\n\t})\n\tconst checks = result.checks.map(check => adaptCheck(check, result.sourceFile))\n\tconst failedChecks = checks.filter(isFailedCheck)\n\treturn {\n\t\t...result,\n\t\tid: createAgentEvalUiRunId(runInvocationId, result.evalId, result.model, result.reasoningEffort, result.runNumber),\n\t\trunInvocationId,\n\t\tpanelStatus,\n\t\tstatusLabel: getStatusLabel(panelStatus),\n\t\ttotalChecks: result.statistics.callbacks.total,\n\t\tpassedChecks: result.statistics.callbacks.passed,\n\t\tfailedCheckCount: result.statistics.callbacks.failed,\n\t\tcategorySummaries: adaptedCategories.map(category => category.label),\n\t\tfailedChecks,\n\t\tfailedCheckGroups: groupFailedChecks(failedChecks),\n\t\tcategories: adaptedCategories,\n\t\tchecks,\n\t\trawResult: result,\n\t}\n}\n\nexport function adaptAgentEvalJsonReportToUiReport(\n\treport: AgentEvalJsonReport,\n\trunInvocationId?: string,\n): AgentEvalUiReport {\n\treturn {\n\t\t...report,\n\t\truns: report.results.map(result => adaptAgentEvalRunResultToUiRun(result, runInvocationId)),\n\t}\n}\n", "import type { AgentEvalDefinition } from \"./definition.ts\"\nimport { createAgentEvalJsonReport } from \"./jsonReport.ts\"\nimport type { AgentEvalJsonReport } from \"./jsonReportTypes.ts\"\nimport type { AgentEvalModelConfig } from \"./modelConfig.ts\"\nimport { runAgentEvalDefinitions } from \"./runner.ts\"\nimport type {\n\tAgentEvalRunProgressMessageContext,\n\tAgentEvalRunSelectionContext,\n\tAgentEvalRunStartContext,\n\tAgentEvalRunUpdate,\n\tAgentEvalTranscriptWriter,\n} from \"./runner.ts\"\nimport { createAgentEvalTranscriptData, type AgentEvalTranscript } from \"./transcriptData.ts\"\nimport type { AgentEvalRunResult, AgentEvalProgressLogger } from \"./types.ts\"\nimport {\n\tadaptAgentEvalJsonReportToUiReport,\n\tadaptAgentEvalRunResultToUiRun,\n\tcreateAgentEvalUiRunId,\n} from \"./uiAdapter.ts\"\nimport type { AgentEvalUiReport, AgentEvalUiRun } from \"./uiAdapter.ts\"\n\nlet nextBrowserRunInvocationIndex = 0\n\nexport interface AgentEvalBrowserRunnerOptions {\n\tmodelConfigs: readonly AgentEvalModelConfig[]\n\truns: number\n\tsignal?: AbortSignal\n\ttranscript?: boolean\n\tonProgress?: AgentEvalProgressLogger\n\tshouldRun?: (context: AgentEvalRunSelectionContext) => boolean\n\tonRunQueued?: (context: AgentEvalRunStartContext) => void | Promise<void>\n\tonRunStart?: (context: AgentEvalRunStartContext) => void | Promise<void>\n\tonRunProgressMessage?: (context: AgentEvalRunProgressMessageContext) => void\n\tonRunStopped?: (context: AgentEvalRunStartContext) => void | Promise<void>\n\tonRun?: (run: AgentEvalUiRun) => void | Promise<void>\n\tonRunUpdate?: (update: AgentEvalRunUpdate) => void | Promise<void>\n}\n\nexport interface AgentEvalBrowserRunnerResult {\n\tresults: readonly AgentEvalRunResult[]\n\treport: AgentEvalJsonReport\n\tuiReport: AgentEvalUiReport\n\ttranscripts: readonly AgentEvalBrowserTranscript[]\n}\n\nexport interface AgentEvalBrowserTranscript {\n\tpath: string\n\tdata: AgentEvalTranscript\n}\n\nfunction sanitizeFileNameSegment(value: string): string {\n\treturn value\n\t\t.replaceAll(/[^\\w.-]+/gu, \"-\")\n\t\t.replaceAll(/^-+|-+$/gu, \"\")\n\t\t.slice(0, 80)\n}\n\nfunction createBrowserTranscriptFileName(result: AgentEvalRunResult): string {\n\tconst sourceFileName = result.sourceFile.split(\"/\").at(-1) ?? result.sourceFile\n\tconst modelConfig = result.reasoningEffort === undefined ? result.model : `${result.model}=${result.reasoningEffort}`\n\tconst stem = [sourceFileName, result.evalId, modelConfig, `run-${result.runNumber}`]\n\t\t.map(sanitizeFileNameSegment)\n\t\t.join(\"__\")\n\treturn `${stem}.transcript.json`\n}\n\nfunction createBrowserTranscriptWriter(transcripts: AgentEvalBrowserTranscript[]): AgentEvalTranscriptWriter {\n\treturn async ({ result, chatMessages, tree, inputMessages }) => {\n\t\tconst transcriptPath = `agent-eval-transcripts/${createBrowserTranscriptFileName(result)}`\n\t\ttranscripts.push({\n\t\t\tpath: transcriptPath,\n\t\t\tdata: createAgentEvalTranscriptData(result, chatMessages, tree, inputMessages),\n\t\t})\n\t\treturn transcriptPath\n\t}\n}\n\nexport async function runAgentEvalDefinitionsForBrowser(\n\tdefinitions: readonly AgentEvalDefinition[],\n\toptions: AgentEvalBrowserRunnerOptions,\n): Promise<AgentEvalBrowserRunnerResult> {\n\tconst runInvocationId = `browser-run-${nextBrowserRunInvocationIndex++}`\n\tconst queuedRuns: AgentEvalRunStartContext[] = []\n\tconst completedRunIds = new Set<string>()\n\tconst transcripts: AgentEvalBrowserTranscript[] = []\n\tlet runIndex = 0\n\tfor (let definitionIndex = 0; definitionIndex < definitions.length; definitionIndex++) {\n\t\tconst definition = definitions[definitionIndex]\n\t\tif (definition === undefined) continue\n\t\tfor (let modelConfigIndex = 0; modelConfigIndex < options.modelConfigs.length; modelConfigIndex++) {\n\t\t\tconst modelConfig = options.modelConfigs[modelConfigIndex]\n\t\t\tif (modelConfig === undefined) continue\n\t\t\tfor (let runNumber = 1; runNumber <= options.runs; runNumber++) {\n\t\t\t\tconst context: AgentEvalRunSelectionContext = {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tmodelConfig,\n\t\t\t\t\trunNumber,\n\t\t\t\t\ttotalRuns: options.runs,\n\t\t\t\t\trunInvocationId,\n\t\t\t\t\tdefinitionIndex,\n\t\t\t\t\tmodelConfigIndex,\n\t\t\t\t\trunIndex,\n\t\t\t\t}\n\t\t\t\trunIndex++\n\t\t\t\tif (options.shouldRun !== undefined && !options.shouldRun(context)) continue\n\t\t\t\tqueuedRuns.push(context)\n\t\t\t\tawait options.onRunQueued?.(context)\n\t\t\t}\n\t\t}\n\t}\n\tconst results = await runAgentEvalDefinitions(definitions, {\n\t\tmodelConfigs: options.modelConfigs,\n\t\truns: options.runs,\n\t\tsignal: options.signal,\n\t\ttranscript: options.transcript,\n\t\twriteTranscript: createBrowserTranscriptWriter(transcripts),\n\t\tonProgress: options.onProgress,\n\t\tshouldRun: options.shouldRun,\n\t\tonRunStart: context => options.onRunStart?.({ ...context, runInvocationId }),\n\t\tonRunProgressMessage: context => options.onRunProgressMessage?.({ ...context, runInvocationId }),\n\t\tonRunUpdate: update => options.onRunUpdate?.({ ...update, runInvocationId }),\n\t\tonRunComplete: async result => {\n\t\t\tconst run = adaptAgentEvalRunResultToUiRun(result, runInvocationId)\n\t\t\tcompletedRunIds.add(run.id)\n\t\t\tawait options.onRun?.(run)\n\t\t},\n\t})\n\tif (options.signal?.aborted) {\n\t\tfor (const queuedRun of queuedRuns) {\n\t\t\tif (completedRunIds.has(createRunId(queuedRun))) continue\n\t\t\tawait options.onRunStopped?.(queuedRun)\n\t\t}\n\t}\n\n\tconst report = createAgentEvalJsonReport(results)\n\treturn {\n\t\tresults,\n\t\treport,\n\t\tuiReport: adaptAgentEvalJsonReportToUiReport(report, runInvocationId),\n\t\ttranscripts,\n\t}\n}\n\nfunction createRunId(context: AgentEvalRunStartContext): string {\n\treturn createAgentEvalUiRunId(\n\t\tcontext.runInvocationId,\n\t\tcontext.definition.id,\n\t\tcontext.modelConfig.model,\n\t\tcontext.modelConfig.reasoningEffort,\n\t\tcontext.runNumber,\n\t)\n}\n", "import { registerAgentEval, withAgentEvalSourceFile as runWithAgentEvalSourceFile } from \"./definition.ts\"\n\nexport interface AgentEvalFileImporter {\n\tsourceFile: string\n\timportEvalFile: () => Promise<unknown>\n}\n\nexport function ensureAgentEvalExpectGlobal(\n\texpectGlobal: unknown,\n\thasExistingExpectGlobal: () => boolean = () => Reflect.get(globalThis, \"expect\") !== undefined,\n): void {\n\tif (hasExistingExpectGlobal()) return\n\tObject.defineProperty(globalThis, \"expect\", {\n\t\tvalue: expectGlobal,\n\t\tconfigurable: true,\n\t\twritable: true,\n\t})\n}\n\nexport async function withAgentEvalGlobal<T>(callback: () => Promise<T>): Promise<T> {\n\tconst hadOriginalEvaluation = Object.prototype.hasOwnProperty.call(globalThis, \"evaluation\")\n\tconst originalEvaluation = globalThis.evaluation\n\n\tObject.defineProperty(globalThis, \"evaluation\", {\n\t\tvalue: registerAgentEval,\n\t\tconfigurable: true,\n\t\twritable: true,\n\t})\n\n\ttry {\n\t\treturn await callback()\n\t} finally {\n\t\tif (hadOriginalEvaluation) {\n\t\t\tObject.defineProperty(globalThis, \"evaluation\", {\n\t\t\t\tvalue: originalEvaluation,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t})\n\t\t} else {\n\t\t\tReflect.deleteProperty(globalThis, \"evaluation\")\n\t\t}\n\t}\n}\n\nexport async function importAgentEvalFilesWithGlobals(\n\timporters: readonly AgentEvalFileImporter[],\n\texpectGlobal: unknown,\n\thasExistingExpectGlobal?: () => boolean,\n): Promise<void> {\n\tensureAgentEvalExpectGlobal(expectGlobal, hasExistingExpectGlobal)\n\tawait withAgentEvalGlobal(async () => {\n\t\tfor (const importer of importers) {\n\t\t\t// Callers provide the import callback so this shared path stays browser-safe and Node-free.\n\t\t\tawait runWithAgentEvalSourceFile(importer.sourceFile, importer.importEvalFile)\n\t\t}\n\t})\n}\n", "import { isEqual } from \"library/render/utils/isEqual.ts\"\nimport { type AgentEvalFileImporter, importAgentEvalFilesWithGlobals } from \"./evalGlobals.ts\"\nimport { recordPassedAssertion } from \"./passedAssertionCapture.ts\"\n\ninterface BrowserEvalExpectation<T> {\n\treadonly not: BrowserEvalExpectation<T>\n\ttoBe(expected: T): void\n\ttoEqual(expected: unknown): void\n\ttoMatch(expected: string | RegExp): void\n\ttoMatchObject(expected: Record<string, unknown>): void\n\ttoBeDefined(): void\n\ttoBeUndefined(): void\n\ttoBeTruthy(): void\n\ttoBeFalsy(): void\n\ttoHaveLength(expected: number): void\n\ttoContain(expected: unknown): void\n\ttoContainEqual(expected: unknown): void\n\ttoBeCloseTo(expected: number, precision?: number): void\n\ttoBeGreaterThan(expected: number): void\n\ttoBeGreaterThanOrEqual(expected: number): void\n\ttoBeLessThan(expected: number): void\n\ttoBeLessThanOrEqual(expected: number): void\n}\n\ninterface BrowserEvalAnyConstructor {\n\treadonly name: string\n\treadonly prototype?: object\n}\n\nconst browserEvalAsymmetricMatcher = Symbol(\"BrowserEvalAsymmetricMatcher\")\n\ninterface BrowserEvalAsymmetricMatcher {\n\treadonly [browserEvalAsymmetricMatcher]: true\n\treadonly label: string\n\tmatches(actual: unknown): boolean\n}\n\ninterface BrowserEvalExpect {\n\t<T>(actual: T): BrowserEvalExpectation<T>\n\tany(expected: BrowserEvalAnyConstructor): BrowserEvalAsymmetricMatcher\n\tanything(): BrowserEvalAsymmetricMatcher\n\tarrayContaining(expected: readonly unknown[]): BrowserEvalAsymmetricMatcher\n\tobjectContaining(expected: Record<string, unknown>): BrowserEvalAsymmetricMatcher\n\tstringContaining(expected: string): BrowserEvalAsymmetricMatcher\n\tstringMatching(expected: string | RegExp): BrowserEvalAsymmetricMatcher\n}\n\nconst browserEvalExpect: BrowserEvalExpect = Object.assign(\n\t<T>(actual: T) => createBrowserEvalExpectation(actual, false),\n\t{\n\t\tany: (expected: BrowserEvalAnyConstructor) =>\n\t\t\tcreateBrowserEvalAsymmetricMatcher(`expect.any(${expected.name})`, actual =>\n\t\t\t\tmatchesAnyConstructor(actual, expected),\n\t\t\t),\n\t\tanything: () =>\n\t\t\tcreateBrowserEvalAsymmetricMatcher(\"expect.anything()\", actual => actual !== null && actual !== undefined),\n\t\tarrayContaining: (expected: readonly unknown[]) =>\n\t\t\tcreateBrowserEvalAsymmetricMatcher(`expect.arrayContaining(${formatValue(expected)})`, actual =>\n\t\t\t\tmatchesArrayContaining(actual, expected),\n\t\t\t),\n\t\tobjectContaining: (expected: Record<string, unknown>) =>\n\t\t\tcreateBrowserEvalAsymmetricMatcher(`expect.objectContaining(${formatValue(expected)})`, actual =>\n\t\t\t\tmatchesObjectContaining(actual, expected),\n\t\t\t),\n\t\tstringContaining: (expected: string) =>\n\t\t\tcreateBrowserEvalAsymmetricMatcher(`expect.stringContaining(${formatValue(expected)})`, actual =>\n\t\t\t\tmatchesStringContaining(actual, expected),\n\t\t\t),\n\t\tstringMatching: (expected: string | RegExp) =>\n\t\t\tcreateBrowserEvalAsymmetricMatcher(`expect.stringMatching(${formatValue(expected)})`, actual =>\n\t\t\t\tmatchesStringMatching(actual, expected),\n\t\t\t),\n\t},\n)\n\ninterface BrowserEvalAssertionDetails {\n\tmatcher: string\n\texpected?: string\n\treceived?: string\n}\n\nclass BrowserEvalAssertionError extends Error {\n\treadonly assertion: BrowserEvalAssertionDetails\n\n\tconstructor(message: string, assertion: BrowserEvalAssertionDetails) {\n\t\tsuper(message)\n\t\tthis.name = \"BrowserEvalAssertionError\"\n\t\tthis.assertion = assertion\n\t}\n}\n\nfunction createBrowserEvalAsymmetricMatcher(\n\tlabel: string,\n\tmatches: (actual: unknown) => boolean,\n): BrowserEvalAsymmetricMatcher {\n\treturn {\n\t\t[browserEvalAsymmetricMatcher]: true,\n\t\tlabel,\n\t\tmatches,\n\t}\n}\n\nfunction formatValue(value: unknown): string {\n\tif (isBrowserEvalAsymmetricMatcher(value)) return value.label\n\tif (value instanceof RegExp) return value.toString()\n\ttry {\n\t\treturn JSON.stringify(value) ?? String(value)\n\t} catch {\n\t\treturn String(value)\n\t}\n}\n\nfunction createBrowserEvalExpectation<T>(actual: T, negated: boolean): BrowserEvalExpectation<T> {\n\tfunction assertCondition(condition: boolean, message: string, assertion: BrowserEvalAssertionDetails): void {\n\t\tif (!negated === condition) {\n\t\t\trecordPassedAssertion({ message, ...assertion })\n\t\t\treturn\n\t\t}\n\t\tthrow new BrowserEvalAssertionError(message, assertion)\n\t}\n\n\tconst expectation: BrowserEvalExpectation<T> = {\n\t\tget not() {\n\t\t\treturn createBrowserEvalExpectation(actual, !negated)\n\t\t},\n\t\ttoBe: expected => {\n\t\t\tassertCondition(\n\t\t\t\tObject.is(actual, expected),\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be ${formatValue(expected)}`,\n\t\t\t\t{ matcher: negated ? \"not.toBe\" : \"toBe\", expected: formatValue(expected), received: formatValue(actual) },\n\t\t\t)\n\t\t},\n\t\ttoEqual: expected => {\n\t\t\tassertCondition(\n\t\t\t\tmatchesExpected(actual, expected),\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to equal ${formatValue(expected)}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toEqual\" : \"toEqual\",\n\t\t\t\t\texpected: formatValue(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoMatch: expected => {\n\t\t\tassertCondition(\n\t\t\t\tmatchesStringMatching(actual, expected),\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to match ${formatValue(expected)}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toMatch\" : \"toMatch\",\n\t\t\t\t\texpected: formatValue(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoMatchObject: expected => {\n\t\t\tassertCondition(\n\t\t\t\tmatchesObjectContaining(actual, expected),\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to match object ${formatValue(expected)}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toMatchObject\" : \"toMatchObject\",\n\t\t\t\t\texpected: formatValue(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoBeDefined: () => {\n\t\t\tassertCondition(actual !== undefined, `Expected value ${negated ? \"not \" : \"\"}to be defined`, {\n\t\t\t\tmatcher: negated ? \"not.toBeDefined\" : \"toBeDefined\",\n\t\t\t\texpected: negated ? \"undefined\" : \"defined\",\n\t\t\t\treceived: formatValue(actual),\n\t\t\t})\n\t\t},\n\t\ttoBeUndefined: () => {\n\t\t\tassertCondition(actual === undefined, `Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be undefined`, {\n\t\t\t\tmatcher: negated ? \"not.toBeUndefined\" : \"toBeUndefined\",\n\t\t\t\texpected: negated ? \"defined\" : \"undefined\",\n\t\t\t\treceived: formatValue(actual),\n\t\t\t})\n\t\t},\n\t\ttoBeTruthy: () => {\n\t\t\tassertCondition(Boolean(actual), `Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be truthy`, {\n\t\t\t\tmatcher: negated ? \"not.toBeTruthy\" : \"toBeTruthy\",\n\t\t\t\texpected: negated ? \"falsy\" : \"truthy\",\n\t\t\t\treceived: formatValue(actual),\n\t\t\t})\n\t\t},\n\t\ttoBeFalsy: () => {\n\t\t\tassertCondition(!actual, `Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be falsy`, {\n\t\t\t\tmatcher: negated ? \"not.toBeFalsy\" : \"toBeFalsy\",\n\t\t\t\texpected: negated ? \"truthy\" : \"falsy\",\n\t\t\t\treceived: formatValue(actual),\n\t\t\t})\n\t\t},\n\t\ttoHaveLength: expected => {\n\t\t\tconst actualLength = getLength(actual)\n\t\t\tassertCondition(\n\t\t\t\tactualLength === expected,\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to have length ${expected}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toHaveLength\" : \"toHaveLength\",\n\t\t\t\t\texpected: String(expected),\n\t\t\t\t\treceived: String(actualLength),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoContain: expected => {\n\t\t\tassertCondition(\n\t\t\t\tcontainsValue(actual, expected),\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to contain ${formatValue(expected)}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toContain\" : \"toContain\",\n\t\t\t\t\texpected: formatValue(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoContainEqual: expected => {\n\t\t\tassertCondition(\n\t\t\t\tcontainsEqualValue(actual, expected),\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to contain equal ${formatValue(expected)}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toContainEqual\" : \"toContainEqual\",\n\t\t\t\t\texpected: formatValue(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoBeCloseTo: (expected, precision = 2) => {\n\t\t\tconst difference = typeof actual === \"number\" ? Math.abs(actual - expected) : Number.POSITIVE_INFINITY\n\t\t\tconst threshold = 0.5 * 10 ** -precision\n\t\t\tassertCondition(\n\t\t\t\tdifference < threshold,\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be close to ${expected}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toBeCloseTo\" : \"toBeCloseTo\",\n\t\t\t\t\texpected: String(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoBeGreaterThan: expected => {\n\t\t\tassertCondition(\n\t\t\t\ttypeof actual === \"number\" && actual > expected,\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be > ${expected}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toBeGreaterThan\" : \"toBeGreaterThan\",\n\t\t\t\t\texpected: String(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoBeGreaterThanOrEqual: expected => {\n\t\t\tassertCondition(\n\t\t\t\ttypeof actual === \"number\" && actual >= expected,\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be >= ${expected}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toBeGreaterThanOrEqual\" : \"toBeGreaterThanOrEqual\",\n\t\t\t\t\texpected: String(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoBeLessThan: expected => {\n\t\t\tassertCondition(\n\t\t\t\ttypeof actual === \"number\" && actual < expected,\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be < ${expected}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toBeLessThan\" : \"toBeLessThan\",\n\t\t\t\t\texpected: String(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\ttoBeLessThanOrEqual: expected => {\n\t\t\tassertCondition(\n\t\t\t\ttypeof actual === \"number\" && actual <= expected,\n\t\t\t\t`Expected ${formatValue(actual)} ${negated ? \"not \" : \"\"}to be <= ${expected}`,\n\t\t\t\t{\n\t\t\t\t\tmatcher: negated ? \"not.toBeLessThanOrEqual\" : \"toBeLessThanOrEqual\",\n\t\t\t\t\texpected: String(expected),\n\t\t\t\t\treceived: formatValue(actual),\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t}\n\treturn expectation\n}\n\nfunction isObjectLike(value: unknown): value is object {\n\treturn (typeof value === \"object\" && value !== null) || typeof value === \"function\"\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (!isObjectLike(value) || Array.isArray(value)) return false\n\tconst prototype = Object.getPrototypeOf(value)\n\treturn prototype === Object.prototype || prototype === null\n}\n\nfunction isBrowserEvalAsymmetricMatcher(value: unknown): value is BrowserEvalAsymmetricMatcher {\n\treturn (\n\t\tisObjectLike(value) &&\n\t\tReflect.get(value, browserEvalAsymmetricMatcher) === true &&\n\t\ttypeof Reflect.get(value, \"matches\") === \"function\"\n\t)\n}\n\nfunction matchesExpected(actual: unknown, expected: unknown): boolean {\n\tif (isBrowserEvalAsymmetricMatcher(expected)) return expected.matches(actual)\n\tif (!containsAsymmetricMatcher(expected)) return isEqual(actual, expected)\n\tif (Array.isArray(expected)) {\n\t\tif (!Array.isArray(actual) || actual.length !== expected.length) return false\n\t\treturn expected.every((expectedItem, index) => matchesExpected(actual[index], expectedItem))\n\t}\n\tif (isObjectLike(actual) && isObjectLike(expected)) return matchesObjectExactly(actual, expected)\n\treturn isEqual(actual, expected)\n}\n\nfunction containsAsymmetricMatcher(value: unknown, seen = new Set<object>()): boolean {\n\tif (isBrowserEvalAsymmetricMatcher(value)) return true\n\tif (!isObjectLike(value) || seen.has(value)) return false\n\tseen.add(value)\n\tif (Array.isArray(value)) return value.some(item => containsAsymmetricMatcher(item, seen))\n\treturn Object.keys(value).some(key => containsAsymmetricMatcher(Reflect.get(value, key), seen))\n}\n\nfunction matchesObjectExactly(actual: object, expected: object): boolean {\n\tconst actualKeys = Object.keys(actual)\n\tconst expectedKeys = Object.keys(expected)\n\tif (actualKeys.length !== expectedKeys.length) return false\n\tfor (const key of expectedKeys) {\n\t\tif (!Object.prototype.hasOwnProperty.call(actual, key)) return false\n\t\tif (!matchesExpected(Reflect.get(actual, key), Reflect.get(expected, key))) return false\n\t}\n\treturn true\n}\n\nfunction matchesObjectContaining(actual: unknown, expected: Record<string, unknown>): boolean {\n\tif (!isObjectLike(actual)) return false\n\tfor (const key of Object.keys(expected)) {\n\t\tif (!hasPropertyInObject(actual, key)) return false\n\t\tif (!matchesContainedExpected(Reflect.get(actual, key), Reflect.get(expected, key))) return false\n\t}\n\treturn true\n}\n\n/** Same as Jest's `hasPropertyInObject` from `@jest/expect-utils`. */\nfunction hasPropertyInObject(object: unknown, key: string): boolean {\n\tif (!isObjectLike(object) || object === Object.prototype) return false\n\tif (Object.prototype.hasOwnProperty.call(object, key)) return true\n\treturn hasPropertyInObject(Object.getPrototypeOf(object), key)\n}\n\nfunction matchesContainedExpected(actual: unknown, expected: unknown): boolean {\n\tif (isBrowserEvalAsymmetricMatcher(expected)) return expected.matches(actual)\n\tif (Array.isArray(expected)) return matchesContainedArray(actual, expected)\n\tif (isPlainObject(expected)) return matchesObjectContaining(actual, expected)\n\treturn isEqual(actual, expected)\n}\n\nfunction matchesContainedArray(actual: unknown, expected: readonly unknown[]): boolean {\n\tif (!Array.isArray(actual) || actual.length !== expected.length) return false\n\treturn expected.every((expectedItem, index) => matchesContainedExpected(actual[index], expectedItem))\n}\n\nfunction matchesArrayContaining(actual: unknown, expected: readonly unknown[]): boolean {\n\tif (!Array.isArray(actual)) return false\n\treturn expected.every(expectedItem => actual.some(actualItem => matchesExpected(actualItem, expectedItem)))\n}\n\nfunction matchesStringContaining(actual: unknown, expected: string): boolean {\n\treturn typeof actual === \"string\" && actual.includes(expected)\n}\n\nfunction matchesStringMatching(actual: unknown, expected: string | RegExp): boolean {\n\tif (typeof actual !== \"string\") return false\n\tif (typeof expected === \"string\") return actual.includes(expected)\n\texpected.lastIndex = 0\n\treturn expected.test(actual)\n}\n\nfunction matchesAnyConstructor(actual: unknown, expected: BrowserEvalAnyConstructor): boolean {\n\tif (expected === String) return typeof actual === \"string\" || actual instanceof String\n\tif (expected === Number) return typeof actual === \"number\" || actual instanceof Number\n\tif (expected === Boolean) return typeof actual === \"boolean\" || actual instanceof Boolean\n\tif (expected === Function) return typeof actual === \"function\"\n\tif (expected === Object) return isObjectLike(actual)\n\tif (expected === Array) return Array.isArray(actual)\n\tif (!isObjectLike(actual) || expected.prototype === undefined) return false\n\treturn Object.prototype.isPrototypeOf.call(expected.prototype, Object(actual))\n}\n\nfunction getLength(value: unknown): number | undefined {\n\tif (value === null || value === undefined) return undefined\n\tconst length = Reflect.get(Object(value), \"length\")\n\treturn typeof length === \"number\" ? length : undefined\n}\n\nfunction containsValue(actual: unknown, expected: unknown): boolean {\n\tif (typeof actual === \"string\") return typeof expected === \"string\" && actual.includes(expected)\n\tif (Array.isArray(actual)) return actual.some(value => matchesExpected(value, expected))\n\treturn false\n}\n\nfunction containsEqualValue(actual: unknown, expected: unknown): boolean {\n\tif (!isIterable(actual)) return false\n\tfor (const value of actual) {\n\t\tif (matchesExpected(value, expected)) return true\n\t}\n\treturn false\n}\n\nfunction isIterable(value: unknown): value is Iterable<unknown> {\n\treturn value !== null && value !== undefined && typeof Reflect.get(Object(value), Symbol.iterator) === \"function\"\n}\n\nexport function importBrowserAgentEvalFilesWithGlobalScope(importers: readonly AgentEvalFileImporter[]): Promise<void> {\n\treturn importAgentEvalFilesWithGlobals(importers, browserEvalExpect)\n}\n\nexport const testing = {\n\texpect: browserEvalExpect,\n}\n", "\nimport { importBrowserAgentEvalFilesWithGlobalScope } from \"/Users/alex/Projects/FramerStudio/src/app/vekter/src/app/ai/agents/evals2/harness/browserEvalGlobals.ts\"\n\nconst importers = [\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/breakpoints/overlappingBreakpoint.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-0\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/checklist/checklistBehavior.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-1\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/addMarkdownArticle.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-2\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/cmsCore.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-3\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/cmsDetailPageNavigation.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-4\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/cmsFieldConversions.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-5\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/cmsFilterListByStaticEnum.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-6\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/cmsMoveItems.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-7\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/componentPresetRichText.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-8\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/csvImportIntoExistingCollections.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-9\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/limitJobsPagination.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-10\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/cms/uploadCsvCollection.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-11\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/component/buttonComponentControls.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-12\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/component/create-component-with-variants.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-13\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/component/edit-source-from-component-instance.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-14\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/component/newTestimonialComponent.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-15\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/component/requestCodeFileChanges.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-16\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/computedValues/convertBooleanToColor.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-17\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/computedValues/convertBooleanToString.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-18\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/computedValues/greaterThan.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-19\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/computedValues/numberToStringCurrency.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-20\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/creation.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-21\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/creationQuestions.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-22\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/dynamicFilters/dynamicFilters.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-23\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/dynamicFilters/dynamicFiltersEnum.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-24\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/fonts.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-25\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/forms/contactForm.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-26\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/images/cmsImageAttributes.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-27\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/images/regularImageAttributes.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-28\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/images/unsplashImageSize.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-29\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/absolutePinning.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-30\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/centeredNavigation.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-31\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/dataListColumns.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-32\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/denseGrid.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-33\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/featureImageGrid.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-34\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/fixedColumnDenseGrid.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-35\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/imageGrid2x2.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-36\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/logoStackSpacing.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-37\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/makeImageWider.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-38\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/minColumnDenseGrid.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-39\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/navFractions.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-40\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layout/responsiveGridToStack.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-41\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplateAssign.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-42\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplateChildFill.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-43\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplateControl.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-44\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplateCreate.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-45\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplatePageStructure.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-46\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplatePositioning.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-47\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplateTheme.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-48\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/layoutTemplate/layoutTemplateUsage.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-49\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkExternal.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-50\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkInternalPage.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-51\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkInternalSection.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-52\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkNewTab.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-53\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkRel.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-54\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkRemove.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-55\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkRichTextWord.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-56\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/link/linkTrackingId.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-57\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/navigations/navigations.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-58\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/overlay/componentInstanceOverlay.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-59\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/overlay/overlayInteractions.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-60\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/overlay/variantTransition.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-61\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/prematureCompletion.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-62\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/prose/prose.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-63\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/reuse/reuse.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-64\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/richText/createWordColors.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-65\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/richText/formatRichText.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-66\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/richText/tables.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-67\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/richText/updateWordColor.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-68\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/shaders/addShader.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-69\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/shaders/updateShader.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-70\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/style/accentColor.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-71\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/style/cardBoxShadows.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-72\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/addLargeAndUpdateOthers.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-73\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/addResponsiveBreakpoints.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-74\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/minWidthOrder.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-75\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/removeSlot.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-76\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/updateAndRemove.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-77\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/updateExistingAddNew.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-78\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/textStylePresetBreakpoint/updateParagraphSpacing.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-79\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/thinking/thinkingLatency.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-80\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/vectorSets/replaceWithIcon.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-81\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/vision.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-82\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/scenarios/workingScope/pageRouting.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-83\") },\n\t{ sourceFile: \"src/app/ai/agents/evals2/unsupportedCapabilities.eval.ts\", importEvalFile: () => import(\"agent-evals-browser-manifest/eval-84\") }\n]\n\nexport async function importBundledAgentEvalFiles(_dir) {\n\tawait importBrowserAgentEvalFilesWithGlobalScope(importers)\n\treturn true\n}\n\t\t\t\t\t", "import type { AgentEvalDefinition } from \"./definition.ts\"\n\nexport function filterAgentEvalDefinitions(\n\tdefinitions: readonly AgentEvalDefinition[],\n\tmaxSteps: number | undefined,\n\tevalPattern?: string | undefined,\n): readonly AgentEvalDefinition[] {\n\tconst maxStepFiltered =\n\t\tmaxSteps === undefined ? definitions : definitions.filter(definition => definition.options.maxSteps === maxSteps)\n\tif (evalPattern === undefined) return maxStepFiltered\n\n\tconst normalizedPattern = evalPattern.trim().toLowerCase()\n\tif (normalizedPattern.length === 0) return maxStepFiltered\n\n\tconst patternMatches = (candidates: readonly AgentEvalDefinition[]) =>\n\t\tcandidates.filter(definition => {\n\t\t\tconst matches = [definition.name, definition.id, definition.sourceFile]\n\t\t\treturn matches.some(candidate => candidate.toLowerCase().includes(normalizedPattern))\n\t\t})\n\n\tconst maxStepMatches = patternMatches(maxStepFiltered)\n\tif (maxStepMatches.length > 0) return maxStepMatches\n\tif (maxSteps === undefined) return maxStepMatches\n\n\tconst patternMatchesAcrossMaxSteps = patternMatches(definitions)\n\treturn patternMatchesAcrossMaxSteps.length === 1 ? patternMatchesAcrossMaxSteps : []\n}\n", "import { importBundledAgentEvalFiles } from \"./bundledEvalFiles.ts\"\nimport type { importEvalFiles as importEvalFilesType, walkEvalFiles as walkEvalFilesType } from \"./cli/discovery.ts\"\nimport { getRegisteredAgentEvals } from \"./definition.ts\"\nimport type { AgentEvalDefinition } from \"./definition.ts\"\nimport { filterAgentEvalDefinitions } from \"./definitionFilter.ts\"\n\ninterface ImportAgentEvalDefinitionsOptions {\n\tdir?: string\n\tfilter?: string\n\tmaxSteps?: number\n}\n\nfunction getDefaultImportDir(): string {\n\treturn typeof process === \"undefined\" ? \".\" : process.cwd()\n}\n\nexport async function importAgentEvalDefinitions(\n\toptions: ImportAgentEvalDefinitionsOptions = {},\n): Promise<readonly AgentEvalDefinition[]> {\n\tconst dir = options.dir ?? getDefaultImportDir()\n\tif (getRegisteredAgentEvals().length === 0) {\n\t\tconst importedBundledEvalFiles = await importBundledAgentEvalFiles(dir)\n\t\t// Browser eval builds replace bundledEvalFiles.ts with a generated manifest of eval imports.\n\t\tif (!importedBundledEvalFiles) {\n\t\t\t// Keep CLI discovery out of browser eval chunks; the split path keeps bundlers from\n\t\t\t// resolving this Node fs/path import statically.\n\t\t\tconst cliDiscoveryModule = \"./cli/\" + \"discovery.ts\"\n\t\t\tconst { importEvalFiles, walkEvalFiles } = (await import(cliDiscoveryModule)) as {\n\t\t\t\timportEvalFiles: typeof importEvalFilesType\n\t\t\t\twalkEvalFiles: typeof walkEvalFilesType\n\t\t\t}\n\t\t\tawait importEvalFiles(await walkEvalFiles(dir))\n\t\t}\n\t}\n\n\treturn filterAgentEvalDefinitions(getRegisteredAgentEvals(), options.maxSteps, options.filter)\n}\n", "import { assert } from \"@framerjs/shared/src/assert.ts\"\nimport { defaultModels as defaultAgentUserModels } from \"app/agent/components/ModelPicker/models.ts\"\nimport { parseAgentModelConfig, type AgentModelConfig } from \"app/ai/agentModelConfig.ts\"\nimport { LanguageModel } from \"app/ai/languageModels.ts\"\nimport { getDefaultReasoningEffortForModel, type AgentReasoningEffort } from \"app/ai/models.ts\"\n\nexport type AgentEvalModelConfig = AgentModelConfig\n\nexport const defaultAgentEvalRunCount = 2\n\nconst defaultAgentEvalModels = [...defaultAgentUserModels, LanguageModel.Contour] as const\nconst defaultAgentBrowserEvalModels = [...defaultAgentUserModels, LanguageModel.GPTNEXT, LanguageModel.Contour] as const\n\n// CI should exercise the same default model choices users see without advanced controls.\nexport const defaultAgentEvalModelConfigs: readonly AgentEvalModelConfig[] =\n\tcreateDefaultAgentEvalModelConfigs(defaultAgentEvalModels)\n\nexport const defaultAgentBrowserEvalModelConfigs: readonly AgentEvalModelConfig[] =\n\tcreateDefaultAgentEvalModelConfigs(defaultAgentBrowserEvalModels)\n\nfunction createDefaultAgentEvalModelConfigs(models: readonly LanguageModel[]): readonly AgentEvalModelConfig[] {\n\treturn models.map(model => ({\n\t\tmodel,\n\t\t// The agent UI always submits a concrete selected effort; mirror that instead of the runtime's omitted-effort fallback.\n\t\treasoningEffort: getDefaultReasoningEffortForModel(model),\n\t}))\n}\n\nexport function getEffectiveAgentEvalReasoningEffort(config: AgentEvalModelConfig): AgentReasoningEffort {\n\treturn config.reasoningEffort ?? getDefaultReasoningEffortForModel(config.model)\n}\n\nexport function formatModelConfigForDisplay(config: AgentEvalModelConfig): string {\n\treturn `${config.model} (${getEffectiveAgentEvalReasoningEffort(config)})`\n}\n\nexport function parseAgentEvalModelConfig(value: string): AgentEvalModelConfig {\n\treturn parseAgentModelConfig(value, \"MODELS entry\")\n}\n\nexport function parseAgentEvalModelConfigs(\n\tvalue: string | undefined,\n\tdefaultModelConfigs: readonly AgentEvalModelConfig[] = defaultAgentEvalModelConfigs,\n): readonly AgentEvalModelConfig[] {\n\tif (!value) return defaultModelConfigs\n\tassert(!/\\s/u.test(value), \"MODELS must be a comma-separated list without spaces.\")\n\tconst modelConfigs = value.split(\",\").map(parseAgentEvalModelConfig)\n\treturn modelConfigs.length > 0 ? modelConfigs : defaultModelConfigs\n}\n", "import type { AgentEvalDefinition } from \"app/ai/agents/evals2/harness/definition.ts\"\nimport { filterAgentEvalDefinitions as filterHarnessAgentEvalDefinitions } from \"app/ai/agents/evals2/harness/definitionFilter.ts\"\nimport type { AgentEvalModelConfig } from \"app/ai/agents/evals2/harness/modelConfig.ts\"\nimport type { AgentEvalRunSelectionContext } from \"app/ai/agents/evals2/harness/runner.ts\"\nimport { isLanguageModel } from \"app/ai/languageModels.ts\"\nimport { isAgentReasoningEffort, isValidEffortForModel } from \"app/ai/models.ts\"\nimport { isObject } from \"utils/typeChecks.ts\"\n\nexport interface EvalRunOptions {\n\tparallelism: number\n\tindex: number\n\tmodels?: readonly AgentEvalModelConfig[]\n\trunCount?: number\n\tevalPattern?: string\n\tmaxSteps?: number\n\ttranscript?: boolean\n}\n\ninterface AgentEvalDefinitionView {\n\tid: string\n\ttitle: string\n\tdescription: string\n}\n\ninterface AgentEvalShardRunSummary {\n\tevalIds: ReadonlySet<string>\n\trunCount: number\n\ttotalRunCount: number\n}\n\nfunction getShortSourcePath(path: string): string {\n\tconst trimmed = path.trim().replaceAll(\"\\\\\", \"/\")\n\tconst segments = trimmed.split(\"/\").filter(Boolean)\n\tconst fileName = segments.at(-1)\n\tif (segments.length < 2 || !fileName) return path\n\n\treturn `${segments.at(-2)}/${fileName}`\n}\n\nexport function validateEvalRunOptions(value: unknown): EvalRunOptions {\n\tif (!isObject(value) || !(\"parallelism\" in value) || !(\"index\" in value)) {\n\t\tthrow new Error(\"Vekter.evals.run expects an options object with parallelism and index.\")\n\t}\n\n\tconst { parallelism, index } = value\n\n\tif (typeof parallelism !== \"number\" || !Number.isInteger(parallelism) || parallelism <= 0) {\n\t\tthrow new Error(\"Vekter.evals.run requires parallelism to be a positive integer.\")\n\t}\n\tif (typeof index !== \"number\" || !Number.isInteger(index) || index < 0 || index >= parallelism) {\n\t\tthrow new Error(\"Vekter.evals.run requires index to be an integer where 0 <= index < parallelism.\")\n\t}\n\n\tconst options: EvalRunOptions = { parallelism, index }\n\tif (value.models !== undefined) {\n\t\tif (!Array.isArray(value.models) || value.models.length === 0 || !value.models.every(isEvalModelConfig)) {\n\t\t\tthrow new Error(\"Vekter.evals.run requires models to be a non-empty array of supported model configs.\")\n\t\t}\n\t\toptions.models = value.models\n\t}\n\tif (value.runCount !== undefined) {\n\t\tif (typeof value.runCount !== \"number\" || !Number.isInteger(value.runCount) || value.runCount <= 0) {\n\t\t\tthrow new Error(\"Vekter.evals.run requires runCount to be a positive integer.\")\n\t\t}\n\t\toptions.runCount = value.runCount\n\t}\n\tif (value.evalPattern !== undefined) {\n\t\tif (typeof value.evalPattern !== \"string\") {\n\t\t\tthrow new Error(\"Vekter.evals.run requires evalPattern to be a string.\")\n\t\t}\n\t\tconst evalPattern = value.evalPattern.trim()\n\t\tif (evalPattern.length > 0) options.evalPattern = evalPattern\n\t}\n\tif (value.maxSteps !== undefined) {\n\t\tif (typeof value.maxSteps !== \"number\" || !Number.isInteger(value.maxSteps) || value.maxSteps < 0) {\n\t\t\tthrow new Error(\"Vekter.evals.run requires maxSteps to be a non-negative integer.\")\n\t\t}\n\t\toptions.maxSteps = value.maxSteps\n\t}\n\tif (value.transcript !== undefined) {\n\t\tif (typeof value.transcript !== \"boolean\") {\n\t\t\tthrow new Error(\"Vekter.evals.run requires transcript to be a boolean.\")\n\t\t}\n\t\toptions.transcript = value.transcript\n\t}\n\n\treturn options\n}\n\nfunction isEvalModelConfig(value: unknown): value is AgentEvalModelConfig {\n\tif (!isObject(value)) return false\n\tconst { model, reasoningEffort } = value\n\treturn (\n\t\tisLanguageModel(model) &&\n\t\t(reasoningEffort === undefined ||\n\t\t\t(isAgentReasoningEffort(reasoningEffort) && isValidEffortForModel(reasoningEffort, model)))\n\t)\n}\n\nexport function getAgentEvalDefinitionView(definition: AgentEvalDefinition): AgentEvalDefinitionView {\n\tconst maxSteps = definition.options.maxSteps === undefined ? \"all\" : definition.options.maxSteps\n\treturn {\n\t\tid: definition.id,\n\t\ttitle: definition.name,\n\t\tdescription: `steps: ${maxSteps} - ${getShortSourcePath(definition.sourceFile)}`,\n\t}\n}\n\nexport function filterAgentEvalDefinitions(\n\tdefinitions: readonly AgentEvalDefinition[],\n\tquery: string,\n): readonly AgentEvalDefinition[] {\n\tconst normalizedQuery = query.trim().toLocaleLowerCase()\n\tif (!normalizedQuery) return definitions\n\n\treturn definitions.filter(definition => doesAgentEvalDefinitionMatchFilter(definition, normalizedQuery))\n}\n\nfunction doesAgentEvalDefinitionMatchFilter(definition: AgentEvalDefinition, normalizedQuery: string): boolean {\n\tconst view = getAgentEvalDefinitionView(definition)\n\treturn [definition.id, definition.name, definition.sourceFile, definition.fixture.id, view.description].some(value =>\n\t\tvalue.toLocaleLowerCase().includes(normalizedQuery),\n\t)\n}\n\nexport function getAgentEvalDefinitionsForRunOptions(\n\tdefinitions: readonly AgentEvalDefinition[],\n\toptions: EvalRunOptions,\n): readonly AgentEvalDefinition[] {\n\treturn filterHarnessAgentEvalDefinitions(definitions, options.maxSteps, options.evalPattern)\n}\n\nexport function isAgentEvalRunSelectedForShard(\n\tcontext: AgentEvalRunSelectionContext,\n\toptions: EvalRunOptions,\n): boolean {\n\treturn context.runIndex % options.parallelism === options.index\n}\n\nexport function* iterateAgentEvalRunSelectionContexts(\n\tdefinitions: readonly AgentEvalDefinition[],\n\tmodelConfigs: readonly AgentEvalModelConfig[],\n\truns: number,\n): Generator<AgentEvalRunSelectionContext> {\n\tlet runIndex = 0\n\tfor (let definitionIndex = 0; definitionIndex < definitions.length; definitionIndex++) {\n\t\tconst definition = definitions[definitionIndex]\n\t\tif (definition === undefined) continue\n\t\tfor (let modelConfigIndex = 0; modelConfigIndex < modelConfigs.length; modelConfigIndex++) {\n\t\t\tconst modelConfig = modelConfigs[modelConfigIndex]\n\t\t\tif (modelConfig === undefined) continue\n\t\t\tfor (let runNumber = 1; runNumber <= runs; runNumber++) {\n\t\t\t\tyield {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tmodelConfig,\n\t\t\t\t\trunNumber,\n\t\t\t\t\ttotalRuns: runs,\n\t\t\t\t\tdefinitionIndex,\n\t\t\t\t\tmodelConfigIndex,\n\t\t\t\t\trunIndex,\n\t\t\t\t}\n\t\t\t\trunIndex++\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getAgentEvalShardRunSummary(\n\tdefinitions: readonly AgentEvalDefinition[],\n\tmodelConfigs: readonly AgentEvalModelConfig[],\n\truns: number,\n\toptions: EvalRunOptions,\n): AgentEvalShardRunSummary {\n\tconst evalIds = new Set<string>()\n\tconst filteredDefinitions = getAgentEvalDefinitionsForRunOptions(definitions, options)\n\tlet runCount = 0\n\tlet totalRunCount = 0\n\tfor (const context of iterateAgentEvalRunSelectionContexts(filteredDefinitions, modelConfigs, runs)) {\n\t\ttotalRunCount++\n\t\tif (!isAgentEvalRunSelectedForShard(context, options)) continue\n\t\trunCount++\n\t\tevalIds.add(context.definition.id)\n\t}\n\treturn { evalIds, runCount, totalRunCount }\n}\n", "import type { AgentID } from \"app/ai/agents/Agent.ts\"\nimport type { AgentEvalJsonReport } from \"app/ai/agents/evals2/harness/jsonReportTypes.ts\"\nimport type { AgentEvalTranscriptInputMessages } from \"app/ai/agents/evals2/harness/transcriptData.ts\"\nimport {\n\tadaptAgentEvalJsonReportToUiReport,\n\tcreateAgentEvalUiRunId,\n\ttype AgentEvalUiRun,\n} from \"app/ai/agents/evals2/harness/uiAdapter.ts\"\nimport type { AgentRequest } from \"app/ai/agents/types.ts\"\nimport type { LanguageModel } from \"app/ai/languageModels.ts\"\nimport type { AgentReasoningEffort } from \"app/ai/models.ts\"\nimport type { CanvasTree, NodeID } from \"document/models/CanvasTree/index.ts\"\nimport type { EvalRunOptions } from \"./evalDefinitions.ts\"\n\nlet currentEvalRunOptions: EvalRunOptions = { parallelism: 1, index: 0 }\nconst runOptionsListeners = new Set<() => void>()\n\ntype EvaluationRunStatus = \"queued\" | \"loading\" | \"running\" | \"passed\" | \"failed\" | \"error\" | \"stopped\"\n\nexport interface EvaluationRunRecord {\n\tid: string\n\trunInvocationId?: string\n\tevalId: string\n\trunNumber: number\n\tstatus: EvaluationRunStatus\n\tmodel?: LanguageModel\n\treasoningEffort?: AgentReasoningEffort\n\tprogress?: string\n\ttree?: CanvasTree\n\tagentId?: AgentID\n\tscopeId?: NodeID\n\tselectedNodeId?: NodeID\n\trequests?: readonly AgentRequest[]\n\ttranscriptInputMessages?: AgentEvalTranscriptInputMessages\n\terror?: string\n\tharnessRun?: AgentEvalUiRun\n\tstartedAt?: number\n\tfinishedAt?: number\n}\n\ninterface EvaluationRunViewState {\n\tactiveEvalId?: string\n\tactiveRunId?: string\n\tmanuallySelectedRunId?: string\n\tmountedRunId?: string\n\tlatestReport?: AgentEvalJsonReport\n\trecords: Readonly<Record<string, EvaluationRunRecord>>\n\trunIdsByEvalId: Readonly<Record<string, readonly string[]>>\n}\n\nlet currentEvalRunViewState: EvaluationRunViewState = { records: {}, runIdsByEvalId: {} }\nconst runViewListeners = new Set<() => void>()\n\nexport function getCurrentEvalRunOptions(): EvalRunOptions {\n\treturn currentEvalRunOptions\n}\n\nexport function setCurrentEvalRunOptions(options: EvalRunOptions) {\n\tcurrentEvalRunOptions = options\n\tfor (const listener of runOptionsListeners) listener()\n}\n\nexport function subscribeToEvalRunOptions(listener: () => void): () => void {\n\trunOptionsListeners.add(listener)\n\treturn () => runOptionsListeners.delete(listener)\n}\n\nexport function getCurrentEvalRunViewState(): EvaluationRunViewState {\n\treturn currentEvalRunViewState\n}\n\nexport function subscribeToEvalRunViewState(listener: () => void): () => void {\n\trunViewListeners.add(listener)\n\treturn () => runViewListeners.delete(listener)\n}\n\ninterface ActiveRunSelectionOptions {\n\tmanuallySelected?: boolean\n}\n\nexport function setActiveEvalId(id: string | undefined, options: ActiveRunSelectionOptions = {}) {\n\tconst latestRunId = id ? currentEvalRunViewState.runIdsByEvalId[id]?.at(-1) : undefined\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: id,\n\t\tactiveRunId: latestRunId,\n\t\tmanuallySelectedRunId: options.manuallySelected ? latestRunId : undefined,\n\t})\n}\n\nexport function setActiveRunId(id: string | undefined, options: ActiveRunSelectionOptions = {}) {\n\tconst record = id ? currentEvalRunViewState.records[id] : undefined\n\tif (id && !record) return\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: record?.evalId ?? currentEvalRunViewState.activeEvalId,\n\t\tactiveRunId: id,\n\t\tmanuallySelectedRunId: options.manuallySelected ? id : undefined,\n\t})\n}\n\nexport function recordAgentEvalUiRun(run: AgentEvalUiRun) {\n\tconst previous = currentEvalRunViewState.records[run.id]\n\tconst runIds = currentEvalRunViewState.runIdsByEvalId[run.evalId] ?? []\n\tconst nextRunIds = runIds.includes(run.id) ? runIds : [...runIds, run.id]\n\tconst shouldActivate = shouldActivateRunLifecycle()\n\tconst record: EvaluationRunRecord = {\n\t\tid: run.id,\n\t\trunInvocationId: run.runInvocationId ?? previous?.runInvocationId,\n\t\tevalId: run.evalId,\n\t\trunNumber: run.runNumber,\n\t\tstatus: run.panelStatus,\n\t\tmodel: run.model,\n\t\treasoningEffort: run.reasoningEffort,\n\t\terror: run.error,\n\t\tharnessRun: run,\n\t\ttree: previous?.tree,\n\t\tagentId: previous?.agentId,\n\t\tscopeId: previous?.scopeId,\n\t\tselectedNodeId: previous?.selectedNodeId,\n\t\trequests: previous?.requests,\n\t\ttranscriptInputMessages: previous?.transcriptInputMessages,\n\t\tstartedAt: previous?.startedAt,\n\t\tfinishedAt: Date.now(),\n\t}\n\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: shouldActivate ? run.evalId : currentEvalRunViewState.activeEvalId,\n\t\tactiveRunId: shouldActivate ? run.id : currentEvalRunViewState.activeRunId,\n\t\tmanuallySelectedRunId: shouldActivate ? undefined : currentEvalRunViewState.manuallySelectedRunId,\n\t\trecords: {\n\t\t\t...currentEvalRunViewState.records,\n\t\t\t[run.id]: record,\n\t\t},\n\t\trunIdsByEvalId: {\n\t\t\t...currentEvalRunViewState.runIdsByEvalId,\n\t\t\t[run.evalId]: nextRunIds,\n\t\t},\n\t})\n\n\treturn record\n}\n\nexport function setLatestAgentEvalJsonReport(report: AgentEvalJsonReport | undefined) {\n\tupdateEvalRunViewState({ latestReport: report })\n}\n\nexport function restoreAgentEvalJsonReport(report: AgentEvalJsonReport) {\n\tconst uiReport = adaptAgentEvalJsonReportToUiReport(report)\n\tconst records: Record<string, EvaluationRunRecord> = {}\n\tconst runIdsByEvalId: Record<string, string[]> = {}\n\tconst finishedAt = Date.now()\n\n\tfor (const run of uiReport.runs) {\n\t\t// Canonical JSON reports intentionally omit live runtime state, so restored rows only carry report data.\n\t\trecords[run.id] = {\n\t\t\tid: run.id,\n\t\t\trunInvocationId: run.runInvocationId,\n\t\t\tevalId: run.evalId,\n\t\t\trunNumber: run.runNumber,\n\t\t\tstatus: run.panelStatus,\n\t\t\tmodel: run.model,\n\t\t\treasoningEffort: run.reasoningEffort,\n\t\t\terror: run.error,\n\t\t\tharnessRun: run,\n\t\t\tfinishedAt,\n\t\t}\n\t\trunIdsByEvalId[run.evalId] = [...(runIdsByEvalId[run.evalId] ?? []), run.id]\n\t}\n\n\tconst firstRun = uiReport.runs[0]\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: firstRun?.evalId,\n\t\tactiveRunId: firstRun?.id,\n\t\tmanuallySelectedRunId: undefined,\n\t\tmountedRunId: undefined,\n\t\tlatestReport: report,\n\t\trecords,\n\t\trunIdsByEvalId,\n\t})\n}\n\ninterface AgentEvalRunIdentity {\n\tevalId: string\n\trunInvocationId?: string\n\tmodel: LanguageModel\n\treasoningEffort?: AgentReasoningEffort\n\trunNumber: number\n}\n\ninterface AgentEvalLiveRunUpdate extends AgentEvalRunIdentity {\n\tagentId: AgentID\n\tscopeId: NodeID\n\trequests: readonly AgentRequest[]\n\ttree?: CanvasTree\n\tselectedNodeId?: NodeID\n\ttranscriptInputMessages: AgentEvalTranscriptInputMessages\n}\n\ninterface AgentEvalPendingRunUpdate extends AgentEvalRunIdentity {\n\tstatus: \"queued\" | \"loading\"\n}\n\ninterface AgentEvalRunProgressUpdate extends AgentEvalRunIdentity {\n\tprogress: string\n}\n\nfunction snapshotAgentRequest(request: AgentRequest): AgentRequest {\n\treturn {\n\t\t...request,\n\t\tparts: [...request.parts],\n\t\timages: [...request.images],\n\t\tcontextMessages: [...request.contextMessages],\n\t\tsteps: request.steps.map(step => ({\n\t\t\t...step,\n\t\t\tcontent: [...step.content],\n\t\t\ttoolResults: [...step.toolResults],\n\t\t\traw: step.raw === undefined ? undefined : [...step.raw],\n\t\t\tmetadata: {\n\t\t\t\t...step.metadata,\n\t\t\t\tcrdtSnapshot: step.metadata.crdtSnapshot === undefined ? undefined : { ...step.metadata.crdtSnapshot },\n\t\t\t},\n\t\t})),\n\t\tchangeset: request.changeset === undefined ? undefined : [...request.changeset],\n\t\tcodeFileChanges: request.codeFileChanges === undefined ? undefined : [...request.codeFileChanges],\n\t\tselection: request.selection === undefined ? undefined : [...request.selection],\n\t\tstate: {\n\t\t\tmessages: request.state.messages.map(message => ({ ...message })),\n\t\t},\n\t}\n}\n\nfunction snapshotAgentRequests(requests: readonly AgentRequest[]): readonly AgentRequest[] {\n\treturn requests.map(snapshotAgentRequest)\n}\n\nexport function recordAgentEvalPendingRun(update: AgentEvalPendingRunUpdate) {\n\tconst runId = createEvaluationRunRecordId(update)\n\tconst previous = currentEvalRunViewState.records[runId]\n\tconst runIds = currentEvalRunViewState.runIdsByEvalId[update.evalId] ?? []\n\tconst nextRunIds = runIds.includes(runId) ? runIds : [...runIds, runId]\n\tconst shouldActivate =\n\t\tupdate.status === \"loading\" ? shouldActivateRunLifecycle() : !currentEvalRunViewState.activeRunId\n\tconst record: EvaluationRunRecord = {\n\t\t...previous,\n\t\tid: runId,\n\t\trunInvocationId: update.runInvocationId ?? previous?.runInvocationId,\n\t\tevalId: update.evalId,\n\t\trunNumber: update.runNumber,\n\t\tstatus: update.status,\n\t\tmodel: update.model,\n\t\treasoningEffort: update.reasoningEffort,\n\t\tprogress: previous?.progress,\n\t\terror: undefined,\n\t\tstartedAt: previous?.startedAt ?? (update.status === \"loading\" ? Date.now() : undefined),\n\t\tfinishedAt: undefined,\n\t}\n\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: shouldActivate ? update.evalId : currentEvalRunViewState.activeEvalId,\n\t\tactiveRunId: shouldActivate ? runId : currentEvalRunViewState.activeRunId,\n\t\tmanuallySelectedRunId: shouldActivate ? undefined : currentEvalRunViewState.manuallySelectedRunId,\n\t\trecords: {\n\t\t\t...currentEvalRunViewState.records,\n\t\t\t[runId]: record,\n\t\t},\n\t\trunIdsByEvalId: {\n\t\t\t...currentEvalRunViewState.runIdsByEvalId,\n\t\t\t[update.evalId]: nextRunIds,\n\t\t},\n\t})\n\n\treturn record\n}\n\nexport function recordAgentEvalLiveRun(update: AgentEvalLiveRunUpdate) {\n\tconst runId = createEvaluationRunRecordId(update)\n\tconst previous = currentEvalRunViewState.records[runId]\n\tconst runIds = currentEvalRunViewState.runIdsByEvalId[update.evalId] ?? []\n\tconst nextRunIds = runIds.includes(runId) ? runIds : [...runIds, runId]\n\tconst shouldActivate = shouldActivateRunLifecycle()\n\tconst record: EvaluationRunRecord = {\n\t\t...previous,\n\t\tid: runId,\n\t\trunInvocationId: update.runInvocationId ?? previous?.runInvocationId,\n\t\tevalId: update.evalId,\n\t\trunNumber: update.runNumber,\n\t\tstatus: \"running\",\n\t\tmodel: update.model,\n\t\treasoningEffort: update.reasoningEffort,\n\t\tprogress: previous?.progress,\n\t\tagentId: update.agentId,\n\t\tscopeId: update.scopeId,\n\t\tselectedNodeId: update.selectedNodeId,\n\t\trequests: snapshotAgentRequests(update.requests),\n\t\ttranscriptInputMessages: new Map(update.transcriptInputMessages),\n\t\ttree: update.tree ?? previous?.tree,\n\t\terror: undefined,\n\t\tstartedAt: previous?.startedAt ?? Date.now(),\n\t\tfinishedAt: undefined,\n\t}\n\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: shouldActivate ? update.evalId : currentEvalRunViewState.activeEvalId,\n\t\tactiveRunId: shouldActivate ? runId : currentEvalRunViewState.activeRunId,\n\t\tmanuallySelectedRunId: shouldActivate ? undefined : currentEvalRunViewState.manuallySelectedRunId,\n\t\trecords: {\n\t\t\t...currentEvalRunViewState.records,\n\t\t\t[runId]: record,\n\t\t},\n\t\trunIdsByEvalId: {\n\t\t\t...currentEvalRunViewState.runIdsByEvalId,\n\t\t\t[update.evalId]: nextRunIds,\n\t\t},\n\t})\n\n\treturn record\n}\n\nexport function recordAgentEvalRunProgress(update: AgentEvalRunProgressUpdate) {\n\tconst runId = createEvaluationRunRecordId(update)\n\tconst previous = currentEvalRunViewState.records[runId]\n\tif (!previous || !isActiveEvaluationRunStatus(previous.status)) return\n\n\tupdateEvaluationRecord(runId, { progress: update.progress }, { activate: false })\n}\n\nexport function markAgentEvalPendingRunStopped(update: AgentEvalRunIdentity) {\n\tconst runId = createEvaluationRunRecordId(update)\n\tconst previous = currentEvalRunViewState.records[runId]\n\tif (!previous || (previous.status !== \"queued\" && previous.status !== \"loading\")) return\n\n\tupdateEvaluationRecord(\n\t\trunId,\n\t\t{\n\t\t\tstatus: \"stopped\",\n\t\t\tprogress: \"Stopped before runtime loaded.\",\n\t\t\tfinishedAt: Date.now(),\n\t\t},\n\t\t{ activate: false },\n\t)\n}\n\nexport function updateEvaluationRunTree(\n\trunId: string,\n\ttree: CanvasTree,\n\tscopeId: NodeID | undefined,\n\tselectedNodeId: NodeID | undefined,\n) {\n\tupdateEvaluationRecord(\n\t\trunId,\n\t\t{\n\t\t\ttree,\n\t\t\tscopeId,\n\t\t\tselectedNodeId,\n\t\t},\n\t\t{ activate: false },\n\t)\n}\n\nexport function markEvaluationRunMounted(runId: string) {\n\tupdateEvaluationRecord(runId, {}, { mounted: true })\n}\n\nexport function resetEvaluationRunViewState() {\n\tcurrentEvalRunViewState = { records: {}, runIdsByEvalId: {} }\n\tfor (const listener of runViewListeners) listener()\n}\n\nfunction updateEvaluationRecord(\n\trunId: string,\n\trecord: Partial<EvaluationRunRecord>,\n\toptions: { activate?: boolean; mounted?: boolean } = {},\n) {\n\tconst previous = currentEvalRunViewState.records[runId]\n\tif (!previous) return\n\tconst shouldActivate = options.activate ?? true\n\n\tupdateEvalRunViewState({\n\t\tactiveEvalId: shouldActivate ? previous.evalId : currentEvalRunViewState.activeEvalId,\n\t\tactiveRunId: shouldActivate ? runId : currentEvalRunViewState.activeRunId,\n\t\tmountedRunId: options.mounted ? runId : currentEvalRunViewState.mountedRunId,\n\t\trecords: {\n\t\t\t...currentEvalRunViewState.records,\n\t\t\t[runId]: {\n\t\t\t\t...previous,\n\t\t\t\t...record,\n\t\t\t\tid: runId,\n\t\t\t},\n\t\t},\n\t})\n}\n\nfunction shouldActivateRunLifecycle(): boolean {\n\tif (currentEvalRunViewState.manuallySelectedRunId) return false\n\treturn (\n\t\t!currentEvalRunViewState.mountedRunId ||\n\t\tcurrentEvalRunViewState.activeRunId === currentEvalRunViewState.mountedRunId\n\t)\n}\n\nfunction createEvaluationRunRecordId(update: AgentEvalRunIdentity): string {\n\treturn createAgentEvalUiRunId(\n\t\tupdate.runInvocationId,\n\t\tupdate.evalId,\n\t\tupdate.model,\n\t\tupdate.reasoningEffort,\n\t\tupdate.runNumber,\n\t)\n}\n\nfunction isActiveEvaluationRunStatus(status: EvaluationRunStatus): boolean {\n\treturn status === \"queued\" || status === \"loading\" || status === \"running\"\n}\n\nfunction updateEvalRunViewState(update: Partial<EvaluationRunViewState>) {\n\tcurrentEvalRunViewState = {\n\t\t...currentEvalRunViewState,\n\t\t...update,\n\t}\n\tfor (const listener of runViewListeners) listener()\n}\n", "import { assert } from \"@framerjs/shared\"\nimport type { AgentLifeCycleHooks } from \"app/ai/agents/Agent.ts\"\nimport type { EvalExportArchiveSnapshot } from \"app/ai/agents/evals/export/AgentStoreEvalExport.ts\"\nimport type { LoadEvalExportOptions } from \"app/ai/agents/evals/export/loadEvalExportDocument.ts\"\nimport { runAgentEvalDefinitionsForBrowser } from \"app/ai/agents/evals2/harness/browserRunner.ts\"\nimport type {\n\tAgentEvalBrowserRunnerResult,\n\tAgentEvalBrowserTranscript,\n} from \"app/ai/agents/evals2/harness/browserRunner.ts\"\nimport type { AgentEvalDefinition } from \"app/ai/agents/evals2/harness/definition.ts\"\nimport { setBrowserEvalRuntimeLoader } from \"app/ai/agents/evals2/harness/fixture.ts\"\nimport { importAgentEvalDefinitions } from \"app/ai/agents/evals2/harness/importEvalDefinitions.ts\"\nimport { defaultAgentEvalModelConfigs, type AgentEvalModelConfig } from \"app/ai/agents/evals2/harness/modelConfig.ts\"\nimport type { AgentEvalRunStartContext, AgentEvalRunUpdate } from \"app/ai/agents/evals2/harness/runner.ts\"\nimport type { AgentEvalUiRun } from \"app/ai/agents/evals2/harness/uiAdapter.ts\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport engine from \"document/engine.ts\"\nimport { CanvasTree, type NodeID } from \"document/models/CanvasTree/index.ts\"\nimport {\n\ttype EvalRunOptions,\n\tgetAgentEvalDefinitionsForRunOptions,\n\tgetAgentEvalShardRunSummary,\n\tisAgentEvalRunSelectedForShard,\n\tvalidateEvalRunOptions,\n} from \"./evalDefinitions.ts\"\nimport {\n\tgetCurrentEvalRunViewState,\n\tmarkEvaluationRunMounted,\n\tmarkAgentEvalPendingRunStopped,\n\trecordAgentEvalLiveRun,\n\trecordAgentEvalPendingRun,\n\trecordAgentEvalRunProgress,\n\trecordAgentEvalUiRun,\n\tsetLatestAgentEvalJsonReport,\n\tsetCurrentEvalRunOptions,\n\tupdateEvaluationRunTree,\n} from \"./evalRunState.ts\"\n\nfunction enterEvaluationsMode() {\n\tconst { agentStore, chromeStore } = engine.stores\n\tif (!chromeStore.isEvaluationsModeActive) {\n\t\tengine.cancelTool()\n\t\tchromeStore.reset()\n\t}\n\tagentStore.enterEvaluationsMode()\n}\n\nasync function prepareGlobalEngineForBrowserEvalRun(): Promise<void> {\n\tconst activeAgentId = engine.stores.agentStore.activeEvaluationAgentId\n\tif (activeAgentId) {\n\t\tengine.stores.agentStore.stop(activeAgentId)\n\t\tengine.stores.agentStore.clearActiveEvaluationAgentId(activeAgentId)\n\t}\n\tawait engine.stores.agentStore.clearHistory()\n\tengine.stores.agentStore.detachProjectForEvaluations()\n\tengine.stores.modulesStore.resetModuleStateAndPermissions(\"readwrite-detached\")\n}\n\nasync function loadBrowserEvalRuntimeOnGlobalEngine({\n\tarchiveSnapshot,\n\tloadOptions,\n\tlifecycleHooks,\n}: {\n\tarchiveSnapshot: EvalExportArchiveSnapshot\n\tloadOptions: LoadEvalExportOptions\n\tlifecycleHooks: AgentLifeCycleHooks | undefined\n}) {\n\tawait prepareGlobalEngineForBrowserEvalRun()\n\tconst agent = await engine.stores.agentStore.loadEvalExportArchiveSnapshot(\n\t\tarchiveSnapshot,\n\t\tloadOptions,\n\t\tlifecycleHooks,\n\t)\n\tengine.stores.agentStore.activeEvaluationAgentId = agent.id\n\treturn {\n\t\tengine,\n\t\tagent,\n\t\tdisposeEngine: false,\n\t\tdispose: async () => {\n\t\t\tengine.stores.agentStore.stop(agent.id)\n\t\t\tawait engine.stores.agentStore.clearHistory()\n\t\t\tengine.stores.agentStore.clearActiveEvaluationAgentId(agent.id)\n\t\t},\n\t}\n}\n\ninterface RunEvaluationsSettings {\n\tmodelConfigs?: readonly AgentEvalModelConfig[]\n\trunCount?: number\n\tsignal?: AbortSignal\n}\n\nexport interface AgentEvalHudRunResults extends AgentEvalBrowserRunnerResult {\n\truns: readonly AgentEvalUiRun[]\n\tparallelism: number\n\tindex: number\n\ttranscripts: readonly AgentEvalBrowserTranscript[]\n\tdefinitionCount: number\n\tmodelConfigCount: number\n\trunCount: number\n\ttotalRunCount: number\n\tassignedRunCount: number\n\tevalPattern?: string\n\tmaxSteps?: number\n}\n\ninterface EvaluationTreeMount {\n\ttree: CanvasTree\n\tscopeId: NodeID\n\tselectedNodeId: NodeID\n}\n\nexport async function activateEvaluationRun(runId: string): Promise<boolean> {\n\tconst state = getCurrentEvalRunViewState()\n\tconst record = state.records[runId]\n\tif (!record?.tree || !record.scopeId) return false\n\n\tconst isLiveGlobalEngineRuntime =\n\t\trecord.agentId !== undefined && engine.stores.agentStore.activeEvaluationAgentId === record.agentId\n\tif (isLiveGlobalEngineRuntime) {\n\t\tselectEvaluationScope(record.scopeId, record.selectedNodeId)\n\t\tmarkEvaluationRunMounted(runId)\n\t\treturn true\n\t}\n\n\tif (state.mountedRunId === runId && record.tree === engine.tree) {\n\t\tselectEvaluationScope(record.scopeId, record.selectedNodeId)\n\t\tmarkEvaluationRunMounted(runId)\n\t\treturn true\n\t}\n\n\tpersistMountedEvaluationRunTree()\n\tconst mountedTree = await loadEvaluationTree({\n\t\ttree: record.tree,\n\t\tscopeId: record.scopeId,\n\t\tselectedNodeId: record.selectedNodeId ?? record.scopeId,\n\t})\n\tif (!mountedTree) return false\n\n\tupdateEvaluationRunTree(runId, mountedTree.tree, mountedTree.scopeId, mountedTree.selectedNodeId)\n\tmarkEvaluationRunMounted(runId)\n\n\treturn true\n}\n\nasync function loadEvaluationTree(\n\t{ tree, scopeId, selectedNodeId }: EvaluationTreeMount,\n\tsignal?: AbortSignal,\n): Promise<EvaluationTreeMount | undefined> {\n\tconst treeToLoad = prepareSavedEvaluationTreeForLoad(tree)\n\tawait engine.stores.modulesStore.waitForModulesToSave()\n\tif (signal?.aborted) return\n\tengine.stores.agentStore.detachProjectForEvaluations()\n\tengine.stores.modulesStore.resetModuleStateAndPermissions(\"readwrite-detached\")\n\tengine.stores.treeStore.prepareDetachedRootReplacement(treeToLoad)\n\tengine.load(treeToLoad)\n\tselectEvaluationScope(scopeId, selectedNodeId)\n\treturn { tree: treeToLoad, scopeId, selectedNodeId }\n}\n\nfunction persistMountedEvaluationRunTree() {\n\tconst { mountedRunId, records } = getCurrentEvalRunViewState()\n\tif (!mountedRunId) return\n\tconst record = records[mountedRunId]\n\tif (!record?.tree) return\n\n\tconst tree = getActiveEvaluationTreeSnapshot()\n\tupdateEvaluationRunTree(mountedRunId, tree, engine.stores.scopeStore.active.id, engine.stores.selectionStore.ids[0])\n}\n\nfunction getActiveEvaluationTreeSnapshot(): CanvasTree {\n\tif (engine.stores.treeStore.hasUncommittedChanges()) {\n\t\tengine.doPostProcessing(false)\n\t}\n\treturn createCleanEvaluationTreeSnapshot(engine.tree)\n}\n\nfunction createCleanEvaluationTreeSnapshot(tree: CanvasTree): CanvasTree {\n\ttree.inEditor = true\n\tconst cleanTree = CanvasTree.fromJS(tree.toJS(), engine.componentLoader)\n\tassert(cleanTree, \"Evaluation tree snapshots must be cloneable.\")\n\tprepareCleanEvaluationTreeSnapshot(cleanTree)\n\treturn cleanTree\n}\n\nfunction prepareSavedEvaluationTreeForLoad(tree: CanvasTree): CanvasTree {\n\tprepareCleanEvaluationTreeSnapshot(tree)\n\tif (!tree.isLatest()) {\n\t\ttree.makeLatest()\n\t}\n\tassert(tree.isLatest(), \"Saved evaluation trees must be latest before loading.\")\n\treturn tree\n}\n\nfunction prepareCleanEvaluationTreeSnapshot(tree: CanvasTree) {\n\ttree.inEditor = true\n\tassert(!tree.hasUncommittedChanges(), \"Evaluation tree snapshots must be clean.\")\n\tassert(tree.inEditor, \"Evaluation tree snapshots must be marked as being inEditor.\")\n}\n\nfunction selectEvaluationScope(scopeId: NodeID, selectedNodeId: NodeID | undefined) {\n\tif (!engine.tree.get(scopeId)) return\n\n\tengine.stores.scopeStore.select(scopeId, { keepHistory: false })\n\tif (selectedNodeId && engine.tree.get(selectedNodeId)) {\n\t\tengine.stores.selectionStore.set(selectedNodeId)\n\t}\n}\n\nexport async function runAgentHarnessEvaluations(\n\tdefinitions: readonly AgentEvalDefinition[],\n\toptions: EvalRunOptions,\n\tsettings: RunEvaluationsSettings = {},\n): Promise<AgentEvalHudRunResults> {\n\tenterEvaluationsMode()\n\tsetCurrentEvalRunOptions(options)\n\tsetLatestAgentEvalJsonReport(undefined)\n\tconst resetBrowserRuntimeLoader = setBrowserEvalRuntimeLoader(loadBrowserEvalRuntimeOnGlobalEngine)\n\tconst modelConfigs = getEvaluationModelConfigs(settings)\n\tconst runCount = getEvaluationRunCount(settings)\n\tconst filteredDefinitions = getAgentEvalDefinitionsForRunOptions(definitions, options)\n\tconst shardSummary = getAgentEvalShardRunSummary(definitions, modelConfigs, runCount, options)\n\n\tif (shardSummary.totalRunCount > 0) {\n\t\tassert(\n\t\t\tshardSummary.totalRunCount >= options.parallelism,\n\t\t\t`Provisioned more shards than needed. (${shardSummary.totalRunCount} = ${filteredDefinitions.length} eval(s) \u00D7 ${modelConfigs.length} model(s) \u00D7 ${runCount} run(s), but got ${options.parallelism} shards).`,\n\t\t)\n\t} else {\n\t\t// Let Playwright take over and report the empty runs\n\t}\n\n\tconst result = await runAgentEvalDefinitionsForBrowser(filteredDefinitions, {\n\t\tmodelConfigs,\n\t\truns: runCount,\n\t\tsignal: settings.signal,\n\t\ttranscript: options.transcript,\n\t\tshouldRun: context => isAgentEvalRunSelectedForShard(context, options),\n\t\tonRunQueued: context => {\n\t\t\trecordAgentEvalPendingRun({\n\t\t\t\tevalId: context.definition.id,\n\t\t\t\trunInvocationId: context.runInvocationId,\n\t\t\t\tmodel: context.modelConfig.model,\n\t\t\t\treasoningEffort: context.modelConfig.reasoningEffort,\n\t\t\t\trunNumber: context.runNumber,\n\t\t\t\tstatus: \"queued\",\n\t\t\t})\n\t\t},\n\t\tonRunStart: context => {\n\t\t\trecordAgentEvalStart(context)\n\t\t},\n\t\tonRunProgressMessage: context => {\n\t\t\trecordAgentEvalRunProgress({\n\t\t\t\tevalId: context.definition.id,\n\t\t\t\trunInvocationId: context.runInvocationId,\n\t\t\t\tmodel: context.modelConfig.model,\n\t\t\t\treasoningEffort: context.modelConfig.reasoningEffort,\n\t\t\t\trunNumber: context.runNumber,\n\t\t\t\tprogress: context.message,\n\t\t\t})\n\t\t},\n\t\tonRunStopped: context => {\n\t\t\tmarkAgentEvalPendingRunStopped({\n\t\t\t\tevalId: context.definition.id,\n\t\t\t\trunInvocationId: context.runInvocationId,\n\t\t\t\tmodel: context.modelConfig.model,\n\t\t\t\treasoningEffort: context.modelConfig.reasoningEffort,\n\t\t\t\trunNumber: context.runNumber,\n\t\t\t})\n\t\t},\n\t\tonRun: run => {\n\t\t\trecordAgentEvalUiRun(run)\n\t\t},\n\t\tonRunUpdate: update => {\n\t\t\treturn recordAgentEvalRuntimeUpdate(update)\n\t\t},\n\t}).finally(resetBrowserRuntimeLoader)\n\tsetLatestAgentEvalJsonReport(result.report)\n\n\treturn {\n\t\t...result,\n\t\truns: result.uiReport.runs,\n\t\tparallelism: options.parallelism,\n\t\tindex: options.index,\n\t\tdefinitionCount: filteredDefinitions.length,\n\t\tmodelConfigCount: modelConfigs.length,\n\t\trunCount,\n\t\ttotalRunCount: shardSummary.totalRunCount,\n\t\tassignedRunCount: shardSummary.runCount,\n\t\tevalPattern: options.evalPattern,\n\t\tmaxSteps: options.maxSteps,\n\t}\n}\n\nfunction getEvaluationModelConfigs(settings: RunEvaluationsSettings): readonly AgentEvalModelConfig[] {\n\tif (settings.modelConfigs && settings.modelConfigs.length > 0) return settings.modelConfigs\n\treturn defaultAgentEvalModelConfigs\n}\n\nfunction recordAgentEvalStart(context: AgentEvalRunStartContext): void {\n\trecordAgentEvalPendingRun({\n\t\tevalId: context.definition.id,\n\t\trunInvocationId: context.runInvocationId,\n\t\tmodel: context.modelConfig.model,\n\t\treasoningEffort: context.modelConfig.reasoningEffort,\n\t\trunNumber: context.runNumber,\n\t\tstatus: \"loading\",\n\t})\n}\n\nasync function recordAgentEvalRuntimeUpdate(update: AgentEvalRunUpdate): Promise<void> {\n\tconst runtimeEngine = update.runtime.engine\n\tconst selectedNodeId = runtimeEngine.stores.selectionStore.ids[0]\n\tconst run = recordAgentEvalLiveRun({\n\t\tevalId: update.definition.id,\n\t\trunInvocationId: update.runInvocationId,\n\t\tmodel: update.model,\n\t\treasoningEffort: update.reasoningEffort,\n\t\trunNumber: update.runNumber,\n\t\tagentId: update.runtime.agent.id,\n\t\tscopeId: update.runtime.agent.scopeId,\n\t\tselectedNodeId,\n\t\trequests: update.runtime.agent.chatMessages,\n\t\ttranscriptInputMessages: update.transcriptInputMessages,\n\t\ttree: getEvaluationRuntimeTreeSnapshot(runtimeEngine),\n\t})\n\tif (runtimeEngine === engine) {\n\t\tif (shouldMountLiveAgentEvalRun(run.id)) {\n\t\t\tmarkEvaluationRunMounted(run.id)\n\t\t}\n\t\treturn\n\t}\n\tif (shouldMountLiveAgentEvalRun(run.id)) {\n\t\tawait activateEvaluationRun(run.id)\n\t}\n}\n\nfunction shouldMountLiveAgentEvalRun(runId: string): boolean {\n\tconst state = getCurrentEvalRunViewState()\n\tif (state.manuallySelectedRunId && state.manuallySelectedRunId !== runId) return false\n\treturn state.activeRunId === runId\n}\n\nfunction getEvaluationRuntimeTreeSnapshot(runtimeEngine: VekterEngine): CanvasTree {\n\tif (runtimeEngine.stores.treeStore.hasUncommittedChanges()) {\n\t\truntimeEngine.doPostProcessing(false)\n\t}\n\tconst cleanTree = CanvasTree.fromJS(runtimeEngine.tree.toJS(), runtimeEngine.componentLoader)\n\tassert(cleanTree, \"Evaluation runtime tree snapshots must be cloneable.\")\n\tprepareCleanEvaluationTreeSnapshot(cleanTree)\n\treturn cleanTree\n}\n\nfunction getEvaluationRunCount(settings: RunEvaluationsSettings): number {\n\treturn Math.max(1, Math.floor(settings.runCount ?? 1))\n}\n\nexport async function runAgentHarnessEvaluationsFromGlobal(options: unknown): Promise<AgentEvalHudRunResults> {\n\tconst validatedOptions = validateEvalRunOptions(options)\n\tconst abortController = new AbortController()\n\tengine.stores.agentStore.activeEvaluationRunAbortController = abortController\n\tenterEvaluationsMode()\n\tconst definitions = await importAgentEvalDefinitions()\n\ttry {\n\t\treturn await runAgentHarnessEvaluations(definitions, validatedOptions, {\n\t\t\tmodelConfigs: getModelConfigsForGlobalRunOptions(validatedOptions),\n\t\t\trunCount: validatedOptions.runCount,\n\t\t\tsignal: abortController.signal,\n\t\t})\n\t} finally {\n\t\tengine.stores.agentStore.clearActiveEvaluationRunAbortController(abortController)\n\t}\n}\n\nfunction getModelConfigsForGlobalRunOptions(options: EvalRunOptions): readonly AgentEvalModelConfig[] {\n\tif (options.models && options.models.length > 0) return options.models\n\treturn defaultAgentEvalModelConfigs\n}\n"],
  "mappings": "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",
  "names": ["results", "options", "categories", "importers", "importers", "filterAgentEvalDefinitions"]
}
