{
  "version": 3,
  "sources": ["../../src/app/ai/agents/evals2/scenarios/component/buttonComponentControls.eval.ts"],
  "sourcesContent": ["import { assert } from \"@framerjs/shared\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport type {\n\tCanvasNode,\n\tCodeComponentNode,\n\tLoadedSmartComponentNode,\n\tNodeID,\n\tRichTextNode,\n} from \"document/models/CanvasTree/index.ts\"\nimport {\n\tisCodeComponentNode,\n\tisRichTextNode,\n\tisSmartComponentNode,\n} from \"document/models/CanvasTree/nodes/utils/nodeCheck.ts\"\nimport { isVariableReference } from \"document/models/CanvasTree/traits/VariableReference.ts\"\nimport { isVariableDefinition, type VariableDefinition } from \"document/models/CanvasTree/traits/WithVariables.ts\"\nimport { ControlType } from \"library/index.ts\"\nimport { CommandType, ComponentInstanceNodeClass, ComponentNodeClass, isCommand } from \"../../../dsl.ts\"\nimport { COMPONENT_DEFINITION_QUERY, ICON_SET_DEFINITION_QUERY } from \"../../../tools/readProjectQueryTypes.ts\"\nimport { CREATE_COMPONENT_FROM_FRAME_TOOL_NAME } from \"../../../tools/toolNames.ts\"\nimport { agentEvalAsset } from \"../../harness/asset.ts\"\nimport { createEvalExportZipFixture } from \"../../harness/fixture.ts\"\nimport type { AgentEvalCommandsHelper, AgentEvalStepsHelper } from \"../../harness/helpers.ts\"\n\nconst createButtonRequestId = \"EDI3GaBp3\"\nconst insertButtonsRequestId = \"B7arMBEwN\"\nconst componentNodeFromRequestId = \"gW5EtSHdm\"\nconst buttonIconControlsRequestId = \"cmnFIK4BH\"\nconst selectedButtonId: NodeID = \"AaO5sVhAT\"\nconst buttonComponentName = \"Button\"\n\nconst buttonControlsFixture = createEvalExportZipFixture(\n\t\"button-component-controls\",\n\tagentEvalAsset(\"./button-component-controls.fixture.zip\"),\n\t{ runtimeTarget: \"browser\" },\n)\n\nconst componentNodeFromFixture = createEvalExportZipFixture(\n\t\"component-node-from-selection\",\n\tagentEvalAsset(\"./component-node-from-selection.fixture.zip\"),\n\t{ runtimeTarget: \"browser\" },\n)\n\nconst buttonIconControlsFixture = createEvalExportZipFixture(\n\t\"button-icon-controls\",\n\tagentEvalAsset(\"./button-icon-controls.fixture.zip\"),\n\t{ runtimeTarget: \"browser\" },\n)\n\nfunction isLoadedButtonComponent(node: CanvasNode): node is LoadedSmartComponentNode {\n\treturn isSmartComponentNode(node) && node.name === buttonComponentName && node.isLoaded()\n}\n\nfunction getButtonComponents(engine: VekterEngine): LoadedSmartComponentNode[] {\n\treturn engine.tree.root.children.filter(isLoadedButtonComponent)\n}\n\nfunction getOnlyButtonComponent(engine: VekterEngine): LoadedSmartComponentNode {\n\tconst components = getButtonComponents(engine)\n\texpect(components).toHaveLength(1)\n\tconst component = components.at(0)\n\tassert(component, \"Expected a Button component.\")\n\treturn component\n}\n\nfunction findStringVariable(\n\tcomponent: LoadedSmartComponentNode,\n\tnames: readonly string[],\n): VariableDefinition | undefined {\n\treturn findVariable(component, ControlType.String, names)\n}\n\nfunction findVariable(\n\tcomponent: LoadedSmartComponentNode,\n\ttype: ControlType,\n\tnames: readonly string[],\n): VariableDefinition | undefined {\n\treturn component.variables.find(\n\t\t(variable): variable is VariableDefinition =>\n\t\t\tisVariableDefinition(variable) && variable.type === type && names.includes(variable.name),\n\t)\n}\n\nfunction getRichTextDescendants(node: CanvasNode): RichTextNode[] {\n\treturn Array.from(node.walk()).filter(isRichTextNode)\n}\n\nfunction richTextReferencesVariable(node: RichTextNode, variableId: string): boolean {\n\tif (isVariableReference(node.textContent) && node.textContent.id === variableId) return true\n\tif (isVariableReference(node.htmlContent) && node.htmlContent.id === variableId) return true\n\treturn false\n}\n\nfunction getComponentInstances(engine: VekterEngine, component: LoadedSmartComponentNode): CodeComponentNode[] {\n\treturn Array.from(engine.tree.root.walk()).filter(\n\t\t(node): node is CodeComponentNode =>\n\t\t\tisCodeComponentNode(node) && node.codeComponentIdentifier === component.instanceIdentifier,\n\t)\n}\n\nfunction getControlPropStringValues(\n\tinstances: readonly CodeComponentNode[],\n\tcontrolKey: string,\n\ttype: ControlType,\n): string[] {\n\treturn instances.map(instance => {\n\t\tconst controlProp = instance.getRawControlProp(controlKey)\n\n\t\texpect(controlProp?.type).toBe(type)\n\t\tassert(typeof controlProp?.value === \"string\", `Expected '${controlKey}' control prop to have a string value.`)\n\t\treturn controlProp.value\n\t})\n}\n\nfunction getComponentInstanceAddCommands(commands: AgentEvalCommandsHelper) {\n\treturn commands.byType(CommandType.Add).filter(command => command.attributes.node === ComponentInstanceNodeClass)\n}\n\nfunction getUpdatedControlValues(commands: AgentEvalCommandsHelper, controlNames: readonly string[]): string[] {\n\tconst controlKeys = new Set(controlNames.map(name => `$control__${name}`))\n\n\treturn commands.byType(CommandType.Update).flatMap(command => {\n\t\tconst values: string[] = []\n\t\tfor (const [key, value] of Object.entries(command.attributes)) {\n\t\t\tif (!controlKeys.has(key) || typeof value !== \"string\") continue\n\t\t\tvalues.push(value)\n\t\t}\n\t\treturn values\n\t})\n}\n\nfunction getFirstControlCommandStepIndex(steps: AgentEvalStepsHelper, controlNames: readonly string[]): number {\n\tconst controlKeys = new Set(controlNames.map(name => `$control__${name}`))\n\tconst allSteps = steps.all()\n\tfor (let stepIndex = 0; stepIndex < allSteps.length; stepIndex++) {\n\t\tconst step = allSteps[stepIndex]\n\t\tassert(step, \"Expected step to exist.\")\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)) continue\n\t\t\t\tif (line.type !== CommandType.Update) continue\n\t\t\t\tif (Object.keys(line.attributes).some(key => controlKeys.has(key))) return stepIndex\n\t\t\t}\n\t\t}\n\t}\n\treturn Number.POSITIVE_INFINITY\n}\n\nevaluation(\n\t\"Component Controls: Create Button Component With Title Variable\",\n\tbuttonControlsFixture,\n\t{\n\t\tid: \"component-controls-create-button-with-title-variable\",\n\t\truntimeTarget: \"browser\",\n\t\trequestId: createButtonRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 4,\n\t},\n\t({ commands, engine, report, tools }) => {\n\t\ttools.reportReplayChecks(report, { requestId: createButtonRequestId })\n\n\t\treport.correctness.scored(\"creates a Button component definition from scratch\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst componentCommands = commands\n\t\t\t\t.byType(CommandType.Add)\n\t\t\t\t.filter(command => command.attributes.node === ComponentNodeClass)\n\t\t\tconst createFromScratchCommand = componentCommands.find(command => !(\"from\" in command.attributes))\n\n\t\t\texpect(component.name).toBe(buttonComponentName)\n\t\t\texpect(createFromScratchCommand).toBeDefined()\n\t\t})\n\t\treport.correctness.scored(\"adds a Title text variable\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst variable = findStringVariable(component, [\"Title\"])\n\n\t\t\texpect(variable?.name).toBe(\"Title\")\n\t\t\texpect(variable?.type).toBe(ControlType.String)\n\t\t\texpect(typeof variable?.initialValue).toBe(\"string\")\n\t\t})\n\t\treport.correctness.scored(\"binds the button label to the Title variable\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst variable = findStringVariable(component, [\"Title\"])\n\t\t\tassert(variable, \"Expected a Title variable.\")\n\t\t\tconst primaryVariant = component.getPrimaryVariant()\n\t\t\tassert(primaryVariant, \"Expected a primary variant.\")\n\n\t\t\texpect(getRichTextDescendants(primaryVariant).some(node => richTextReferencesVariable(node, variable.id))).toBe(\n\t\t\t\ttrue,\n\t\t\t)\n\t\t})\n\t},\n)\n\nevaluation(\n\t\"Component Controls: Insert Button Instances With Titles\",\n\tbuttonControlsFixture,\n\t{\n\t\tid: \"component-controls-insert-button-instances-with-titles\",\n\t\truntimeTarget: \"browser\",\n\t\trequestId: insertButtonsRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 4,\n\t},\n\t({ commands, engine, report, steps, tools }) => {\n\t\ttools.reportReplayChecks(report, { requestId: insertButtonsRequestId })\n\n\t\treport.correctness.scored(\"reads the Button component definition before setting controls\", () => {\n\t\t\tconst buttonComponentId = getOnlyButtonComponent(engine).id\n\t\t\tconst componentDefinitionResult = tools.firstReadProjectResult(\n\t\t\t\tquery => query.type === COMPONENT_DEFINITION_QUERY && query.id === buttonComponentId,\n\t\t\t)\n\t\t\tassert(componentDefinitionResult, \"Expected a component-definition query for Button.\")\n\n\t\t\texpect(componentDefinitionResult.input.queries).toEqual(\n\t\t\t\texpect.arrayContaining([\n\t\t\t\t\texpect.objectContaining({\n\t\t\t\t\t\ttype: COMPONENT_DEFINITION_QUERY,\n\t\t\t\t\t\tid: buttonComponentId,\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\t)\n\t\t\texpect(componentDefinitionResult.stepIndex).toBeLessThan(getFirstControlCommandStepIndex(steps, [\"title\"]))\n\t\t})\n\t\treport.correctness.scored(\"adds three Button instances to the tree\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst instances = getComponentInstances(engine, component)\n\n\t\t\texpect(instances).toHaveLength(3)\n\t\t})\n\t\treport.correctness.scored(\"emits three Button component instance insert commands\", () => {\n\t\t\texpect(getComponentInstanceAddCommands(commands)).toHaveLength(3)\n\t\t\texpect(\n\t\t\t\tcommands.byType(CommandType.Add).filter(command => command.attributes.node === ComponentNodeClass),\n\t\t\t).toHaveLength(0)\n\t\t})\n\t\treport.correctness.scored(\"sets distinct title controls in the tree\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst variable = findStringVariable(component, [\"Title\"])\n\t\t\tassert(variable, \"Expected a Title variable.\")\n\t\t\tconst titles = getControlPropStringValues(\n\t\t\t\tgetComponentInstances(engine, component),\n\t\t\t\tvariable.id,\n\t\t\t\tControlType.String,\n\t\t\t)\n\n\t\t\texpect(titles).toHaveLength(3)\n\t\t\texpect(new Set(titles).size).toBe(titles.length)\n\t\t})\n\t\treport.correctness.scored(\"emits distinct title control updates\", () => {\n\t\t\tconst titles = getUpdatedControlValues(commands, [\"title\"])\n\n\t\t\texpect(new Set(titles).size).toBe(3)\n\t\t})\n\t},\n)\n\nevaluation(\n\t\"Component Controls: Request Icon Set Definition Before Adding Icons\",\n\tbuttonIconControlsFixture,\n\t{\n\t\tid: \"component-controls-request-icon-set-definition-before-icons\",\n\t\truntimeTarget: \"browser\",\n\t\trequestId: buttonIconControlsRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 4,\n\t},\n\t({ commands, engine, report, steps, tools }) => {\n\t\ttools.reportReplayChecks(report, { requestId: buttonIconControlsRequestId })\n\n\t\treport.correctness.scored(\"requests the icon set definition before setting icon controls\", () => {\n\t\t\tconst iconSetResult = tools.firstReadProjectResult(query => query.type === ICON_SET_DEFINITION_QUERY)\n\t\t\tassert(iconSetResult, \"Expected an icon-set-definition query.\")\n\n\t\t\texpect(iconSetResult.input.queries).toEqual(\n\t\t\t\texpect.arrayContaining([\n\t\t\t\t\texpect.objectContaining({\n\t\t\t\t\t\ttype: ICON_SET_DEFINITION_QUERY,\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\t)\n\t\t\texpect(iconSetResult.stepIndex).toBeLessThan(getFirstControlCommandStepIndex(steps, [\"icon\"]))\n\t\t})\n\t\treport.correctness.scored(\"adds three Button instances to the tree\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst instances = getComponentInstances(engine, component)\n\n\t\t\texpect(instances).toHaveLength(3)\n\t\t})\n\t\treport.correctness.scored(\"emits three Button component instance insert commands\", () => {\n\t\t\texpect(getComponentInstanceAddCommands(commands)).toHaveLength(3)\n\t\t})\n\t\treport.correctness.scored(\"uses different text labels in the tree\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst variable = findStringVariable(component, [\"Label\", \"Title\"])\n\t\t\tassert(variable, \"Expected a label variable.\")\n\t\t\tconst labels = getControlPropStringValues(\n\t\t\t\tgetComponentInstances(engine, component),\n\t\t\t\tvariable.id,\n\t\t\t\tControlType.String,\n\t\t\t)\n\n\t\t\texpect(labels).toHaveLength(3)\n\t\t\texpect(new Set(labels).size).toBe(labels.length)\n\t\t})\n\t\treport.correctness.scored(\"emits different label control updates\", () => {\n\t\t\tconst labels = getUpdatedControlValues(commands, [\"label\"])\n\n\t\t\texpect(labels).toHaveLength(3)\n\t\t\texpect(new Set(labels).size).toBe(labels.length)\n\t\t})\n\t\treport.correctness.scored(\"uses different icons in the tree\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst variable = findVariable(component, ControlType.VectorSetItem, [\"Icon\"])\n\t\t\tassert(variable, \"Expected an Icon variable.\")\n\t\t\tconst icons = getControlPropStringValues(\n\t\t\t\tgetComponentInstances(engine, component),\n\t\t\t\tvariable.id,\n\t\t\t\tControlType.VectorSetItem,\n\t\t\t)\n\n\t\t\texpect(icons).toHaveLength(3)\n\t\t\texpect(new Set(icons).size).toBe(icons.length)\n\t\t})\n\t\treport.correctness.scored(\"emits different icon control updates\", () => {\n\t\t\tconst icons = getUpdatedControlValues(commands, [\"icon\"])\n\n\t\t\texpect(icons).toHaveLength(3)\n\t\t\texpect(new Set(icons).size).toBe(icons.length)\n\t\t})\n\t},\n)\n\nevaluation(\n\t\"Component Controls: Convert Selected Button With create_component_from_frame\",\n\tcomponentNodeFromFixture,\n\t{\n\t\tid: \"component-controls-component-node-from-selected-button\",\n\t\truntimeTarget: \"browser\",\n\t\trequestId: componentNodeFromRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 3,\n\t},\n\t({ engine, report, tools }) => {\n\t\ttools.reportReplayChecks(report, { requestId: componentNodeFromRequestId })\n\n\t\treport.correctness.scored(\"uses create_component_from_frame for the selected button\", () => {\n\t\t\tconst componentFromCall = tools.firstCall(\n\t\t\t\tCREATE_COMPONENT_FROM_FRAME_TOOL_NAME,\n\t\t\t\tcall => call.input.id === selectedButtonId,\n\t\t\t)\n\n\t\t\texpect(componentFromCall).toBeDefined()\n\t\t})\n\t\treport.correctness.scored(\"moves the selected button into the component as the primary variant\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\n\t\t\texpect(component.baseVariantId).toBe(selectedButtonId)\n\t\t\texpect(component.getPrimaryVariant()?.id).toBe(selectedButtonId)\n\t\t})\n\t\treport.correctness.scored(\"replaces the selected button with a component instance\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst instances = getComponentInstances(engine, component)\n\n\t\t\texpect(instances).toHaveLength(1)\n\t\t})\n\t\treport.correctness.scored(\"adds and binds a label variable\", () => {\n\t\t\tconst component = getOnlyButtonComponent(engine)\n\t\t\tconst variable = findStringVariable(component, [\"Label\", \"Title\"])\n\t\t\tassert(variable, \"Expected a label variable.\")\n\t\t\tconst primaryVariant = component.getPrimaryVariant()\n\t\t\tassert(primaryVariant, \"Expected a primary variant.\")\n\n\t\t\texpect(getRichTextDescendants(primaryVariant).some(node => richTextReferencesVariable(node, variable.id))).toBe(\n\t\t\t\ttrue,\n\t\t\t)\n\t\t})\n\t},\n)\n"],
  "mappings": "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",
  "names": []
}
