{
  "version": 3,
  "sources": ["../../src/app/ai/agents/evals2/scenarios/cms/componentPresetRichText.eval.ts"],
  "sourcesContent": ["import { assert, asGlobalId, externalModuleIdentifier, type ModuleExportIdentifierString } from \"@framerjs/shared\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport type { RichTextNode } from \"document/models/CanvasTree/index.ts\"\nimport type { ComponentPresetNode } from \"document/models/CanvasTree/nodes/ComponentPresetNode.ts\"\nimport {\n\tisCollectionItemNode,\n\tisComponentPresetNode,\n\tisRichTextNode,\n} from \"document/models/CanvasTree/nodes/utils/nodeCheck.ts\"\nimport { isVariableReference } from \"document/models/CanvasTree/traits/VariableReference.ts\"\nimport { isPrefixedControlPropKey, removeControlPropKeyPrefix } from \"document/models/controlProps/controlPropKey.ts\"\nimport { filterComponentPresetControls } from \"document/models/controlProps/filterComponentPresetControls.ts\"\nimport { ControlType } from \"library/index.ts\"\nimport { cmsSchemaParams, makeSchema } from \"prosemirror/schema/index.ts\"\nimport { isModuleNode, type ModuleNode } from \"prosemirror/schema/module.ts\"\nimport { NodeName } from \"prosemirror/schema/names.ts\"\nimport { parseRichText } from \"prosemirror/serialization/dom.ts\"\nimport { getLookupQueryForModuleComponent, moduleComponents } from \"utils/moduleComponents.ts\"\nimport { isObject, isString } from \"utils/typeChecks.ts\"\nimport { CommandType, TextComponentInstanceClass } from \"../../../dsl.ts\"\nimport { agentEvalAsset } from \"../../harness/asset.ts\"\nimport { createEvalExportZipFixture } from \"../../harness/fixture.ts\"\n\nconst gettingStartedItemId = \"C9LTUOGG9\"\nconst contentFieldId = \"fTpLXhufs\"\nconst contentRichTextNodeId = \"p3SIbu0Py\"\nconst componentPresetRichTextRequestId = \"Ksp8Okf5K\"\nconst requestedCode = \"npm run dev\"\nconst requestedLanguage = \"shell\"\nconst requestedThemeVariant = \"atomDark\"\nconst requestedFill = \"#111827\"\nconst cmsSchema = makeSchema(cmsSchemaParams)\nconst componentPresetKey = \"componentPreset\"\nconst componentPresetKeyPrefix = `${componentPresetKey}.`\n\ninterface CodeBlockPresetControlKeys {\n\traw: Set<string>\n}\n\nfunction getObjectPropValue(props: unknown, key: string): unknown {\n\tif (!isObject(props)) return undefined\n\tconst prop = props[key]\n\tif (!isObject(prop) || !(\"value\" in prop)) return undefined\n\treturn prop.value\n}\n\nfunction getRawControlPropValue(\n\tprops: Readonly<Record<string, { value?: unknown } | undefined>>,\n\tkey: string,\n): unknown {\n\tconst prop = props[key] ?? props[`$control__${key}`]\n\tif (!prop) return\n\tif (isObject(prop) && \"value\" in prop) return prop.value\n\treturn prop\n}\n\nfunction normalizeControlKey(key: string): string {\n\treturn isPrefixedControlPropKey(key) ? removeControlPropKeyPrefix(key) : key\n}\n\nfunction getCmsContentHtml(engine: VekterEngine): string {\n\tconst item = engine.tree.get(gettingStartedItemId)\n\tassert(item && isCollectionItemNode(item), \"Expected Getting Started collection item.\")\n\n\tconst content = item.getControlProp(contentFieldId)\n\tassert(content?.type === ControlType.RichText && isString(content.value), \"Expected rich text content field.\")\n\treturn content.value\n}\n\nasync function getResolvedCodeBlockIdentifier(engine: VekterEngine): Promise<ModuleExportIdentifierString | undefined> {\n\tconst moduleQuery = await engine.stores.modulesStore.lookUpModule(\n\t\tgetLookupQueryForModuleComponent(moduleComponents.codeblock),\n\t)\n\tconst module = moduleQuery.module\n\tif (!module?.files.module) return\n\n\treturn externalModuleIdentifier(asGlobalId(module.id), module.saveId, module.files.module, \"default\").value\n}\n\nfunction getCodeBlockModuleNodes(\n\tengine: VekterEngine,\n\tcodeBlockIdentifier: ModuleExportIdentifierString | undefined,\n): ModuleNode[] {\n\tconst doc = parseRichText(getCmsContentHtml(engine), cmsSchema)\n\tconst modules: ModuleNode[] = []\n\tdoc.descendants(node => {\n\t\tif (isModuleNode(node) && node.attrs.identifier === codeBlockIdentifier) modules.push(node)\n\t})\n\treturn modules\n}\n\nfunction getTopLevelCodeBlockIndex(\n\tengine: VekterEngine,\n\tcodeBlockIdentifier: ModuleExportIdentifierString | undefined,\n): number {\n\tconst doc = parseRichText(getCmsContentHtml(engine), cmsSchema)\n\tfor (let index = 0; index < doc.childCount; index++) {\n\t\tconst child = doc.child(index)\n\t\tif (isModuleNode(child) && child.attrs.identifier === codeBlockIdentifier) return index\n\t}\n\treturn -1\n}\n\nfunction getTopLevelIntroParagraphIndex(engine: VekterEngine): number {\n\tconst doc = parseRichText(getCmsContentHtml(engine), cmsSchema)\n\tfor (let index = 0; index < doc.childCount; index++) {\n\t\tconst child = doc.child(index)\n\t\tconst blockTag = isObject(child.attrs) && isString(child.attrs.tag) ? child.attrs.tag : undefined\n\t\tif (child.type.name === NodeName.TextBlock && blockTag === \"p\" && child.textContent.trim().length > 0) return index\n\t}\n\treturn -1\n}\n\nfunction getCodeBlockPresetControlKeys(\n\tengine: VekterEngine,\n\tcomponentIdentifier: ModuleExportIdentifierString,\n): CodeBlockPresetControlKeys {\n\tconst component = engine.componentLoader.reactComponentForIdentifier(componentIdentifier)\n\tassert(component, \"Expected CodeBlock component definition.\")\n\tconst raw = new Set(Object.keys(filterComponentPresetControls(component, \"onlyPresets\")).map(normalizeControlKey))\n\tassert(raw.size > 0, \"Expected CodeBlock component to define preset-only controls.\")\n\treturn {\n\t\traw,\n\t}\n}\n\nfunction getCodeBlockPresetNodes(\n\tengine: VekterEngine,\n\tcomponentIdentifier: ModuleExportIdentifierString,\n): ComponentPresetNode[] {\n\tconst nodes: ComponentPresetNode[] = []\n\tengine.tree.forEachNode(node => {\n\t\tif (!isComponentPresetNode(node) || node.componentIdentifier !== componentIdentifier) return\n\t\tnodes.push(node)\n\t})\n\treturn nodes\n}\n\nfunction getAssignedCodeBlockPresetNode(\n\tengine: VekterEngine,\n\tcontentRichTextNode: RichTextNode,\n\tcomponentIdentifier: ModuleExportIdentifierString,\n): ComponentPresetNode {\n\tconst presetId = contentRichTextNode.getComponentPreset(componentIdentifier)\n\tassert(isString(presetId), \"Expected Content rich text node to assign a CodeBlock component preset.\")\n\n\tconst presetNode = getCodeBlockPresetNodes(engine, componentIdentifier).find(node => node.id === presetId)\n\tassert(presetNode, \"Expected assigned CodeBlock component preset node.\")\n\treturn presetNode\n}\n\nfunction getContentRichTextNode(engine: VekterEngine): RichTextNode {\n\tconst node = engine.tree.get(contentRichTextNodeId)\n\tassert(node && isRichTextNode(node), \"Expected Content rich text node.\")\n\tassert(\n\t\tisVariableReference(node.htmlContent) && node.htmlContent.id === contentFieldId,\n\t\t\"Expected Content rich text node to be bound to the CMS Content field.\",\n\t)\n\treturn node\n}\n\nfunction getOnlyCodeBlockModuleNode(moduleNodes: readonly ModuleNode[]): ModuleNode {\n\tassert(moduleNodes.length === 1, \"Expected exactly one CodeBlock module node.\")\n\tconst moduleNode = moduleNodes[0]\n\tassert(moduleNode, \"Expected CodeBlock module node.\")\n\treturn moduleNode\n}\n\nfunction getComponentPresetAttributeKeys(attributes: object): string[] {\n\treturn Object.keys(attributes).filter(key => key === componentPresetKey || key.startsWith(componentPresetKeyPrefix))\n}\n\nevaluation(\n\t\"CMS: Component Preset Rich Text\",\n\tcreateEvalExportZipFixture(\"component-preset-rich-text\", agentEvalAsset(\"./component-preset-rich-text.fixture.zip\"), {\n\t\truntimeTarget: \"browser\",\n\t}),\n\t{\n\t\tid: \"cms-component-preset-rich-text\",\n\t\truntimeTarget: \"browser\",\n\t\trequestId: componentPresetRichTextRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 8,\n\t\tstopWhenPassed: true,\n\t},\n\tasync ({ commands, engine, report, tools }) => {\n\t\tconst resolvedCodeBlockIdentifier = await getResolvedCodeBlockIdentifier(engine)\n\t\tconst moduleNodes = getCodeBlockModuleNodes(engine, resolvedCodeBlockIdentifier)\n\t\tconst componentIdentifier = resolvedCodeBlockIdentifier\n\t\tconst contentRichTextNode = getContentRichTextNode(engine)\n\n\t\ttools.reportReplayChecks(report, { requestId: componentPresetRichTextRequestId, stepIndex: 0 })\n\n\t\treport.correctness.required(\"sets CodeBlock content in the CMS rich text field\", () => {\n\t\t\texpect(resolvedCodeBlockIdentifier).toEqual(expect.any(String))\n\t\t\tconst moduleNode = getOnlyCodeBlockModuleNode(moduleNodes)\n\n\t\t\texpect(getObjectPropValue(moduleNode.attrs.props, \"code\")).toBe(requestedCode)\n\t\t\texpect(String(getObjectPropValue(moduleNode.attrs.props, \"language\")).toLowerCase()).toBe(requestedLanguage)\n\t\t})\n\n\t\treport.correctness.required(\"creates a CodeBlock component preset\", () => {\n\t\t\tassert(componentIdentifier, \"Expected CodeBlock component identifier.\")\n\t\t\tconst assignedPresetNode = getAssignedCodeBlockPresetNode(engine, contentRichTextNode, componentIdentifier)\n\t\t\tconst presetRawControlKeys = Object.keys(assignedPresetNode.getRawControlProps())\n\n\t\t\texpect(presetRawControlKeys.length).toBeGreaterThan(0)\n\t\t})\n\n\t\treport.correctness.required(\"sets the CodeBlock component preset on the rich text renderer\", () => {\n\t\t\tassert(componentIdentifier, \"Expected CodeBlock component identifier.\")\n\n\t\t\texpect(contentRichTextNode.getComponentPreset(componentIdentifier)).toEqual(expect.any(String))\n\t\t})\n\n\t\treport.accuracy.scored(\"inserts CodeBlock directly after the intro paragraph\", () => {\n\t\t\tconst introParagraphIndex = getTopLevelIntroParagraphIndex(engine)\n\t\t\tconst codeBlockIndex = getTopLevelCodeBlockIndex(engine, resolvedCodeBlockIdentifier)\n\n\t\t\texpect(introParagraphIndex).toBeGreaterThanOrEqual(0)\n\t\t\texpect(codeBlockIndex).toBe(introParagraphIndex + 1)\n\t\t})\n\n\t\treport.accuracy.scored(\"keeps preset controls out of the TextComponentInstance props\", () => {\n\t\t\tassert(componentIdentifier, \"Expected CodeBlock component identifier.\")\n\t\t\tconst moduleNode = getOnlyCodeBlockModuleNode(moduleNodes)\n\n\t\t\tconst presetControlKeys = getCodeBlockPresetControlKeys(engine, componentIdentifier)\n\t\t\tconst presetPropsOnEmbed = Array.from(presetControlKeys.raw).filter(\n\t\t\t\tkey => getObjectPropValue(moduleNode.attrs.props, key) !== undefined,\n\t\t\t)\n\n\t\t\texpect(presetPropsOnEmbed).toHaveLength(0)\n\t\t})\n\n\t\treport.accuracy.scored(\"keeps CodeBlock content controls out of the component preset\", () => {\n\t\t\tassert(componentIdentifier, \"Expected CodeBlock component identifier.\")\n\t\t\tconst assignedPresetNode = getAssignedCodeBlockPresetNode(engine, contentRichTextNode, componentIdentifier)\n\t\t\tconst presetRawControlProps = assignedPresetNode.getRawControlProps()\n\n\t\t\texpect(presetRawControlProps.code).toBeUndefined()\n\t\t\texpect(presetRawControlProps.language).toBeUndefined()\n\t\t})\n\n\t\treport.correctness.required(\"sets the requested CodeBlock styling on the component preset\", () => {\n\t\t\tassert(componentIdentifier, \"Expected CodeBlock component identifier.\")\n\t\t\tconst assignedPresetNode = getAssignedCodeBlockPresetNode(engine, contentRichTextNode, componentIdentifier)\n\t\t\tconst presetRawControlProps = assignedPresetNode.getRawControlProps()\n\n\t\t\t// CodeBlock exposes `$control__fill` / `$control__theme1` to the agent via safe property control title aliases,\n\t\t\t// but ComponentPresetNode stores the raw control keys CodeBlock defines: `background` / `theme`.\n\t\t\tconst themeVariantValue = getRawControlPropValue(presetRawControlProps, \"theme\")\n\t\t\tconst fillValue = getRawControlPropValue(presetRawControlProps, \"background\")\n\n\t\t\texpect(themeVariantValue).toBe(requestedThemeVariant)\n\t\t\texpect(fillValue).toBe(requestedFill)\n\t\t})\n\n\t\treport.accuracy.scored(\"uses only preset controls on the CodeBlock component preset\", () => {\n\t\t\tassert(componentIdentifier, \"Expected CodeBlock component identifier.\")\n\t\t\tconst presetControlKeys = getCodeBlockPresetControlKeys(engine, componentIdentifier)\n\t\t\tconst assignedPresetNode = getAssignedCodeBlockPresetNode(engine, contentRichTextNode, componentIdentifier)\n\t\t\tconst presetRawControlKeys = Object.keys(assignedPresetNode.getRawControlProps())\n\t\t\tconst invalidPresetRawKeys = presetRawControlKeys.filter(\n\t\t\t\tkey => !presetControlKeys.raw.has(normalizeControlKey(key)),\n\t\t\t)\n\n\t\t\texpect(presetRawControlKeys.length).toBeGreaterThan(0)\n\t\t\texpect(invalidPresetRawKeys).toHaveLength(0)\n\t\t})\n\n\t\treport.accuracy.scored(\"does not put componentPreset on the TextComponentInstance\", () => {\n\t\t\tconst moduleNode = getOnlyCodeBlockModuleNode(moduleNodes)\n\t\t\texpect(getObjectPropValue(moduleNode.attrs.props, componentPresetKey)).toBeUndefined()\n\n\t\t\tconst textComponentInstanceAddsWithComponentPreset = commands\n\t\t\t\t.byType(CommandType.Add)\n\t\t\t\t.filter(command => command.attributes.node === TextComponentInstanceClass)\n\t\t\t\t.filter(command => getComponentPresetAttributeKeys(command.attributes).length > 0)\n\t\t\tconst componentPresetUpdatesOnNonRichTextNodes = commands.byType(CommandType.Update).filter(command => {\n\t\t\t\tif (getComponentPresetAttributeKeys(command.attributes).length === 0) return false\n\t\t\t\tconst node = engine.tree.get(command.attributes.id)\n\t\t\t\treturn !node || !isRichTextNode(node)\n\t\t\t})\n\n\t\t\texpect(textComponentInstanceAddsWithComponentPreset).toHaveLength(0)\n\t\t\texpect(componentPresetUpdatesOnNonRichTextNodes).toHaveLength(0)\n\t\t})\n\t},\n)\n"],
  "mappings": "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",
  "names": []
}
