From e0e1aceb61ff2d916366544a36651ad7cba79054 Mon Sep 17 00:00:00 2001 From: Carlos Castro Date: Wed, 4 Feb 2026 14:06:26 -0500 Subject: [PATCH 1/3] Rename Agent Loop to Agent in operation summary --- .../src/designer-client-services/lib/base/operations/agent.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts b/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts index db7f6e6230e..2060414c257 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts @@ -15,7 +15,7 @@ export const agentOperation = { displayName: 'Agent', iconUri, }, - summary: 'Agent Loop', + summary: 'Agent', description: 'Loop in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', visibility: 'Important', From af5096c94912ff57a840ac94aa1654cea53b039d Mon Sep 17 00:00:00 2001 From: Carlos Castro Date: Wed, 4 Feb 2026 14:41:05 -0500 Subject: [PATCH 2/3] Remove 'loop' terminology from agent user-facing strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change description from 'Loop in which...' to 'Action in which...' - Update UI strings: 'agentic loop' → 'agent', 'agentic loops' → 'agents' - Update delete modal titles and error messages - Affects: operation definitions, EdgeContextualMenu, DeleteNodeModal, KindChangeDialog --- Localize/lang/strings.json | 34 +++++++++---------- .../src/lib/modals/DeleteNodeModal.tsx | 14 ++++---- .../EdgeContextualMenu/EdgeContextualMenu.tsx | 22 ++++++------ .../KindChangeDialog/KindChangeDialog.tsx | 4 +-- .../EdgeContextualMenu/EdgeContextualMenu.tsx | 20 +++++------ .../lib/base/operations/agent.ts | 2 +- .../lib/consumption/manifests/agentloop.ts | 2 +- .../lib/consumption/operations/agent.ts | 2 +- .../lib/standard/manifest/agentloop.ts | 2 +- 9 files changed, 50 insertions(+), 52 deletions(-) diff --git a/Localize/lang/strings.json b/Localize/lang/strings.json index 6ac3329f511..f2be766c618 100644 --- a/Localize/lang/strings.json +++ b/Localize/lang/strings.json @@ -29,7 +29,6 @@ "+gBLFF": "Your template has been saved.", "+iPg27": "Delete", "+ijo/2": "Paste last used expression", - "+jvca5": "Using a chat message trigger means your workflow will be conversational, which doesn't support actions running after an agentic loop. Delete any actions running after an agent to use this trigger.", "+l5XmZ": "Enter a positive integer between {min} and {max}", "+mAJR3": "(UTC+08:00) Kuala Lumpur, Singapore", "+mNJQl": "Create a logic app", @@ -148,6 +147,7 @@ "1Orv4i": "Details", "1REu5/": "See less", "1Xke9D": "open functions drawer", + "1YUi9I": "Add a hand-off agent", "1ZrOYn": "AI Foundry Project", "1dlfUe": "Actions perform operations on data, communicate between systems, or run other tasks.", "1eKQwo": "(UTC+08:00) Perth", @@ -289,7 +289,6 @@ "4aaixN": "Tour", "4bT5AR": "Invalid connection. To load complete details, complete or update the connection.", "4c0uPQ": "Required. The name of the parameter whose values you want.", - "4gOrfY": "This will also delete the agent's tools and actions.", "4ggAK+": "Error occurred while parsing agent instructions.", "4hi3ks": "Your flow has been updated.", "4hlqgK": "No results found for {searchTermBeingSearchedFor_DO_NOT_TRANSLATE}", @@ -613,7 +612,6 @@ "BuYrD3": "A single format specifier that indicates how to format the value of this Guid.", "BwOKWK": "Remember my choice", "Bwqlxd": "Key not found ''{nodeKey}''", - "BwwhOM": "Delete agentic loop tool", "BwxTBw": "Loading logic apps ...", "BxITRH": "Required. The object to check if it is greater than comparing object.", "BynK4X": "Ask a question", @@ -709,6 +707,7 @@ "E7NzDN": "Settings", "E7jFWU": "Logic App", "E8iqLl": "(UTC+11:00) Sakhalin", + "EAAlZ9": "Delete agent", "ECZC6Y": "Converts the parameter to a decimal number", "EE1vyH": "Update workflow before using this trigger", "EFQ56R": "Source code", @@ -744,6 +743,7 @@ "F1AkvV": "Ideal for process business transitional data", "F2wR+r": "Insert expression", "F3IDl8": "Required. The number of a specified time unit to add.", + "F3q0Hk": "Cannot paste actions below agents in agent to agent workflows", "F83QRP": "On a schedule", "F9dR1Q": "Add", "F9yRDC": "Method", @@ -836,6 +836,7 @@ "HFt+tF": "Favorites", "HH970i": "Month", "HILmmE": "Required. The collection to sort.", + "HMJPEj": "Cannot add subsequent actions below agents in agent to agent workflows", "HMiE+4": "Exit full screen", "HOwcCC": "Primary key", "HQ/HhZ": "Error loading connections", @@ -946,7 +947,6 @@ "K7/DnZ": "Output", "K9ORYo": "Schema ID", "KBaGkS": "Change connection reference", - "KFFF+N": "Cannot add subsequent actions below agentic loops in agent to agent workflows", "KGvXUc": "Update", "KKBCUX": "Validation failed", "KO2eUv": "Connectors", @@ -1043,7 +1043,6 @@ "MXTnCr": "Favorite", "MYgKHu": "Actions", "Mb/Vp8": "Next failed", - "MbUEdr": "Add a hand-off agent", "MbrpMM": "Configure channels for your agent", "Mc6ITJ": "Search", "MdtNYy": "Learn more about authentication", @@ -1309,6 +1308,7 @@ "SvQyvs": "Done", "SwWaHa": "Enter a valid run identifier", "Sy4cFC": "Concurrency control", + "Sy5Gcz": "Using a chat message trigger means your workflow will be conversational, which doesn't support actions running after an agent. Delete any actions running after an agent to use this trigger.", "SyFXM3": "Read less", "Sz8KN3": "Test", "T/7b2y": "Duration", @@ -1428,14 +1428,12 @@ "VLc3FV": "Source schema", "VLn4Dz": "Add images of this workflow as it appears in the designer in the original logic app. Take a screenshot in both light-mode and dar-mode versions. Upload files to Azure Blob Storage, then create a shared access signature (SAS) URL for each.", "VOk0Eh": "Request", - "VPVCkv": "Cannot paste actions below agentic loops in agent to agent workflows", "VPh9Jo": "(UTC+06:00) Novosibirsk", "VQ1BxQ": "Optional parameters", "VTMWCv": "Chat message", "VUH9aj": "23", "VUN/Gj": "Error loading tools. Please try again.", "VVfYvq": "Required. The number to divide by the Divisor.", - "VVp8sL": "Delete agentic loop", "VWH06W": "Please start the project by pressing F5 or run it through the Run and Debug view.", "VWd29W": "Basic workflow controls and operations", "VXpA1B": "Tools ({toolsCount})", @@ -1493,7 +1491,6 @@ "Wmc3Ux": "Run draft", "WnHWrD": "Workflow display name (title) is required.", "WnU9v0": "A managed identity is not configured on the logic app.", - "Wq8rLF": "Add an agentic loop", "Wt1TZJ": "Connections", "WtHzoy": "Agent log", "WtO4Wv": "No connection has been selected", @@ -1679,7 +1676,6 @@ "_+gBLFF.comment": "Title for the toaster after saving template.", "_+iPg27.comment": "Confirmation text for delete button", "_+ijo/2.comment": "Token picker for 'Paste last used expression'", - "_+jvca5.comment": "Description for dialog that appears when changing the kind of a node", "_+l5XmZ.comment": "description of maximum waiting runs setting", "_+mAJR3.comment": "Time zone value ", "_+mNJQl.comment": "Create new logic app link", @@ -1798,6 +1794,7 @@ "_1Orv4i.comment": "Title for the details section", "_1REu5/.comment": "Select to view fewer token options.", "_1Xke9D.comment": "aria label to open functions drawer", + "_1YUi9I.comment": "Text for button to add an agent", "_1ZrOYn.comment": "AI Foundry Project", "_1dlfUe.comment": "Description of what Actions are, on a tooltip about Actions", "_1eKQwo.comment": "Time zone value ", @@ -1939,7 +1936,6 @@ "_4aaixN.comment": "Button text for tour and tutorial", "_4bT5AR.comment": "Error message to show for connection error during deserialization.", "_4c0uPQ.comment": "Required string parameter to create a new parameter", - "_4gOrfY.comment": "Text for delete agentic loop modal body", "_4ggAK+.comment": "Error message for the agent instructions parsing failure.", "_4hi3ks.comment": "Chatbot workflow has been updated message", "_4hlqgK.comment": "Text to show when there are no search results", @@ -2263,7 +2259,6 @@ "_BuYrD3.comment": "Required format parameter to determine how to obtain GUID", "_BwOKWK.comment": "Label for the remember choice checkbox", "_Bwqlxd.comment": "Error message for key not found", - "_BwwhOM.comment": "Title for agent tool", "_BwxTBw.comment": "Loading logic apps", "_BxITRH.comment": "Required object parameter to check if greater than using greater function", "_BynK4X.comment": "Chatbot prompt to ask a question", @@ -2359,6 +2354,7 @@ "_E7NzDN.comment": "Button text for opening the settings", "_E7jFWU.comment": "Label for choosing logic app instance", "_E8iqLl.comment": "Time zone value ", + "_EAAlZ9.comment": "Title for agent node", "_ECZC6Y.comment": "Label for description of custom decimal Function", "_EE1vyH.comment": "Title for dialog that appears when changing the kind of a node", "_EFQ56R.comment": "Link to the source code of the template", @@ -2394,6 +2390,7 @@ "_F1AkvV.comment": "Second bullet point of stateful type", "_F2wR+r.comment": "Label for button to open expression token picker", "_F3IDl8.comment": "Required integer parameter to add to time", + "_F3q0Hk.comment": "Message shown when paste is disabled below agents in A2A workflows", "_F83QRP.comment": "Schedule trigger category", "_F9dR1Q.comment": "Add", "_F9yRDC.comment": "Label for the authentication method", @@ -2486,6 +2483,7 @@ "_HFt+tF.comment": "Favorites category", "_HH970i.comment": "Frequency value ", "_HILmmE.comment": "Required collection parameter to apply sort function on", + "_HMJPEj.comment": "Message shown when action addition is disabled within agents in A2A workflows", "_HMiE+4.comment": "Token picker for 'Exit full screen'", "_HOwcCC.comment": "Text for primary access key", "_HQ/HhZ.comment": "Title for error message when loading connections", @@ -2596,7 +2594,6 @@ "_K7/DnZ.comment": "The title of the output field in the static result parseJson action", "_K9ORYo.comment": "The title of the schema id field in the static result parseJson action", "_KBaGkS.comment": "Button text to take the user to the 'change connection' component while in xrm connection reference mode", - "_KFFF+N.comment": "Message shown when action addition is disabled within agentic loops in A2A workflows", "_KGvXUc.comment": "Button text for updating the MCP Server", "_KKBCUX.comment": "Title shown when there is an error in the template", "_KO2eUv.comment": "Label text for connectors filter", @@ -2693,7 +2690,6 @@ "_MXTnCr.comment": "Favorite button text", "_MYgKHu.comment": "Heading for a tooltip explaining Actions", "_Mb/Vp8.comment": "Button indicating to go to the next page with failed options", - "_MbUEdr.comment": "Text for button to add an agentic loop", "_MbrpMM.comment": "Channels tab description", "_Mc6ITJ.comment": "Placeholder text to search token picker", "_MdtNYy.comment": "Link text for authentication documentation", @@ -2959,6 +2955,7 @@ "_SvQyvs.comment": "confirmation text", "_SwWaHa.comment": "Invalid run identifier error message", "_Sy4cFC.comment": "title for concurrency setting", + "_Sy5Gcz.comment": "Description for dialog that appears when changing the kind of a node", "_SyFXM3.comment": "Text for read less button", "_Sz8KN3.comment": "Test", "_T/7b2y.comment": "Duration column header", @@ -3078,14 +3075,12 @@ "_VLc3FV.comment": "Source schema", "_VLn4Dz.comment": "Description for the workflow images section", "_VOk0Eh.comment": "Trigger belongs to Request category", - "_VPVCkv.comment": "Message shown when paste is disabled below agentic loops in A2A workflows", "_VPh9Jo.comment": "Time zone value ", "_VQ1BxQ.comment": "Label for the section to configure optional parameters", "_VTMWCv.comment": "Chat message trigger category", "_VUH9aj.comment": "Hour of the day", "_VUN/Gj.comment": "Error message when tools fail to load", "_VVfYvq.comment": "Required number parameter to be divided from in div function", - "_VVp8sL.comment": "Title for agentic loop node", "_VWH06W.comment": "Debug project error message", "_VWd29W.comment": "Simple Operations category description", "_VXpA1B.comment": "Title for the main section with the count of tools", @@ -3143,7 +3138,6 @@ "_Wmc3Ux.comment": "Run draft button text", "_WnHWrD.comment": "Error message when the workflow display name field which is title is empty", "_WnU9v0.comment": "Error message when no identity is associated", - "_Wq8rLF.comment": "Button text for adding an agentic loop", "_Wt1TZJ.comment": "Accessibility label for the connections section", "_WtHzoy.comment": "Agent log header text", "_WtO4Wv.comment": "Text to show that no connection has been selected", @@ -3370,6 +3364,7 @@ "_bg00eY.comment": "Numbered List text", "_bkuRuS.comment": "Text to show when there are no operations with the given filters", "_blRFVt.comment": "Chatbot connections setup card description", + "_blpdoG.comment": "Title for agent tool", "_boD8mP.comment": "Azure Cognitive Service Open AI resource label", "_bou7hY.comment": "Actions accordion title", "_boxBWI.comment": "Label text for the card that lets users replace the current workflow with blank workflow", @@ -3627,6 +3622,7 @@ "_hflWi6.comment": "Description for trimByteOrderMark function", "_hh3i/V.comment": "Other trigger methods category description", "_hhW/w8.comment": "Recurrence additional message if no minutes or starttime is specified", + "_hj/ald.comment": "Button text for adding an agent", "_hlrKDC.comment": "Column name for connection display name", "_ho2D6F.comment": "Close panel", "_hq1mk6.comment": "Error while parsing expression for path value", @@ -4180,7 +4176,6 @@ "_ti2c1D.comment": "Button text for moving to the next tab with action count", "_ti5TEd.comment": "Text for cancel button", "_tjQdhq.comment": "Solution type of the template", - "_tjg2VO.comment": "Button text for adding an agentic loop", "_tkkN++.comment": "Description for template profile tab", "_toHITB.comment": "BizTalk Migration category", "_toWTrl.comment": "Search from file list", @@ -4313,6 +4308,7 @@ "_wFCkpM.comment": "Require parameters to find minimum using min function", "_wG8fwz.comment": "Bullet List text", "_wGYmui.comment": "Header for including dynamic content section", + "_wK023m.comment": "Text for delete agent modal body", "_wKJdDk.comment": "Exception for unsupported token types", "_wP0/uB.comment": "Label for the button on the progress card that stops AI response generation", "_wPi8wS.comment": "Accessibility label indicating that the value is not set", @@ -4540,6 +4536,7 @@ "bg00eY": "Numbered list", "bkuRuS": "No operations found", "blRFVt": "Set up these connections to use them in your flow.", + "blpdoG": "Delete agent tool", "boD8mP": "Azure OpenAI resource", "bou7hY": "Actions", "boxBWI": "Replace your existing workflow with an empty workflow to rebuild your integration solution.", @@ -4797,6 +4794,7 @@ "hflWi6": "Removes Byte Order Mark (BOM) characters from the beginning of strings or binary content.", "hh3i/V": "Browse all available triggers", "hhW/w8": "If a recurrence doesn't specify a specific start date and time, the first recurrence runs immediately when you save or deploy the logic app", + "hj/ald": "Add an agent", "hlrKDC": "Connection", "ho2D6F": "Close panel", "hq1mk6": "Operation path value does not match the template for segment. Path {pathValue}, Template {pathTemplate}", @@ -5350,7 +5348,6 @@ "ti2c1D": "Next ({count} selected)", "ti5TEd": "Cancel", "tjQdhq": "Type", - "tjg2VO": "Add an agent", "tkkN++": "Add details to help template users evaluate this template. The profile includes the information shown to users and settings that control how the template is filtered and displayed.", "toHITB": "BizTalk Migration", "toWTrl": "Search", @@ -5483,6 +5480,7 @@ "wFCkpM": "Required. Either an array of values to find the minimum value, or the first value of a set.", "wG8fwz": "Bullet list", "wGYmui": "Including dynamic content", + "wK023m": "This will also delete the agent's tools and actions.", "wKJdDk": "Unsupported token type: {var}", "wP0/uB": "Stop generating", "wPi8wS": "----", diff --git a/libs/designer-ui/src/lib/modals/DeleteNodeModal.tsx b/libs/designer-ui/src/lib/modals/DeleteNodeModal.tsx index c09f48f6cd9..e1afabedb04 100644 --- a/libs/designer-ui/src/lib/modals/DeleteNodeModal.tsx +++ b/libs/designer-ui/src/lib/modals/DeleteNodeModal.tsx @@ -62,9 +62,9 @@ export const DeleteNodeModal = (props: DeleteNodeModalProps) => { }); const agentNodeTitle = intl.formatMessage({ - defaultMessage: 'Delete agentic loop', - id: 'VVp8sL', - description: 'Title for agentic loop node', + defaultMessage: 'Delete agent', + id: 'EAAlZ9', + description: 'Title for agent node', }); const switchCaseTitle = intl.formatMessage({ @@ -74,8 +74,8 @@ export const DeleteNodeModal = (props: DeleteNodeModalProps) => { }); const agentToolTitle = intl.formatMessage({ - defaultMessage: 'Delete agentic loop tool', - id: 'BwwhOM', + defaultMessage: 'Delete agent tool', + id: 'blpdoG', description: 'Title for agent tool', }); @@ -133,8 +133,8 @@ export const DeleteNodeModal = (props: DeleteNodeModalProps) => { const agentBodyMessage = intl.formatMessage({ defaultMessage: "This will also delete the agent's tools and actions.", - id: '4gOrfY', - description: 'Text for delete agentic loop modal body', + id: 'wK023m', + description: 'Text for delete agent modal body', }); const bodyMessage = diff --git a/libs/designer-v2/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx b/libs/designer-v2/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx index 625feb835e8..926a37dc844 100644 --- a/libs/designer-v2/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx +++ b/libs/designer-v2/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx @@ -205,15 +205,15 @@ export const EdgeContextualMenu = () => { }); const newAgentText = intl.formatMessage({ - defaultMessage: 'Add an agentic loop', - id: 'Wq8rLF', - description: 'Button text for adding an agentic loop', + defaultMessage: 'Add an agent', + id: 'hj/ald', + description: 'Button text for adding an agent', }); const newHandOffAgentText = intl.formatMessage({ defaultMessage: 'Add a hand-off agent', - id: 'MbUEdr', - description: 'Text for button to add an agentic loop', + id: '1YUi9I', + description: 'Text for button to add an agent', }); const pasteFromClipboard = intl.formatMessage({ @@ -229,9 +229,9 @@ export const EdgeContextualMenu = () => { }); const a2aAgentLoopDisabledText = intl.formatMessage({ - defaultMessage: 'Cannot add subsequent actions below agentic loops in agent to agent workflows', - id: 'KFFF+N', - description: 'Message shown when action addition is disabled within agentic loops in A2A workflows', + defaultMessage: 'Cannot add subsequent actions below agents in agent to agent workflows', + id: 'HMJPEj', + description: 'Message shown when action addition is disabled within agents in A2A workflows', }); const a2aParallelBranchDisabledText = intl.formatMessage({ @@ -241,9 +241,9 @@ export const EdgeContextualMenu = () => { }); const a2aPasteDisabledText = intl.formatMessage({ - defaultMessage: 'Cannot paste actions below agentic loops in agent to agent workflows', - id: 'VPVCkv', - description: 'Message shown when paste is disabled below agentic loops in A2A workflows', + defaultMessage: 'Cannot paste actions below agents in agent to agent workflows', + id: 'F3q0Hk', + description: 'Message shown when paste is disabled below agents in A2A workflows', }); const editHandoffText = intl.formatMessage({ diff --git a/libs/designer-v2/src/lib/ui/common/KindChangeDialog/KindChangeDialog.tsx b/libs/designer-v2/src/lib/ui/common/KindChangeDialog/KindChangeDialog.tsx index e3ba36c6b11..9c1695d2ea1 100644 --- a/libs/designer-v2/src/lib/ui/common/KindChangeDialog/KindChangeDialog.tsx +++ b/libs/designer-v2/src/lib/ui/common/KindChangeDialog/KindChangeDialog.tsx @@ -17,8 +17,8 @@ export const KindChangeDialog = () => { const toA2ADescription = intl.formatMessage({ defaultMessage: - "Using a chat message trigger means your workflow will be conversational, which doesn't support actions running after an agentic loop. Delete any actions running after an agent to use this trigger.", - id: '+jvca5', + "Using a chat message trigger means your workflow will be conversational, which doesn't support actions running after an agent. Delete any actions running after an agent to use this trigger.", + id: 'Sy5Gcz', description: 'Description for dialog that appears when changing the kind of a node', }); diff --git a/libs/designer/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx b/libs/designer/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx index 45366c19442..8275b52b397 100644 --- a/libs/designer/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx +++ b/libs/designer/src/lib/ui/common/EdgeContextualMenu/EdgeContextualMenu.tsx @@ -191,14 +191,14 @@ export const EdgeContextualMenu = () => { const newAgentText = intl.formatMessage({ defaultMessage: 'Add an agent', - id: 'tjg2VO', - description: 'Button text for adding an agentic loop', + id: 'hj/ald', + description: 'Button text for adding an agent', }); const newHandOffAgentText = intl.formatMessage({ defaultMessage: 'Add a hand-off agent', - id: 'MbUEdr', - description: 'Text for button to add an agentic loop', + id: '1YUi9I', + description: 'Text for button to add an agent', }); const pasteFromClipboard = intl.formatMessage({ @@ -214,9 +214,9 @@ export const EdgeContextualMenu = () => { }); const a2aAgentLoopDisabledText = intl.formatMessage({ - defaultMessage: 'Cannot add subsequent actions below agentic loops in agent to agent workflows', - id: 'KFFF+N', - description: 'Message shown when action addition is disabled within agentic loops in A2A workflows', + defaultMessage: 'Cannot add subsequent actions below agents in agent to agent workflows', + id: 'HMJPEj', + description: 'Message shown when action addition is disabled within agents in A2A workflows', }); const a2aParallelBranchDisabledText = intl.formatMessage({ @@ -226,9 +226,9 @@ export const EdgeContextualMenu = () => { }); const a2aPasteDisabledText = intl.formatMessage({ - defaultMessage: 'Cannot paste actions below agentic loops in agent to agent workflows', - id: 'VPVCkv', - description: 'Message shown when paste is disabled below agentic loops in A2A workflows', + defaultMessage: 'Cannot paste actions below agents in agent to agent workflows', + id: 'F3q0Hk', + description: 'Message shown when paste is disabled below agents in A2A workflows', }); const editHandoffText = intl.formatMessage({ diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts b/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts index 2060414c257..c7ef9c26439 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/base/operations/agent.ts @@ -17,7 +17,7 @@ export const agentOperation = { }, summary: 'Agent', description: - 'Loop in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', + 'Action in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', visibility: 'Important', operationType: 'Agent', brandColor, diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/consumption/manifests/agentloop.ts b/libs/logic-apps-shared/src/designer-client-services/lib/consumption/manifests/agentloop.ts index 5e8fa800e82..e80a7334f9c 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/consumption/manifests/agentloop.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/consumption/manifests/agentloop.ts @@ -7,7 +7,7 @@ export default { 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyMiAyMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjIyIiBoZWlnaHQ9IjIyIiByeD0iMiIgZmlsbD0iIzMzNTJCOSIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTA4OF80OTQwMCkiPgo8cGF0aCBkPSJNOC4wMzEzNyAxMC4zODE4QzcuODE5NzggMTAuMzgxOCA3LjYxODc3IDEwLjMzODIgNy40MjgzNCAxMC4yNTA5QzcuMjM3OTEgMTAuMTYzNiA3LjA2ODY0IDEwLjA0MzcgNi45MjA1MyA5Ljg5MDk0QzYuNzcyNDEgOS43MzgyMiA2LjY1NjA0IDkuNTYzNjggNi41NzE0MSA5LjM2NzMzQzYuNDg2NzcgOS4xNzA5OCA2LjQ0MjM0IDguOTYxNTQgNi40MzgxIDguNzM5MDFWNi4xNjAyNkM2LjQzODEgNS45MzMzNyA2LjQ4MjU0IDUuNzIxNzQgNi41NzE0MSA1LjUyNTM5QzYuNjYwMjcgNS4zMjkwNCA2Ljc3ODc2IDUuMTU0NSA2LjkyNjg3IDUuMDAxNzlDNy4wNzQ5OSA0Ljg0OTA3IDcuMjQ2MzcgNC43MzEyNiA3LjQ0MTAzIDQuNjQ4MzVDNy42MzU3IDQuNTY1NDUgNy44NDMwNSA0LjUyMTgyIDguMDYzMSA0LjUxNzQ1SDEwLjA5NDRWNC40MTI3M0MxMC4wOTQ0IDQuMzc3ODMgMTAuMDkyMiA0LjMzODU2IDEwLjA4OCA0LjI5NDkyQzEwLjA4OCA0LjIyMDc0IDEwLjA5MjIgNC4xNDg3NSAxMC4xMDA3IDQuMDc4OTRDMTAuMTA5MiA0LjAwOTEyIDEwLjEyNjEgMy45NDM2NyAxMC4xNTE1IDMuODgyNThDMTAuMTc2OSAzLjgyMTUgMTAuMjE5MiAzLjc3MzUgMTAuMjc4NCAzLjczODU5QzEwLjMzNzcgMy43MDM2OSAxMC40MTE3IDMuNjg0MDUgMTAuNTAwNiAzLjY3OTY5QzEwLjU5MzcgMy42Nzk2OSAxMC42NjU2IDMuNjk3MTQgMTAuNzE2NCAzLjczMjA1QzEwLjc2NzIgMy43NjY5NSAxMC44MDc0IDMuODE0OTUgMTAuODM3IDMuODc2MDRDMTAuODY2NyAzLjkzNzEzIDEwLjg4NTcgNC4wMDI1OCAxMC44OTQyIDQuMDcyMzlDMTAuOTAyNiA0LjE0MjIgMTAuOTA2OSA0LjIxNjM4IDEwLjkwNjkgNC4yOTQ5MlY0LjUxNzQ1SDEyLjk2OThDMTMuMTgxNCA0LjUxNzQ1IDEzLjM4MjQgNC41NjEwOSAxMy41NzI5IDQuNjQ4MzVDMTMuNzYzMyA0LjczNTYyIDEzLjkzMjYgNC44NTU2MSAxNC4wODA3IDUuMDA4MzNDMTQuMjI4OCA1LjE2MTA1IDE0LjM0NTIgNS4zMzU1OCAxNC40Mjk4IDUuNTMxOTRDMTQuNTE0NCA1LjcyODI5IDE0LjU1ODkgNS45Mzc3MyAxNC41NjMxIDYuMTYwMjZWOC43MzkwMUMxNC41NjMxIDguOTU3MTggMTQuNTIwOCA5LjE2NDQ0IDE0LjQzNjIgOS4zNjA3OUMxNC4zNTE1IDkuNTU3MTQgMTQuMjM1MSA5LjczMTY3IDE0LjA4NyA5Ljg4NDM5QzEzLjkzODkgMTAuMDM3MSAxMy43Njk2IDEwLjE1NzEgMTMuNTc5MiAxMC4yNDQ0QzEzLjM4ODggMTAuMzMxNiAxMy4xODU3IDEwLjM3NzUgMTIuOTY5OCAxMC4zODE4SDguMDMxMzdaTTcuMjUwNiA4LjcwNjI4QzcuMjUwNiA4LjgyNDA5IDcuMjcxNzYgOC45MzMxOCA3LjMxNDA4IDkuMDMzNTRDNy4zNTY0IDkuMTMzODkgNy40MTM1MyA5LjIyMzM0IDcuNDg1NDcgOS4zMDE4OEM3LjU1NzQxIDkuMzgwNDIgNy42NDIwNCA5LjQzOTMzIDcuNzM5MzcgOS40Nzg2QzcuODM2NyA5LjUxNzg3IDcuOTQ0NjEgOS41Mzk2OSA4LjA2MzEgOS41NDQwNUgxMi45MzgxQzEzLjA1MjQgOS41NDQwNSAxMy4xNTgyIDkuNTIyMjMgMTMuMjU1NSA5LjQ3ODZDMTMuMzUyOCA5LjQzNDk3IDEzLjQzNzUgOS4zNzYwNiAxMy41MDk0IDkuMzAxODhDMTMuNTgxMyA5LjIyNzcxIDEzLjY0MDYgOS4xMzgyNiAxMy42ODcxIDkuMDMzNTRDMTMuNzMzNyA4LjkyODgxIDEzLjc1NDggOC44MTk3MyAxMy43NTA2IDguNzA2MjhWNi4xOTI5OUMxMy43NTA2IDYuMDc5NTQgMTMuNzI5NCA1Ljk3MjY0IDEzLjY4NzEgNS44NzIyOEMxMy42NDQ4IDUuNzcxOTIgMTMuNTg3NyA1LjY4MjQ3IDEzLjUxNTcgNS42MDM5M0MxMy40NDM4IDUuNTI1MzkgMTMuMzU3IDUuNDY0MyAxMy4yNTU1IDUuNDIwNjdDMTMuMTUzOSA1LjM3NzA0IDEzLjA0ODEgNS4zNTUyMiAxMi45MzgxIDUuMzU1MjJIOC4wNjMxQzcuOTQ4ODUgNS4zNTUyMiA3Ljg0MzA1IDUuMzc3MDQgNy43NDU3MiA1LjQyMDY3QzcuNjQ4MzkgNS40NjQzIDcuNTYzNzYgNS41MjMyMSA3LjQ5MTgyIDUuNTk3MzlDNy40MTk4OCA1LjY3MTU2IDcuMzYwNjMgNS43NjEwMSA3LjMxNDA4IDUuODY1NzNDNy4yNjc1MyA1Ljk3MDQ1IDcuMjQ2MzcgNi4wNzk1NCA3LjI1MDYgNi4xOTI5OVY4LjcwNjI4Wk04LjA2MzEgNy40NDk2M0M4LjA2MzEgNy4zMzE4MiA4LjA4NDI2IDcuMjIyNzQgOC4xMjY1OCA3LjEyMjM4QzguMTY4OSA3LjAyMjAyIDguMjI2MDMgNi45MzQ3NiA4LjI5Nzk3IDYuODYwNThDOC4zNjk5MSA2Ljc4NjQgOC40NTY2NiA2LjcyNTMyIDguNTU4MjIgNi42NzczMkM4LjY1OTc4IDYuNjI5MzIgOC43NjU1OCA2LjYwNzUgOC44NzU2IDYuNjExODdDOC45ODU2MyA2LjYxMTg3IDkuMDg5MzEgNi42MzM2OSA5LjE4NjY0IDYuNjc3MzJDOS4yODM5NyA2LjcyMDk1IDkuMzcwNzIgNi43Nzk4NiA5LjQ0Njg5IDYuODU0MDNDOS41MjMwNyA2LjkyODIxIDkuNTgyMzEgNy4wMTc2NiA5LjYyNDYzIDcuMTIyMzhDOS42NjY5NCA3LjIyNzEgOS42ODgxIDcuMzM2MTkgOS42ODgxIDcuNDQ5NjNDOS42ODgxIDcuNTY3NDUgOS42NjY5NCA3LjY3NjUzIDkuNjI0NjMgNy43NzY4OUM5LjU4MjMxIDcuODc3MjQgOS41MjUxOCA3Ljk2NDUxIDkuNDUzMjQgOC4wMzg2OUM5LjM4MTMgOC4xMTI4NyA5LjI5NDU1IDguMTczOTUgOS4xOTI5OSA4LjIyMTk1QzkuMDkxNDIgOC4yNjk5NSA4Ljk4NTYzIDguMjkxNzYgOC44NzU2IDguMjg3NEM4Ljc2MTM1IDguMjg3NCA4LjY1NTU1IDguMjY1NTggOC41NTgyMiA4LjIyMTk1QzguNDYwODkgOC4xNzgzMiA4LjM3NDE0IDguMTE5NDEgOC4yOTc5NyA4LjA0NTIzQzguMjIxOCA3Ljk3MTA2IDguMTY0NjcgNy44ODM3OSA4LjEyNjU4IDcuNzgzNDNDOC4wODg0OSA3LjY4MzA3IDguMDY3MzQgNy41NzE4MSA4LjA2MzEgNy40NDk2M1pNMTEuMzEzMSA3LjQ0OTYzQzExLjMxMzEgNy4zMzE4MiAxMS4zMzQzIDcuMjIyNzQgMTEuMzc2NiA3LjEyMjM4QzExLjQxODkgNy4wMjIwMiAxMS40NzYgNi45MzQ3NiAxMS41NDggNi44NjA1OEMxMS42MTk5IDYuNzg2NCAxMS43MDY3IDYuNzI1MzIgMTEuODA4MiA2LjY3NzMyQzExLjkwOTggNi42MjkzMiAxMi4wMTU2IDYuNjA3NSAxMi4xMjU2IDYuNjExODdDMTIuMjM1NiA2LjYxMTg3IDEyLjMzOTMgNi42MzM2OSAxMi40MzY2IDYuNjc3MzJDMTIuNTM0IDYuNzIwOTUgMTIuNjIwNyA2Ljc3OTg2IDEyLjY5NjkgNi44NTQwM0MxMi43NzMxIDYuOTI4MjEgMTIuODMyMyA3LjAxNzY2IDEyLjg3NDYgNy4xMjIzOEMxMi45MTY5IDcuMjI3MSAxMi45MzgxIDcuMzM2MTkgMTIuOTM4MSA3LjQ0OTYzQzEyLjkzODEgNy41Njc0NSAxMi45MTY5IDcuNjc2NTMgMTIuODc0NiA3Ljc3Njg5QzEyLjgzMjMgNy44NzcyNCAxMi43NzUyIDcuOTY0NTEgMTIuNzAzMiA4LjAzODY5QzEyLjYzMTMgOC4xMTI4NyAxMi41NDQ1IDguMTczOTUgMTIuNDQzIDguMjIxOTVDMTIuMzQxNCA4LjI2OTk1IDEyLjIzNTYgOC4yOTE3NiAxMi4xMjU2IDguMjg3NEMxMi4wMTEzIDguMjg3NCAxMS45MDU2IDguMjY1NTggMTEuODA4MiA4LjIyMTk1QzExLjcxMDkgOC4xNzgzMiAxMS42MjQxIDguMTE5NDEgMTEuNTQ4IDguMDQ1MjNDMTEuNDcxOCA3Ljk3MTA2IDExLjQxNDcgNy44ODM3OSAxMS4zNzY2IDcuNzgzNDNDMTEuMzM4NSA3LjY4MzA3IDExLjMxNzMgNy41NzE4MSAxMS4zMTMxIDcuNDQ5NjNaTTE0LjU5NDggMTEuMjE5NkMxNC44MDY0IDExLjIxOTYgMTUuMDA3NCAxMS4yNjMyIDE1LjE5NzkgMTEuMzUwNUMxNS4zODgzIDExLjQzNzcgMTUuNTU3NiAxMS41NTc3IDE1LjcwNTcgMTEuNzEwNUMxNS44NTM4IDExLjg2MzIgMTUuOTcwMiAxMi4wMzc3IDE2LjA1NDggMTIuMjM0MUMxNi4xMzk0IDEyLjQzMDQgMTYuMTgzOSAxMi42Mzk5IDE2LjE4ODEgMTIuODYyNEMxNi4xODgxIDEzLjM5NDcgMTYuMTA3NyAxMy44NjgxIDE1Ljk0NjkgMTQuMjgyN0MxNS43ODYxIDE0LjY5NzIgMTUuNTY2IDE1LjA1OTMgMTUuMjg2NyAxNS4zNjkxQzE1LjAwNzQgMTUuNjc4OSAxNC42ODE2IDE1Ljk0NTEgMTQuMzA5MiAxNi4xNjc2QzEzLjkzNjggMTYuMzkwMiAxMy41NDExIDE2LjU2NjkgMTMuMTIyMiAxNi42OTc4QzEyLjcwMzIgMTYuODI4NyAxMi4yNjc0IDE2LjkyNjkgMTEuODE0NiAxNi45OTIzQzExLjM2MTggMTcuMDU3OCAxMC45MjM4IDE3LjA4ODMgMTAuNTAwNiAxNy4wODM5QzEwLjA2OSAxNy4wODM5IDkuNjI4ODYgMTcuMDUzNCA5LjE4MDI5IDE2Ljk5MjNDOC43MzE3MiAxNi45MzEyIDguMjk3OTcgMTYuODMzIDcuODc5MDIgMTYuNjk3OEM3LjQ2MDA4IDE2LjU2MjUgNy4wNjIyOSAxNi4zODU4IDYuNjg1NjYgMTYuMTY3NkM2LjMwOTA0IDE1Ljk0OTUgNS45ODUzMSAxNS42ODMzIDUuNzE0NDcgMTUuMzY5MUM1LjQ0MzY0IDE1LjA1NSA1LjIyMzU5IDE0LjY5MDYgNS4wNTQzMiAxNC4yNzYxQzQuODg1MDQgMTMuODYxNiA0LjgwNDY0IDEzLjM4NiA0LjgxMzEgMTIuODQ5M0M0LjgxMzEgMTIuNjI2OCA0Ljg1NzU0IDEyLjQxNzMgNC45NDY0MSAxMi4yMjFDNS4wMzUyNyAxMi4wMjQ2IDUuMTUzNzYgMTEuODUwMSA1LjMwMTg3IDExLjY5NzRDNS40NDk5OSAxMS41NDQ3IDUuNjIzNDkgMTEuNDI5IDUuODIyMzggMTEuMzUwNUM2LjAyMTI4IDExLjI3MTkgNi4yMjg2MyAxMS4yMjgzIDYuNDQ0NDUgMTEuMjE5NkgxNC41OTQ4Wk0xNS4zNzU2IDEyLjg5NTFDMTUuMzc1NiAxMi43ODE3IDE1LjM1NDQgMTIuNjc0OCAxNS4zMTIxIDEyLjU3NDRDMTUuMjY5OCAxMi40NzQgMTUuMjEyNyAxMi4zODQ2IDE1LjE0MDcgMTIuMzA2MUMxNS4wNjg4IDEyLjIyNzUgMTQuOTgyIDEyLjE2NjQgMTQuODgwNSAxMi4xMjI4QzE0Ljc3ODkgMTIuMDc5MiAxNC42NzMxIDEyLjA1NzMgMTQuNTYzMSAxMi4wNTczSDYuNDQ0NDVDNi4zMzAxOSAxMi4wNTczIDYuMjI0NCAxMi4wNzkyIDYuMTI3MDcgMTIuMTIyOEM2LjAyOTc0IDEyLjE2NjQgNS45NDI5OSAxMi4yMjUzIDUuODY2ODIgMTIuMjk5NUM1Ljc5MDY0IDEyLjM3MzcgNS43MzE0IDEyLjQ2MSA1LjY4OTA4IDEyLjU2MTNDNS42NDY3NiAxMi42NjE3IDUuNjI1NiAxMi43NzI5IDUuNjI1NiAxMi44OTUxQzUuNjI1NiAxMy4zMzE0IDUuNjk3NTQgMTMuNzE3NiA1Ljg0MTQyIDE0LjA1MzZDNS45ODUzMSAxNC4zODk2IDYuMTgyMDggMTQuNjgxOSA2LjQzMTc2IDE0LjkzMDZDNi42ODE0MyAxNS4xNzkzIDYuOTY5MTkgMTUuMzg2NiA3LjI5NTA0IDE1LjU1MjRDNy42MjA4OCAxNS43MTgyIDcuOTYzNjYgMTUuODUzNSA4LjMyMzM2IDE1Ljk1ODJDOC42ODMwNiAxNi4wNjI5IDkuMDUxMjIgMTYuMTM3MSA5LjQyNzg1IDE2LjE4MDdDOS44MDQ0OCAxNi4yMjQ0IDEwLjE2MjEgMTYuMjQ2MiAxMC41MDA2IDE2LjI0NjJDMTAuODQzNCAxNi4yNDYyIDExLjIwMSAxNi4yMjQ0IDExLjU3MzQgMTYuMTgwN0MxMS45NDU4IDE2LjEzNzEgMTIuMzExOCAxNi4wNjUxIDEyLjY3MTUgMTUuOTY0N0MxMy4wMzEyIDE1Ljg2NDQgMTMuMzc2MSAxNS43MjkxIDEzLjcwNjIgMTUuNTU4OUMxNC4wMzYyIDE1LjM4ODggMTQuMzIxOSAxNS4xNzkzIDE0LjU2MzEgMTQuOTMwNkMxNC44MDQzIDE0LjY4MTkgMTUuMDAxMSAxNC4zODk2IDE1LjE1MzQgMTQuMDUzNkMxNS4zMDU4IDEzLjcxNzYgMTUuMzc5OCAxMy4zMzE0IDE1LjM3NTYgMTIuODk1MVoiIGZpbGw9IiNFRUVGRkYiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDg4XzQ5NDAwIj4KPHJlY3QgeD0iNCIgeT0iMy42Nzk2OSIgd2lkdGg9IjEzIiBoZWlnaHQ9IjEzLjQwNDMiIHJ4PSI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=', brandColor: '#00208A', description: - 'Loop in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', + 'Action in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', allowChildOperations: true, subGraphDetails: { diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/consumption/operations/agent.ts b/libs/logic-apps-shared/src/designer-client-services/lib/consumption/operations/agent.ts index 40f17b491f5..4135c7b7705 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/consumption/operations/agent.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/consumption/operations/agent.ts @@ -17,7 +17,7 @@ export const agentOperation = { }, summary: 'Agent', description: - 'Loop in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', + 'Action in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', visibility: 'Important', operationType: 'Agent', brandColor, diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts b/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts index f42a519025d..de160f429fa 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts @@ -7,7 +7,7 @@ export default { 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyMiAyMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjIyIiBoZWlnaHQ9IjIyIiByeD0iMiIgZmlsbD0iIzMzNTJCOSIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTA4OF80OTQwMCkiPgo8cGF0aCBkPSJNOC4wMzEzNyAxMC4zODE4QzcuODE5NzggMTAuMzgxOCA3LjYxODc3IDEwLjMzODIgNy40MjgzNCAxMC4yNTA5QzcuMjM3OTEgMTAuMTYzNiA3LjA2ODY0IDEwLjA0MzcgNi45MjA1MyA5Ljg5MDk0QzYuNzcyNDEgOS43MzgyMiA2LjY1NjA0IDkuNTYzNjggNi41NzE0MSA5LjM2NzMzQzYuNDg2NzcgOS4xNzA5OCA2LjQ0MjM0IDguOTYxNTQgNi40MzgxIDguNzM5MDFWNi4xNjAyNkM2LjQzODEgNS45MzMzNyA2LjQ4MjU0IDUuNzIxNzQgNi41NzE0MSA1LjUyNTM5QzYuNjYwMjcgNS4zMjkwNCA2Ljc3ODc2IDUuMTU0NSA2LjkyNjg3IDUuMDAxNzlDNy4wNzQ5OSA0Ljg0OTA3IDcuMjQ2MzcgNC43MzEyNiA3LjQ0MTAzIDQuNjQ4MzVDNy42MzU3IDQuNTY1NDUgNy44NDMwNSA0LjUyMTgyIDguMDYzMSA0LjUxNzQ1SDEwLjA5NDRWNC40MTI3M0MxMC4wOTQ0IDQuMzc3ODMgMTAuMDkyMiA0LjMzODU2IDEwLjA4OCA0LjI5NDkyQzEwLjA4OCA0LjIyMDc0IDEwLjA5MjIgNC4xNDg3NSAxMC4xMDA3IDQuMDc4OTRDMTAuMTA5MiA0LjAwOTEyIDEwLjEyNjEgMy45NDM2NyAxMC4xNTE1IDMuODgyNThDMTAuMTc2OSAzLjgyMTUgMTAuMjE5MiAzLjc3MzUgMTAuMjc4NCAzLjczODU5QzEwLjMzNzcgMy43MDM2OSAxMC40MTE3IDMuNjg0MDUgMTAuNTAwNiAzLjY3OTY5QzEwLjU5MzcgMy42Nzk2OSAxMC42NjU2IDMuNjk3MTQgMTAuNzE2NCAzLjczMjA1QzEwLjc2NzIgMy43NjY5NSAxMC44MDc0IDMuODE0OTUgMTAuODM3IDMuODc2MDRDMTAuODY2NyAzLjkzNzEzIDEwLjg4NTcgNC4wMDI1OCAxMC44OTQyIDQuMDcyMzlDMTAuOTAyNiA0LjE0MjIgMTAuOTA2OSA0LjIxNjM4IDEwLjkwNjkgNC4yOTQ5MlY0LjUxNzQ1SDEyLjk2OThDMTMuMTgxNCA0LjUxNzQ1IDEzLjM4MjQgNC41NjEwOSAxMy41NzI5IDQuNjQ4MzVDMTMuNzYzMyA0LjczNTYyIDEzLjkzMjYgNC44NTU2MSAxNC4wODA3IDUuMDA4MzNDMTQuMjI4OCA1LjE2MTA1IDE0LjM0NTIgNS4zMzU1OCAxNC40Mjk4IDUuNTMxOTRDMTQuNTE0NCA1LjcyODI5IDE0LjU1ODkgNS45Mzc3MyAxNC41NjMxIDYuMTYwMjZWOC43MzkwMUMxNC41NjMxIDguOTU3MTggMTQuNTIwOCA5LjE2NDQ0IDE0LjQzNjIgOS4zNjA3OUMxNC4zNTE1IDkuNTU3MTQgMTQuMjM1MSA5LjczMTY3IDE0LjA4NyA5Ljg4NDM5QzEzLjkzODkgMTAuMDM3MSAxMy43Njk2IDEwLjE1NzEgMTMuNTc5MiAxMC4yNDQ0QzEzLjM4ODggMTAuMzMxNiAxMy4xODU3IDEwLjM3NzUgMTIuOTY5OCAxMC4zODE4SDguMDMxMzdaTTcuMjUwNiA4LjcwNjI4QzcuMjUwNiA4LjgyNDA5IDcuMjcxNzYgOC45MzMxOCA3LjMxNDA4IDkuMDMzNTRDNy4zNTY0IDkuMTMzODkgNy40MTM1MyA5LjIyMzM0IDcuNDg1NDcgOS4zMDE4OEM3LjU1NzQxIDkuMzgwNDIgNy42NDIwNCA5LjQzOTMzIDcuNzM5MzcgOS40Nzg2QzcuODM2NyA5LjUxNzg3IDcuOTQ0NjEgOS41Mzk2OSA4LjA2MzEgOS41NDQwNUgxMi45MzgxQzEzLjA1MjQgOS41NDQwNSAxMy4xNTgyIDkuNTIyMjMgMTMuMjU1NSA5LjQ3ODZDMTMuMzUyOCA5LjQzNDk3IDEzLjQzNzUgOS4zNzYwNiAxMy41MDk0IDkuMzAxODhDMTMuNTgxMyA5LjIyNzcxIDEzLjY0MDYgOS4xMzgyNiAxMy42ODcxIDkuMDMzNTRDMTMuNzMzNyA4LjkyODgxIDEzLjc1NDggOC44MTk3MyAxMy43NTA2IDguNzA2MjhWNi4xOTI5OUMxMy43NTA2IDYuMDc5NTQgMTMuNzI5NCA1Ljk3MjY0IDEzLjY4NzEgNS44NzIyOEMxMy42NDQ4IDUuNzcxOTIgMTMuNTg3NyA1LjY4MjQ3IDEzLjUxNTcgNS42MDM5M0MxMy40NDM4IDUuNTI1MzkgMTMuMzU3IDUuNDY0MyAxMy4yNTU1IDUuNDIwNjdDMTMuMTUzOSA1LjM3NzA0IDEzLjA0ODEgNS4zNTUyMiAxMi45MzgxIDUuMzU1MjJIOC4wNjMxQzcuOTQ4ODUgNS4zNTUyMiA3Ljg0MzA1IDUuMzc3MDQgNy43NDU3MiA1LjQyMDY3QzcuNjQ4MzkgNS40NjQzIDcuNTYzNzYgNS41MjMyMSA3LjQ5MTgyIDUuNTk3MzlDNy40MTk4OCA1LjY3MTU2IDcuMzYwNjMgNS43NjEwMSA3LjMxNDA4IDUuODY1NzNDNy4yNjc1MyA1Ljk3MDQ1IDcuMjQ2MzcgNi4wNzk1NCA3LjI1MDYgNi4xOTI5OVY4LjcwNjI4Wk04LjA2MzEgNy40NDk2M0M4LjA2MzEgNy4zMzE4MiA4LjA4NDI2IDcuMjIyNzQgOC4xMjY1OCA3LjEyMjM4QzguMTY4OSA3LjAyMjAyIDguMjI2MDMgNi45MzQ3NiA4LjI5Nzk3IDYuODYwNThDOC4zNjk5MSA2Ljc4NjQgOC40NTY2NiA2LjcyNTMyIDguNTU4MjIgNi42NzczMkM4LjY1OTc4IDYuNjI5MzIgOC43NjU1OCA2LjYwNzUgOC44NzU2IDYuNjExODdDOC45ODU2MyA2LjYxMTg3IDkuMDg5MzEgNi42MzM2OSA5LjE4NjY0IDYuNjc3MzJDOS4yODM5NyA2LjcyMDk1IDkuMzcwNzIgNi43Nzk4NiA5LjQ0Njg5IDYuODU0MDNDOS41MjMwNyA2LjkyODIxIDkuNTgyMzEgNy4wMTc2NiA5LjYyNDYzIDcuMTIyMzhDOS42NjY5NCA3LjIyNzEgOS42ODgxIDcuMzM2MTkgOS42ODgxIDcuNDQ5NjNDOS42ODgxIDcuNTY3NDUgOS42NjY5NCA3LjY3NjUzIDkuNjI0NjMgNy43NzY4OUM5LjU4MjMxIDcuODc3MjQgOS41MjUxOCA3Ljk2NDUxIDkuNDUzMjQgOC4wMzg2OUM5LjM4MTMgOC4xMTI4NyA5LjI5NDU1IDguMTczOTUgOS4xOTI5OSA4LjIyMTk1QzkuMDkxNDIgOC4yNjk5NSA4Ljk4NTYzIDguMjkxNzYgOC44NzU2IDguMjg3NEM4Ljc2MTM1IDguMjg3NCA4LjY1NTU1IDguMjY1NTggOC41NTgyMiA4LjIyMTk1QzguNDYwODkgOC4xNzgzMiA4LjM3NDE0IDguMTE5NDEgOC4yOTc5NyA4LjA0NTIzQzguMjIxOCA3Ljk3MTA2IDguMTY0NjcgNy44ODM3OSA4LjEyNjU4IDcuNzgzNDNDOC4wODg0OSA3LjY4MzA3IDguMDY3MzQgNy41NzE4MSA4LjA2MzEgNy40NDk2M1pNMTEuMzEzMSA3LjQ0OTYzQzExLjMxMzEgNy4zMzE4MiAxMS4zMzQzIDcuMjIyNzQgMTEuMzc2NiA3LjEyMjM4QzExLjQxODkgNy4wMjIwMiAxMS40NzYgNi45MzQ3NiAxMS41NDggNi44NjA1OEMxMS42MTk5IDYuNzg2NCAxMS43MDY3IDYuNzI1MzIgMTEuODA4MiA2LjY3NzMyQzExLjkwOTggNi42MjkzMiAxMi4wMTU2IDYuNjA3NSAxMi4xMjU2IDYuNjExODdDMTIuMjM1NiA2LjYxMTg3IDEyLjMzOTMgNi42MzM2OSAxMi40MzY2IDYuNjc3MzJDMTIuNTM0IDYuNzIwOTUgMTIuNjIwNyA2Ljc3OTg2IDEyLjY5NjkgNi44NTQwM0MxMi43NzMxIDYuOTI4MjEgMTIuODMyMyA3LjAxNzY2IDEyLjg3NDYgNy4xMjIzOEMxMi45MTY5IDcuMjI3MSAxMi45MzgxIDcuMzM2MTkgMTIuOTM4MSA3LjQ0OTYzQzEyLjkzODEgNy41Njc0NSAxMi45MTY5IDcuNjc2NTMgMTIuODc0NiA3Ljc3Njg5QzEyLjgzMjMgNy44NzcyNCAxMi43NzUyIDcuOTY0NTEgMTIuNzAzMiA4LjAzODY5QzEyLjYzMTMgOC4xMTI4NyAxMi41NDQ1IDguMTczOTUgMTIuNDQzIDguMjIxOTVDMTIuMzQxNCA4LjI2OTk1IDEyLjIzNTYgOC4yOTE3NiAxMi4xMjU2IDguMjg3NEMxMi4wMTEzIDguMjg3NCAxMS45MDU2IDguMjY1NTggMTEuODA4MiA4LjIyMTk1QzExLjcxMDkgOC4xNzgzMiAxMS42MjQxIDguMTE5NDEgMTEuNTQ4IDguMDQ1MjNDMTEuNDcxOCA3Ljk3MTA2IDExLjQxNDcgNy44ODM3OSAxMS4zNzY2IDcuNzgzNDNDMTEuMzM4NSA3LjY4MzA3IDExLjMxNzMgNy41NzE4MSAxMS4zMTMxIDcuNDQ5NjNaTTE0LjU5NDggMTEuMjE5NkMxNC44MDY0IDExLjIxOTYgMTUuMDA3NCAxMS4yNjMyIDE1LjE5NzkgMTEuMzUwNUMxNS4zODgzIDExLjQzNzcgMTUuNTU3NiAxMS41NTc3IDE1LjcwNTcgMTEuNzEwNUMxNS44NTM4IDExLjg2MzIgMTUuOTcwMiAxMi4wMzc3IDE2LjA1NDggMTIuMjM0MUMxNi4xMzk0IDEyLjQzMDQgMTYuMTgzOSAxMi42Mzk5IDE2LjE4ODEgMTIuODYyNEMxNi4xODgxIDEzLjM5NDcgMTYuMTA3NyAxMy44NjgxIDE1Ljk0NjkgMTQuMjgyN0MxNS43ODYxIDE0LjY5NzIgMTUuNTY2IDE1LjA1OTMgMTUuMjg2NyAxNS4zNjkxQzE1LjAwNzQgMTUuNjc4OSAxNC42ODE2IDE1Ljk0NTEgMTQuMzA5MiAxNi4xNjc2QzEzLjkzNjggMTYuMzkwMiAxMy41NDExIDE2LjU2NjkgMTMuMTIyMiAxNi42OTc4QzEyLjcwMzIgMTYuODI4NyAxMi4yNjc0IDE2LjkyNjkgMTEuODE0NiAxNi45OTIzQzExLjM2MTggMTcuMDU3OCAxMC45MjM4IDE3LjA4ODMgMTAuNTAwNiAxNy4wODM5QzEwLjA2OSAxNy4wODM5IDkuNjI4ODYgMTcuMDUzNCA5LjE4MDI5IDE2Ljk5MjNDOC43MzE3MiAxNi45MzEyIDguMjk3OTcgMTYuODMzIDcuODc5MDIgMTYuNjk3OEM3LjQ2MDA4IDE2LjU2MjUgNy4wNjIyOSAxNi4zODU4IDYuNjg1NjYgMTYuMTY3NkM2LjMwOTA0IDE1Ljk0OTUgNS45ODUzMSAxNS42ODMzIDUuNzE0NDcgMTUuMzY5MUM1LjQ0MzY0IDE1LjA1NSA1LjIyMzU5IDE0LjY5MDYgNS4wNTQzMiAxNC4yNzYxQzQuODg1MDQgMTMuODYxNiA0LjgwNDY0IDEzLjM4NiA0LjgxMzEgMTIuODQ5M0M0LjgxMzEgMTIuNjI2OCA0Ljg1NzU0IDEyLjQxNzMgNC45NDY0MSAxMi4yMjFDNS4wMzUyNyAxMi4wMjQ2IDUuMTUzNzYgMTEuODUwMSA1LjMwMTg3IDExLjY5NzRDNS40NDk5OSAxMS41NDQ3IDUuNjIzNDkgMTEuNDI5IDUuODIyMzggMTEuMzUwNUM2LjAyMTI4IDExLjI3MTkgNi4yMjg2MyAxMS4yMjgzIDYuNDQ0NDUgMTEuMjE5NkgxNC41OTQ4Wk0xNS4zNzU2IDEyLjg5NTFDMTUuMzc1NiAxMi43ODE3IDE1LjM1NDQgMTIuNjc0OCAxNS4zMTIxIDEyLjU3NDRDMTUuMjY5OCAxMi40NzQgMTUuMjEyNyAxMi4zODQ2IDE1LjE0MDcgMTIuMzA2MUMxNS4wNjg4IDEyLjIyNzUgMTQuOTgyIDEyLjE2NjQgMTQuODgwNSAxMi4xMjI4QzE0Ljc3ODkgMTIuMDc5MiAxNC42NzMxIDEyLjA1NzMgMTQuNTYzMSAxMi4wNTczSDYuNDQ0NDVDNi4zMzAxOSAxMi4wNTczIDYuMjI0NCAxMi4wNzkyIDYuMTI3MDcgMTIuMTIyOEM2LjAyOTc0IDEyLjE2NjQgNS45NDI5OSAxMi4yMjUzIDUuODY2ODIgMTIuMjk5NUM1Ljc5MDY0IDEyLjM3MzcgNS43MzE0IDEyLjQ2MSA1LjY4OTA4IDEyLjU2MTNDNS42NDY3NiAxMi42NjE3IDUuNjI1NiAxMi43NzI5IDUuNjI1NiAxMi44OTUxQzUuNjI1NiAxMy4zMzE0IDUuNjk3NTQgMTMuNzE3NiA1Ljg0MTQyIDE0LjA1MzZDNS45ODUzMSAxNC4zODk2IDYuMTgyMDggMTQuNjgxOSA2LjQzMTc2IDE0LjkzMDZDNi42ODE0MyAxNS4xNzkzIDYuOTY5MTkgMTUuMzg2NiA3LjI5NTA0IDE1LjU1MjRDNy42MjA4OCAxNS43MTgyIDcuOTYzNjYgMTUuODUzNSA4LjMyMzM2IDE1Ljk1ODJDOC42ODMwNiAxNi4wNjI5IDkuMDUxMjIgMTYuMTM3MSA5LjQyNzg1IDE2LjE4MDdDOS44MDQ0OCAxNi4yMjQ0IDEwLjE2MjEgMTYuMjQ2MiAxMC41MDA2IDE2LjI0NjJDMTAuODQzNCAxNi4yNDYyIDExLjIwMSAxNi4yMjQ0IDExLjU3MzQgMTYuMTgwN0MxMS45NDU4IDE2LjEzNzEgMTIuMzExOCAxNi4wNjUxIDEyLjY3MTUgMTUuOTY0N0MxMy4wMzEyIDE1Ljg2NDQgMTMuMzc2MSAxNS43MjkxIDEzLjcwNjIgMTUuNTU4OUMxNC4wMzYyIDE1LjM4ODggMTQuMzIxOSAxNS4xNzkzIDE0LjU2MzEgMTQuOTMwNkMxNC44MDQzIDE0LjY4MTkgMTUuMDAxMSAxNC4zODk2IDE1LjE1MzQgMTQuMDUzNkMxNS4zMDU4IDEzLjcxNzYgMTUuMzc5OCAxMy4zMzE0IDE1LjM3NTYgMTIuODk1MVoiIGZpbGw9IiNFRUVGRkYiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDg4XzQ5NDAwIj4KPHJlY3QgeD0iNCIgeT0iMy42Nzk2OSIgd2lkdGg9IjEzIiBoZWlnaHQ9IjEzLjQwNDMiIHJ4PSI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=', brandColor: '#00208A', description: - 'Loop in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', + 'Action in which the AI agent decides at each step which tools to use and how, and which text to generate to respond to the user.', allowChildOperations: true, subGraphDetails: { From cbd9488d8e76edeac4a7d0e4f803e96a6a9c13e0 Mon Sep 17 00:00:00 2001 From: Carlos Castro Date: Wed, 4 Feb 2026 15:29:30 -0500 Subject: [PATCH 3/3] Add unit tests for KindChangeDialog component --- .../__test__/KindChangeDialog.spec.tsx | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 libs/designer-v2/src/lib/ui/common/KindChangeDialog/__test__/KindChangeDialog.spec.tsx diff --git a/libs/designer-v2/src/lib/ui/common/KindChangeDialog/__test__/KindChangeDialog.spec.tsx b/libs/designer-v2/src/lib/ui/common/KindChangeDialog/__test__/KindChangeDialog.spec.tsx new file mode 100644 index 00000000000..114f946c8a9 --- /dev/null +++ b/libs/designer-v2/src/lib/ui/common/KindChangeDialog/__test__/KindChangeDialog.spec.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import { render, screen, fireEvent } from '@testing-library/react'; +import { describe, vi, beforeEach, it, expect } from 'vitest'; +import { KindChangeDialog } from '../KindChangeDialog'; + +// Mock react-redux +const mockDispatch = vi.fn(); +vi.mock('react-redux', () => ({ + useDispatch: () => mockDispatch, + useSelector: vi.fn(), +})); + +// Mock react-intl +vi.mock('react-intl', async () => { + const actualIntl = await vi.importActual('react-intl'); + return { + ...actualIntl, + useIntl: () => ({ + formatMessage: vi.fn(({ defaultMessage }) => defaultMessage), + }), + }; +}); + +// Mock the modal selectors +let mockKindChangeDialogType: string | null = null; +const mockCloseKindChangeDialogAction = { type: 'modal/closeKindChangeDialog' }; +vi.mock('../../../../core', () => ({ + useKindChangeDialogType: () => mockKindChangeDialogType, + closeKindChangeDialog: () => mockCloseKindChangeDialogAction, +})); + +describe('KindChangeDialog', () => { + beforeEach(() => { + vi.clearAllMocks(); + mockKindChangeDialogType = null; + }); + + it('should not render dialog content when kindChangeDialogType is null', () => { + mockKindChangeDialogType = null; + + render(); + + expect(screen.queryByRole('dialog')).toBeNull(); + }); + + it('should render dialog with toA2A description when kindChangeDialogType is toA2A', () => { + mockKindChangeDialogType = 'toA2A'; + + render(); + + expect(screen.getByRole('dialog')).toBeInTheDocument(); + expect(screen.getByText('Update workflow before using this trigger')).toBeInTheDocument(); + expect(screen.getByText(/Using a chat message trigger means your workflow will be conversational/)).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'Close' })).toBeInTheDocument(); + }); + + it('should render dialog with toStateful description when kindChangeDialogType is toStateful', () => { + mockKindChangeDialogType = 'toStateful'; + + render(); + + expect(screen.getByRole('dialog')).toBeInTheDocument(); + expect(screen.getByText('Update workflow before using this trigger')).toBeInTheDocument(); + expect(screen.getByText(/Using this trigger changes your workflow to a type that doesn.t support handoffs/)).toBeInTheDocument(); + }); + + it('should render dialog with fromStateless description when kindChangeDialogType is fromStateless', () => { + mockKindChangeDialogType = 'fromStateless'; + + render(); + + expect(screen.getByRole('dialog')).toBeInTheDocument(); + expect(screen.getByText('Invalid trigger for stateless workflow')).toBeInTheDocument(); + expect(screen.getByText(/This preview version of logic apps does not yet support stateless logic apps/)).toBeInTheDocument(); + }); + + it('should dispatch closeKindChangeDialog action when Close button is clicked', () => { + mockKindChangeDialogType = 'toA2A'; + + render(); + + const closeButton = screen.getByRole('button', { name: 'Close' }); + fireEvent.click(closeButton); + + expect(mockDispatch).toHaveBeenCalledWith(mockCloseKindChangeDialogAction); + }); +});