{
  "version": 3,
  "sources": ["../../src/app/ai/agents/evals2/scenarios/cms/cmsFieldConversions.eval.ts"],
  "sourcesContent": ["import { assert, localModuleIdentifierForStableName, ModuleType } from \"@framerjs/shared\"\nimport { SCRIPT_TOOL_NAME } from \"app/ai/agents/tools/toolNames.ts\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport { createContentManagementNodeIfNeeded } from \"document/components/chrome/contentManagement/utils/createContentManagementNodeIfNeeded.ts\"\nimport { createVariable } from \"document/components/chrome/properties/utils/createVariable.ts\"\nimport { CollectionItemNode, CollectionNode } from \"document/models/CanvasTree/index.ts\"\nimport { isCollectionItemNode } from \"document/models/CanvasTree/nodes/utils/nodeCheck.ts\"\nimport {\n\tisMultiCollectionReferenceVariableDefinition,\n\tisStringVariableDefinition,\n} from \"document/models/CanvasTree/traits/WithVariables.ts\"\nimport { isLinkToURL } from \"document/models/CanvasTree/traits/utils/Link.ts\"\nimport { ControlType } from \"library/index.ts\"\nimport { agentEvalAsset } from \"../../harness/asset.ts\"\nimport { createEvalExportZipFixture, createPromptAgentFixture } from \"../../harness/fixture.ts\"\nimport { findCollectionVariableById, getCollection } from \"./cmsEvalUtils.ts\"\n\nconst booleanToStringArticlesCollectionId = \"QCvoIUM8z\"\nconst oldIsEnabledFieldId = \"wMZGetz2I\"\nconst booleanToStringRequestId = \"xskIr6N4u\"\nconst expectedBooleanToStringValues = new Map([\n\t[\"c_1yAsIiY\", \"true\"],\n\t[\"ypGUYgPJ8\", \"false\"],\n\t[\"CsTHUwLsR\", \"false\"],\n\t[\"guLNAjJjC\", \"true\"],\n\t[\"Fl8gviAc7\", \"false\"],\n\t[\"ipG8exQAi\", \"true\"],\n\t[\"XAqmkHvG2\", \"false\"],\n\t[\"wPkHImfr2\", \"true\"],\n\t[\"xxer72g1Q\", \"false\"],\n\t[\"bER5YTKPO\", \"true\"],\n])\n\nfunction expectOldFieldDeleted(engine: VekterEngine, collectionId: string, oldFieldId: string): void {\n\tconst collection = getCollection(engine, collectionId)\n\texpect(collection.variables.some(variable => variable.id === oldFieldId)).toBe(false)\n}\n\nfunction expectFieldAtPosition(engine: VekterEngine, collectionId: string, fieldId: string, position: number): void {\n\texpect(getCollection(engine, collectionId).variables.at(position)?.id).toBe(fieldId)\n}\n\nfunction getCollectionItemControlValue(engine: VekterEngine, itemId: string, fieldId: string): unknown {\n\tconst item = engine.tree.get(itemId)\n\treturn isCollectionItemNode(item) ? item.getControlProp(fieldId)?.value : undefined\n}\n\nconst stringToMultiRefArticlesCollectionId = \"articles_strmref\"\nconst stringToMultiRefCategoriesCollectionId = \"cats_strmref\"\nconst stringToMultiRefOldTagsFieldId = \"tags_old_strmref\"\nconst stringToMultiRefArticleTitleFieldId = \"title_strmref\"\nconst stringToMultiRefCategoryNameFieldId = \"name_strmref\"\nconst stringToMultiRefCategoryItems: ReadonlyArray<{ id: string; name: string }> = [\n\t{ id: \"cat_tech_strmref\", name: \"Tech\" },\n\t{ id: \"cat_design_strmref\", name: \"Design\" },\n\t{ id: \"cat_strategy_strmref\", name: \"Strategy\" },\n\t{ id: \"cat_ai_strmref\", name: \"AI\" },\n\t{ id: \"cat_marketing_strmref\", name: \"Marketing\" },\n]\nconst stringToMultiRefArticleItems: ReadonlyArray<{ id: string; title: string; tags: string }> = [\n\t{ id: \"art_1_strmref\", title: \"Building agents\", tags: \"Tech, AI\" },\n\t{ id: \"art_2_strmref\", title: \"Design systems\", tags: \"Design, Strategy\" },\n\t{ id: \"art_3_strmref\", title: \"Marketing tips\", tags: \"Marketing\" },\n\t{ id: \"art_4_strmref\", title: \"AI strategy\", tags: \"AI, Strategy\" },\n\t{ id: \"art_5_strmref\", title: \"Tech debt\", tags: \"Tech\" },\n]\nconst stringToMultiRefExpectedTagIdsByArticleId = new Map<string, readonly string[]>([\n\t[\"art_1_strmref\", [\"cat_tech_strmref\", \"cat_ai_strmref\"]],\n\t[\"art_2_strmref\", [\"cat_design_strmref\", \"cat_strategy_strmref\"]],\n\t[\"art_3_strmref\", [\"cat_marketing_strmref\"]],\n\t[\"art_4_strmref\", [\"cat_ai_strmref\", \"cat_strategy_strmref\"]],\n\t[\"art_5_strmref\", [\"cat_tech_strmref\"]],\n])\n\nconst stringToLinkArticlesCollectionId = \"articles_strlink\"\nconst stringToLinkOldWebsiteFieldId = \"website_old_strlink\"\nconst stringToLinkArticleTitleFieldId = \"title_strlink\"\nconst stringToLinkArticleItems: ReadonlyArray<{ id: string; title: string; website: string }> = [\n\t{ id: \"art_1_strlink\", title: \"Building agents\", website: \"https://framer.com/agents\" },\n\t{ id: \"art_2_strlink\", title: \"Design systems\", website: \"https://framer.com/design-systems\" },\n\t{ id: \"art_3_strlink\", title: \"Marketing tips\", website: \"https://framer.com/marketing\" },\n\t{ id: \"art_4_strlink\", title: \"AI strategy\", website: \"https://framer.com/ai\" },\n\t{ id: \"art_5_strlink\", title: \"Tech debt\", website: \"https://framer.com/tech-debt\" },\n]\nconst stringToLinkExpectedUrlByArticleId = new Map<string, string>(\n\tstringToLinkArticleItems.map(article => [article.id, article.website]),\n)\n\nconst multiRefToStringArticlesCollectionId = \"articles_mrefstr\"\nconst multiRefToStringCategoriesCollectionId = \"cats_mrefstr\"\nconst multiRefToStringOldCategoriesFieldId = \"categories_old_mrefstr\"\nconst multiRefToStringArticleTitleFieldId = \"title_mrefstr\"\nconst multiRefToStringCategoryTitleFieldId = \"category_title_mrefstr\"\nconst multiRefToStringCategoryItems: ReadonlyArray<{ id: string; title: string }> = [\n\t{ id: \"cat_cms_mrefstr\", title: \"CMS\" },\n\t{ id: \"cat_basics_mrefstr\", title: \"Basics\" },\n\t{ id: \"cat_tips_mrefstr\", title: \"Pro Tips\" },\n\t{ id: \"cat_updates_mrefstr\", title: \"Updates\" },\n]\nconst multiRefToStringArticleItems: ReadonlyArray<{ id: string; title: string; categoryIds: readonly string[] }> = [\n\t{ id: \"art_1_mrefstr\", title: \"Building with the CMS\", categoryIds: [\"cat_cms_mrefstr\", \"cat_basics_mrefstr\"] },\n\t{ id: \"art_2_mrefstr\", title: \"Release notes\", categoryIds: [\"cat_updates_mrefstr\"] },\n\t{ id: \"art_3_mrefstr\", title: \"Expert workflows\", categoryIds: [\"cat_tips_mrefstr\"] },\n\t{ id: \"art_4_mrefstr\", title: \"CMS tips\", categoryIds: [\"cat_cms_mrefstr\", \"cat_tips_mrefstr\"] },\n\t{ id: \"art_5_mrefstr\", title: \"Advanced tips\", categoryIds: [\"cat_tips_mrefstr\"] },\n]\nconst multiRefToStringExpectedCategoriesByArticleId = new Map<string, string>([\n\t[\"art_1_mrefstr\", \"CMS, Basics\"],\n\t[\"art_2_mrefstr\", \"Updates\"],\n\t[\"art_3_mrefstr\", \"Pro Tips\"],\n\t[\"art_4_mrefstr\", \"CMS, Pro Tips\"],\n\t[\"art_5_mrefstr\", \"Pro Tips\"],\n])\n\nfunction setupStringToMultiReferenceCollections(engine: VekterEngine): void {\n\tconst categoriesSlug = createVariable(\n\t\t{ type: \"slug\", name: \"Slug\", initialValue: \"\", associatedStringVariable: null },\n\t\t\"collection\",\n\t)\n\tconst categoriesName = createVariable(\n\t\t{ id: stringToMultiRefCategoryNameFieldId, type: ControlType.String, name: \"Name\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst categoriesCollection = new CollectionNode({\n\t\tid: stringToMultiRefCategoriesCollectionId,\n\t\tname: \"Categories\",\n\t\tvariables: [categoriesSlug, categoriesName],\n\t})\n\n\tconst articlesSlug = createVariable(\n\t\t{ type: \"slug\", name: \"Slug\", initialValue: \"\", associatedStringVariable: null },\n\t\t\"collection\",\n\t)\n\tconst articlesTitle = createVariable(\n\t\t{ id: stringToMultiRefArticleTitleFieldId, type: ControlType.String, name: \"Title\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst articlesTags = createVariable(\n\t\t{ id: stringToMultiRefOldTagsFieldId, type: ControlType.String, name: \"Tags\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst articlesCollection = new CollectionNode({\n\t\tid: stringToMultiRefArticlesCollectionId,\n\t\tname: \"Articles\",\n\t\tvariables: [articlesSlug, articlesTitle, articlesTags],\n\t})\n\n\tengine.testing.processFrame(() => {\n\t\tconst contentManagementNode = createContentManagementNodeIfNeeded(engine.tree)\n\t\tengine.tree.insertNode(categoriesCollection, contentManagementNode.id)\n\t\tengine.tree.insertNode(articlesCollection, contentManagementNode.id)\n\n\t\tfor (const category of stringToMultiRefCategoryItems) {\n\t\t\tconst item = CollectionItemNode.create({ id: category.id })\n\t\t\tengine.tree.insertNode(item, categoriesCollection.id)\n\t\t\titem.setControlProp(stringToMultiRefCategoryNameFieldId, { type: ControlType.String, value: category.name })\n\t\t}\n\n\t\tfor (const article of stringToMultiRefArticleItems) {\n\t\t\tconst item = CollectionItemNode.create({ id: article.id })\n\t\t\tengine.tree.insertNode(item, articlesCollection.id)\n\t\t\titem.setControlProp(stringToMultiRefArticleTitleFieldId, { type: ControlType.String, value: article.title })\n\t\t\titem.setControlProp(stringToMultiRefOldTagsFieldId, { type: ControlType.String, value: article.tags })\n\t\t}\n\t})\n}\n\nfunction setupStringToLinkCollection(engine: VekterEngine): void {\n\tconst articlesSlug = createVariable(\n\t\t{ type: \"slug\", name: \"Slug\", initialValue: \"\", associatedStringVariable: null },\n\t\t\"collection\",\n\t)\n\tconst articlesTitle = createVariable(\n\t\t{ id: stringToLinkArticleTitleFieldId, type: ControlType.String, name: \"Title\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst articlesWebsite = createVariable(\n\t\t{ id: stringToLinkOldWebsiteFieldId, type: ControlType.String, name: \"Website\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst articlesCollection = new CollectionNode({\n\t\tid: stringToLinkArticlesCollectionId,\n\t\tname: \"Articles\",\n\t\tvariables: [articlesSlug, articlesTitle, articlesWebsite],\n\t})\n\n\tengine.testing.processFrame(() => {\n\t\tconst contentManagementNode = createContentManagementNodeIfNeeded(engine.tree)\n\t\tengine.tree.insertNode(articlesCollection, contentManagementNode.id)\n\n\t\tfor (const article of stringToLinkArticleItems) {\n\t\t\tconst item = CollectionItemNode.create({ id: article.id })\n\t\t\tengine.tree.insertNode(item, articlesCollection.id)\n\t\t\titem.setControlProp(stringToLinkArticleTitleFieldId, { type: ControlType.String, value: article.title })\n\t\t\titem.setControlProp(stringToLinkOldWebsiteFieldId, { type: ControlType.String, value: article.website })\n\t\t}\n\t})\n}\n\nfunction setupMultiReferenceToStringCollections(engine: VekterEngine): void {\n\tconst categoriesDataIdentifier = localModuleIdentifierForStableName(\n\t\tModuleType.Collection,\n\t\tmultiRefToStringCategoriesCollectionId,\n\t\t\"default\",\n\t).value\n\tconst categoriesSlug = createVariable(\n\t\t{ type: \"slug\", name: \"Slug\", initialValue: \"\", associatedStringVariable: null },\n\t\t\"collection\",\n\t)\n\tconst categoriesTitle = createVariable(\n\t\t{ id: multiRefToStringCategoryTitleFieldId, type: ControlType.String, name: \"Title\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst categoriesCollection = new CollectionNode({\n\t\tid: multiRefToStringCategoriesCollectionId,\n\t\tname: \"Categories\",\n\t\tvariables: [categoriesSlug, categoriesTitle],\n\t})\n\n\tconst articlesSlug = createVariable(\n\t\t{ type: \"slug\", name: \"Slug\", initialValue: \"\", associatedStringVariable: null },\n\t\t\"collection\",\n\t)\n\tconst articlesTitle = createVariable(\n\t\t{ id: multiRefToStringArticleTitleFieldId, type: ControlType.String, name: \"Title\", initialValue: \"\" },\n\t\t\"collection\",\n\t)\n\tconst articlesCategories = createVariable(\n\t\t{\n\t\t\tid: multiRefToStringOldCategoriesFieldId,\n\t\t\ttype: ControlType.MultiCollectionReference,\n\t\t\tname: \"Categories\",\n\t\t\tdataIdentifier: categoriesDataIdentifier,\n\t\t\tinitialValue: undefined,\n\t\t},\n\t\t\"collection\",\n\t)\n\tconst articlesCollection = new CollectionNode({\n\t\tid: multiRefToStringArticlesCollectionId,\n\t\tname: \"Articles\",\n\t\tvariables: [articlesSlug, articlesTitle, articlesCategories],\n\t})\n\n\tengine.testing.processFrame(() => {\n\t\tconst contentManagementNode = createContentManagementNodeIfNeeded(engine.tree)\n\t\tengine.tree.insertNode(categoriesCollection, contentManagementNode.id)\n\t\tengine.tree.insertNode(articlesCollection, contentManagementNode.id)\n\n\t\tfor (const category of multiRefToStringCategoryItems) {\n\t\t\tconst item = CollectionItemNode.create({ id: category.id })\n\t\t\tengine.tree.insertNode(item, categoriesCollection.id)\n\t\t\titem.setControlProp(multiRefToStringCategoryTitleFieldId, { type: ControlType.String, value: category.title })\n\t\t}\n\n\t\tfor (const article of multiRefToStringArticleItems) {\n\t\t\tconst item = CollectionItemNode.create({ id: article.id })\n\t\t\tengine.tree.insertNode(item, articlesCollection.id)\n\t\t\titem.setControlProp(multiRefToStringArticleTitleFieldId, { type: ControlType.String, value: article.title })\n\t\t\titem.setControlProp(multiRefToStringOldCategoriesFieldId, {\n\t\t\t\ttype: ControlType.MultiCollectionReference,\n\t\t\t\tvalue: article.categoryIds,\n\t\t\t})\n\t\t}\n\t})\n}\n\nevaluation(\n\t\"CMS: Convert String Field To Multi-Collection-Reference\",\n\tcreatePromptAgentFixture(\"cms-string-to-multi-ref-field\", {\n\t\tprompt:\n\t\t\t\"In the Articles CMS collection, replace the Tags field (currently a comma-separated string of category names) \" +\n\t\t\t\"with a multi-collection reference to the Categories collection. Match each tag name (case-insensitive) to a \" +\n\t\t\t\"Categories item and preserve every existing item value.\",\n\t\tsetup: setupStringToMultiReferenceCollections,\n\t}),\n\t{\n\t\tid: \"cms-string-to-multi-ref-field\",\n\t\tmaxSteps: 8,\n\t},\n\t({ engine, report, tools }) => {\n\t\tconst categoriesDataIdentifier = localModuleIdentifierForStableName(\n\t\t\tModuleType.Collection,\n\t\t\tstringToMultiRefCategoriesCollectionId,\n\t\t\t\"default\",\n\t\t).value\n\t\tconst replacementField = getCollection(engine, stringToMultiRefArticlesCollectionId).variables.find(\n\t\t\tvariable =>\n\t\t\t\tisMultiCollectionReferenceVariableDefinition(variable) && variable.dataIdentifier === categoriesDataIdentifier,\n\t\t)\n\n\t\treport.correctness.scored(\"no command errors\", () => {\n\t\t\texpect(tools.commandErrors()).toHaveLength(0)\n\t\t})\n\t\treport.correctness.required(\"creates a multi-collection-reference field on Articles pointing to Categories\", () => {\n\t\t\texpect(replacementField).toBeDefined()\n\t\t})\n\t\treport.correctness.required(\"preserves every tag value as category references\", () => {\n\t\t\tassert(replacementField, \"Expected replacement field.\")\n\n\t\t\tconst actualTagIdsByArticleId = Array.from(stringToMultiRefExpectedTagIdsByArticleId, ([articleId]) => {\n\t\t\t\tconst value = getCollectionItemControlValue(engine, articleId, replacementField.id)\n\t\t\t\treturn [articleId, Array.isArray(value) ? [...value].sort() : value]\n\t\t\t})\n\t\t\tconst expectedTagIdsByArticleId = Array.from(\n\t\t\t\tstringToMultiRefExpectedTagIdsByArticleId,\n\t\t\t\t([articleId, expectedTagIds]) => [articleId, [...expectedTagIds].sort()],\n\t\t\t)\n\n\t\t\texpect(actualTagIdsByArticleId).toEqual(expectedTagIdsByArticleId)\n\t\t})\n\t\treport.correctness.scored(\"keeps the replacement field at the old Tags field position\", () => {\n\t\t\texpect(replacementField).toBeDefined()\n\t\t\tassert(replacementField, \"replacementField must be defined\")\n\n\t\t\texpectFieldAtPosition(engine, stringToMultiRefArticlesCollectionId, replacementField.id, 2)\n\t\t})\n\t\treport.correctness.each(\n\t\t\t\"transforms tag strings to category id arrays\",\n\t\t\tstringToMultiRefExpectedTagIdsByArticleId,\n\t\t\t([articleId, expectedTagIds]) => {\n\t\t\t\texpect(replacementField).toBeDefined()\n\t\t\t\tif (!replacementField) return\n\t\t\t\tconst item = engine.tree.get(articleId)\n\t\t\t\tconst value = isCollectionItemNode(item) ? item.getControlProp(replacementField.id)?.value : undefined\n\t\t\t\texpect(Array.isArray(value) ? [...value].sort() : value).toEqual([...expectedTagIds].sort())\n\t\t\t},\n\t\t)\n\t\treport.correctness.scored(\"deletes the old Tags string field\", () => {\n\t\t\texpectOldFieldDeleted(engine, stringToMultiRefArticlesCollectionId, stringToMultiRefOldTagsFieldId)\n\t\t})\n\t\treport.efficiency.scored(\"uses script to migrate the CMS field\", () => {\n\t\t\texpect(tools.scriptInputs().length).toBeGreaterThan(0)\n\t\t})\n\t},\n)\n\nevaluation(\n\t\"CMS: Convert String Field To Link\",\n\tcreatePromptAgentFixture(\"cms-string-to-link-field\", {\n\t\tprompt:\n\t\t\t\"In the Articles CMS collection, change the Website field from a string to a link field. \" +\n\t\t\t\"Preserve every existing item's URL on the new link field.\",\n\t\tsetup: setupStringToLinkCollection,\n\t}),\n\t{\n\t\tid: \"cms-string-to-link-field\",\n\t\tmaxSteps: 8,\n\t},\n\t({ engine, report, tools }) => {\n\t\tconst replacementField = findCollectionVariableById(\n\t\t\tengine,\n\t\t\tstringToLinkArticlesCollectionId,\n\t\t\t\"website\",\n\t\t\tControlType.Link,\n\t\t)\n\n\t\treport.correctness.scored(\"no command errors\", () => {\n\t\t\texpect(tools.commandErrors()).toHaveLength(0)\n\t\t})\n\t\treport.correctness.required(\"creates a link field named Website on Articles\", () => {\n\t\t\texpect(replacementField).toBeDefined()\n\t\t})\n\t\treport.correctness.required(\"preserves every URL as a link value\", () => {\n\t\t\tassert(replacementField, \"Expected replacement field.\")\n\n\t\t\tconst actualUrlByArticleId = Array.from(stringToLinkExpectedUrlByArticleId, ([articleId]) => {\n\t\t\t\tconst value = getCollectionItemControlValue(engine, articleId, replacementField.id)\n\t\t\t\treturn [articleId, isLinkToURL(value) ? value.url : value]\n\t\t\t})\n\n\t\t\texpect(actualUrlByArticleId).toEqual(Array.from(stringToLinkExpectedUrlByArticleId))\n\t\t})\n\t\treport.correctness.each(\n\t\t\t\"preserves the URL on each item as a link value\",\n\t\t\tstringToLinkExpectedUrlByArticleId,\n\t\t\t([articleId, expectedUrl]) => {\n\t\t\t\texpect(replacementField).toBeDefined()\n\t\t\t\tif (!replacementField) return\n\t\t\t\tconst item = engine.tree.get(articleId)\n\t\t\t\tconst value = isCollectionItemNode(item) ? item.getControlProp(replacementField.id)?.value : undefined\n\t\t\t\texpect(isLinkToURL(value) ? value.url : value).toBe(expectedUrl)\n\t\t\t},\n\t\t)\n\t\treport.correctness.scored(\"deletes the old Website string field\", () => {\n\t\t\texpectOldFieldDeleted(engine, stringToLinkArticlesCollectionId, stringToLinkOldWebsiteFieldId)\n\t\t})\n\t\treport.efficiency.scored(\"uses script to migrate the CMS field\", () => {\n\t\t\texpect(tools.calls(SCRIPT_TOOL_NAME).length).toBeGreaterThan(0)\n\t\t})\n\t},\n)\n\nevaluation(\n\t\"CMS: Convert Multi-Collection-Reference Field To String\",\n\tcreatePromptAgentFixture(\"cms-multi-ref-to-string-field\", {\n\t\tprompt:\n\t\t\t\"In the Articles CMS collection, replace the Categories field (currently a multi-collection reference to the \" +\n\t\t\t\"Categories collection) with a string field. Preserve every existing item value as a comma-separated list of \" +\n\t\t\t\"category titles.\",\n\t\tsetup: setupMultiReferenceToStringCollections,\n\t}),\n\t{\n\t\tid: \"cms-multi-ref-to-string-field\",\n\t\tmaxSteps: 8,\n\t},\n\t({ engine, report, tools }) => {\n\t\tconst replacementFieldId = findCollectionVariableById(\n\t\t\tengine,\n\t\t\tmultiRefToStringArticlesCollectionId,\n\t\t\t\"categories\",\n\t\t\tControlType.String,\n\t\t)?.id\n\n\t\treport.correctness.scored(\"no command errors\", () => {\n\t\t\texpect(tools.commandErrors()).toHaveLength(0)\n\t\t})\n\t\treport.correctness.required(\"creates the Categories string field\", () => {\n\t\t\texpect(replacementFieldId).toBeDefined()\n\t\t})\n\t\treport.correctness.required(\"preserves every category reference as a string value\", () => {\n\t\t\tassert(replacementFieldId, \"Expected replacement field.\")\n\n\t\t\tconst actualCategoriesByArticleId = Array.from(multiRefToStringExpectedCategoriesByArticleId, ([articleId]) => [\n\t\t\t\tarticleId,\n\t\t\t\tgetCollectionItemControlValue(engine, articleId, replacementFieldId),\n\t\t\t])\n\n\t\t\texpect(actualCategoriesByArticleId).toEqual(Array.from(multiRefToStringExpectedCategoriesByArticleId))\n\t\t})\n\t\treport.correctness.scored(\"keeps the replacement field at the old Categories field position\", () => {\n\t\t\texpect(replacementFieldId).toBeDefined()\n\t\t\tif (replacementFieldId === undefined) return\n\n\t\t\texpectFieldAtPosition(engine, multiRefToStringArticlesCollectionId, replacementFieldId, 2)\n\t\t})\n\t\treport.correctness.each(\n\t\t\t\"transforms referenced categories to title strings\",\n\t\t\tmultiRefToStringExpectedCategoriesByArticleId,\n\t\t\t([articleId, expectedCategories]) => {\n\t\t\t\texpect(replacementFieldId).toBeDefined()\n\t\t\t\tif (replacementFieldId === undefined) return\n\n\t\t\t\tconst item = engine.tree.get(articleId)\n\t\t\t\texpect(isCollectionItemNode(item) ? item.getControlProp(replacementFieldId)?.value : undefined).toBe(\n\t\t\t\t\texpectedCategories,\n\t\t\t\t)\n\t\t\t},\n\t\t)\n\t\treport.correctness.scored(\"deletes the old Categories multi-reference field\", () => {\n\t\t\texpectOldFieldDeleted(engine, multiRefToStringArticlesCollectionId, multiRefToStringOldCategoriesFieldId)\n\t\t})\n\t\treport.efficiency.scored(\"uses script to migrate the CMS field\", () => {\n\t\t\texpect(tools.scriptInputs().length).toBeGreaterThan(0)\n\t\t})\n\t},\n)\n\nevaluation(\n\t\"CMS: Convert Boolean Field To String\",\n\tcreateEvalExportZipFixture(\n\t\t\"cms-boolean-to-string-field-export\",\n\t\tagentEvalAsset(\"./boolean-to-string-field-export.zip\"),\n\t\t{\n\t\t\truntimeTarget: \"cli\",\n\t\t},\n\t),\n\t{\n\t\tid: \"cms-boolean-to-string-field\",\n\t\trequestId: booleanToStringRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 8,\n\t},\n\t({ agent, engine, report, tools }) => {\n\t\tconst request = agent.chatMessages.at(-1)\n\t\tconst replacementFieldId = findCollectionVariableById(\n\t\t\tengine,\n\t\t\tbooleanToStringArticlesCollectionId,\n\t\t\t\"is enabled\",\n\t\t\tControlType.String,\n\t\t)?.id\n\n\t\treport.correctness.required(\"continues captured field conversion request\", () => {\n\t\t\texpect(request?.id).toBe(booleanToStringRequestId)\n\t\t\texpect(request?.parts).toEqual([\n\t\t\t\t'In the Articles CMS collection, change the Is Enabled field from a boolean toggle to a string field. Preserve every existing item value as exactly \"true\" or \"false\".\\n',\n\t\t\t])\n\t\t})\n\t\treport.correctness.scored(\"no command errors\", () => {\n\t\t\texpect(tools.commandErrors()).toHaveLength(0)\n\t\t})\n\t\treport.correctness.required(\"creates the correct replacement field\", () => {\n\t\t\texpect(replacementFieldId).toBeDefined()\n\t\t})\n\t\treport.correctness.required(\"preserves every boolean value as a string value\", () => {\n\t\t\tassert(replacementFieldId, \"Expected replacement field.\")\n\n\t\t\tconst actualValuesByItemId = Array.from(expectedBooleanToStringValues, ([itemId]) => [\n\t\t\t\titemId,\n\t\t\t\tgetCollectionItemControlValue(engine, itemId, replacementFieldId),\n\t\t\t])\n\n\t\t\texpect(actualValuesByItemId).toEqual(Array.from(expectedBooleanToStringValues))\n\t\t})\n\t\treport.correctness.each(\n\t\t\t\"transforms boolean values to string values\",\n\t\t\texpectedBooleanToStringValues,\n\t\t\t([itemId, expectedValue]) => {\n\t\t\t\texpect(replacementFieldId).toBeDefined()\n\t\t\t\tif (replacementFieldId === undefined) return\n\n\t\t\t\tconst item = engine.tree.get(itemId)\n\t\t\t\texpect(isCollectionItemNode(item) ? item.getControlProp(replacementFieldId)?.value : undefined).toBe(\n\t\t\t\t\texpectedValue,\n\t\t\t\t)\n\t\t\t},\n\t\t)\n\t\treport.correctness.scored(\"deletes the old boolean field\", () => {\n\t\t\texpectOldFieldDeleted(engine, booleanToStringArticlesCollectionId, oldIsEnabledFieldId)\n\t\t})\n\t\treport.efficiency.scored(\"uses script to migrate the CMS field\", () => {\n\t\t\texpect(tools.scriptInputs().length).toBeGreaterThan(0)\n\t\t})\n\t},\n)\n\n// Captured trace: the user repeatedly asked to \"allow line breaks\" on a plain text CMS field and the\n// agent kept replacing the field with a different type instead of enabling the string field's\n// `displayTextArea` option. The replay continues from the final user message after the agent has\n// already removed and re-added the field twice, leaving `Content 2` as a plain string field again.\nconst enableTextAreaArticlesCollectionId = \"fylICMvWT\"\nconst enableTextAreaContent2FieldId = \"eNqFemcGo\"\nconst enableTextAreaRequestId = \"LUFFTK6K_\"\n// Exact ordered variable IDs in the Articles collection at the start of this turn. The agent must\n// only flip `displayTextArea` on `Content 2`; it must not delete, re-add, or reorder any field.\nconst enableTextAreaArticlesVariableIds = [\n\t\"Niam2EHZ6\", // Title\n\t\"yXnWV6Qeq\", // Slug\n\t\"UBOrYWA6F\", // Date\n\t\"uLkxAWsQV\", // Image\n\t\"RHHqr0qy3\", // Categories\n\t\"LcwciOHBM\", // Content\n\tenableTextAreaContent2FieldId, // Content 2\n]\n\nevaluation(\n\t\"CMS: Enable Text Area On Plain Text Field\",\n\tcreateEvalExportZipFixture(\n\t\t\"cms-enable-text-area-on-string-field-export\",\n\t\tagentEvalAsset(\"./enable-text-area-on-string-field-export.zip\"),\n\t\t{\n\t\t\truntimeTarget: \"cli\",\n\t\t},\n\t),\n\t{\n\t\tid: \"cms-enable-text-area-on-string-field\",\n\t\trequestId: enableTextAreaRequestId,\n\t\tstepIndex: 0,\n\t\tmaxSteps: 8,\n\t},\n\t({ agent, engine, report, tools }) => {\n\t\tconst request = agent.chatMessages.at(-1)\n\t\tconst content2 = findCollectionVariableById(engine, enableTextAreaArticlesCollectionId, \"Content 2\")\n\n\t\treport.correctness.required(\"continues captured text area request\", () => {\n\t\t\texpect(request?.id).toBe(enableTextAreaRequestId)\n\t\t\texpect(request?.parts).toEqual([\n\t\t\t\t'For the love of god, please just enable \"Text Area\" for the plain text \"Content 2\" field and introduce line breaks.',\n\t\t\t])\n\t\t})\n\t\treport.correctness.scored(\"no command errors\", () => {\n\t\t\texpect(tools.commandErrors()).toHaveLength(0)\n\t\t})\n\t\treport.correctness.required(\"keeps the Content 2 field as a plain text string field\", () => {\n\t\t\texpect(content2?.type).toBe(ControlType.String)\n\t\t})\n\t\treport.correctness.required(\"does not delete, re-create, or reorder any Articles field\", () => {\n\t\t\tconst variableIds = getCollection(engine, enableTextAreaArticlesCollectionId).variables.map(\n\t\t\t\tvariable => variable.id,\n\t\t\t)\n\t\t\texpect(variableIds).toEqual(enableTextAreaArticlesVariableIds)\n\t\t})\n\t\treport.correctness.required(\"enables Text Area on the Content 2 string field\", () => {\n\t\t\tassert(content2 !== undefined && isStringVariableDefinition(content2), \"Expected Content 2 to be a string field.\")\n\t\t\texpect(content2.options?.displayTextArea).toBe(true)\n\t\t})\n\t},\n)\n"],
  "mappings": "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",
  "names": []
}
