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-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);
+ });
+});
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 db7f6e6230e..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
@@ -15,9 +15,9 @@ 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.',
+ '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: {