diff --git a/apps/rowboat/app/lib/prebuilt-cards/customer-support.json b/apps/rowboat/app/lib/prebuilt-cards/customer-support.json index f60c763c..f4234f01 100644 --- a/apps/rowboat/app/lib/prebuilt-cards/customer-support.json +++ b/apps/rowboat/app/lib/prebuilt-cards/customer-support.json @@ -5,7 +5,6 @@ "type": "conversation", "description": "Hub agent to answer product information questions (using RAG) and delivery status questions.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\nYou are the hub agent responsible for orchestrating responses to product information and delivery status questions.\n\n---\n## āš™ļø Steps to Follow:\n1. Greet the user and ask how you can help. Say something like 'Hi, I'm [@variable:Assistant name](#mention) from [@variable:Company name](#mention). How can I help you today?'\n2. Determine if the user's question is about product information or delivery status.\n3. If the question is about product information, transfer to [@agent:Product Information Agent](#mention).\n4. If the question is about delivery status, transfer to [@agent:Delivery Status Agent](#mention).\n5. If the question is neither, politely inform the user that you can only help with product information or delivery status.\n6. Return the final answer to the user.\n\n---\n## šŸŽÆ Scope:\nāœ… In Scope:\n- Routing product information questions.\n- Routing delivery status questions.\n\nāŒ Out of Scope:\n- Directly answering product or delivery questions.\n- Handling questions outside of product information or delivery status.\n\n---\n## šŸ“‹ Guidelines:\nāœ”ļø Dos:\n- Clearly identify the type of user query.\n- Route to the correct agent.\n\n🚫 Don'ts:\n- Do not attempt to answer questions directly.\n- Do not ask for personal information unless explicitly required by a sub-agent.\n- CRITICAL: Only transfer to one agent at a time and wait for its response before proceeding.\n\n", - "examples": "- **User** : What are the features of product X?\n - **Agent actions**: Call [@agent:Product Information Agent](#mention)\n\n- **User** : Where is my order?\n - **Agent actions**: Call [@agent:Delivery Status Agent](#mention)\n\n- **User** : How do I reset my password?\n - **Agent response**: I can only help with product information or delivery status questions. How else can I assist you today?", "model": "gpt-4o", "toggleAble": true, "ragReturnType": "chunks", diff --git a/apps/rowboat/app/lib/prebuilt-cards/interview-scheduler.json b/apps/rowboat/app/lib/prebuilt-cards/interview-scheduler.json index 3c192ac8..56c1b556 100644 --- a/apps/rowboat/app/lib/prebuilt-cards/interview-scheduler.json +++ b/apps/rowboat/app/lib/prebuilt-cards/interview-scheduler.json @@ -6,7 +6,6 @@ "type": "conversation", "description": "Hub agent to orchestrate interview scheduling with candidates from a Google Sheet.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\nYou are the Recruitment HR Bot, responsible for orchestrating the process of scheduling interviews with candidates from a Google Sheet and updating their status, or handling calendar event RSVPs.\n\n---\n## āš™ļø Steps to Follow:\n1. Greet the user.\n2. **IF** the input is a calendar event RSVP (e.g., 'accepted', 'declined') and contains the candidate's email, Google Sheet ID, sheet name, and status column:\n - Directly call [@agent:Calendar Response Handler](#mention) with the candidate's email, the RSVP response, the Google Sheet ID, the sheet name, and the status column.\n - Inform the user that the calendar response has been processed.\n3. **ELSE** (if it's not a calendar event RSVP or missing details for it):\n - Check if the 'google sheet id' and 'Sheet range' prompts are available. If so, use their values. Otherwise, ask the user for the Google Sheet ID and the range containing candidate names and emails (e.g., 'Sheet1!A2:B').\n - Check if the 'interview start date and time' and 'Status column' prompts are available. If so, use their values. Otherwise, ask for the desired start date and time for interviews (e.g., 'YYYY-MM-DDTHH:MM:SS'), the duration of the interview in minutes, and the sheet name and column (e.g., 'Sheet1!C') where the interview status should be updated.\n - Once all necessary information is collected, call [@pipeline:Interview Scheduling Pipeline](#mention) with the collected details.\n - Inform the user when the interview scheduling process is complete.\n\n---\n## šŸŽÆ Scope:\nāœ… In Scope:\n- Orchestrating the workflow for fetching candidates, scheduling interviews, and updating sheet status.\n- Handling calendar event RSVPs and updating sheet status accordingly.\n\nāŒ Out of Scope:\n- Directly fetching candidate data, scheduling interviews, or updating sheet status (handled by pipeline agents).\n- Directly processing calendar responses (handled by Calendar Response Handler).\n\n---\n## šŸ“‹ Guidelines:\nāœ”ļø Dos:\n- Prioritize handling calendar event RSVPs if the necessary information is present.\n- Always confirm all necessary details (Sheet ID, ranges, interview time, duration, status column) with the user before initiating the pipeline for interview scheduling.\n- Ensure all steps are completed in sequence.\n- If inputs are already in the context, directly use them instead of asking or confirming with the user.\n\n🚫 Don'ts:\n- Do not perform data fetching, scheduling, or status updates directly.\n- Do not skip any step in the workflow.\n- Do not mention internal agent names to the user.\n- Do not say 'connecting you to another agent'.\n- CRITICAL: Only transfer to one agent at a time and wait for its response before proceeding.\n\n---\n## šŸ“„ Inputs:\n- **Google Sheet ID**: The unique identifier of the Google Spreadsheet containing candidate data. (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms')\n- **Sheet Range**: The range in A1 notation (e.g., 'Sheet1!A2:B') containing candidate names and emails.\n- **Interview Start Date and Time**: The desired start date and time for interviews in 'YYYY-MM-DDTHH:MM:SS' format. Default: '2025-08-26T09:00:00'\n- **Interview Duration**: The duration of the interview in minutes. Default: 30\n- **Status Column**: The sheet name and column (e.g., 'Sheet1!C') where the interview status should be updated.", - "examples": "- **User** : I want to schedule interviews for candidates from a Google Sheet.\n - **Agent response**: Sure! Please provide the desired start date and time for interviews (e.g., 'YYYY-MM-DDTHH:MM:SS'), the duration of the interview in minutes, and the sheet name and column (e.g., 'Sheet1!C') where the interview status should be updated.\n\n- **User** : Start Time: 2024-09-01T10:00:00, Duration: 30, Status Column: Sheet1!C\n - **Agent actions**: Call [@pipeline:Interview Scheduling Pipeline](#mention)\n\n- **Agent receives pipeline completion** :\n - **Agent response**: The interview scheduling process is complete.\n\n- **User** : Candidate [candidate_email] has accepted the interview. Sheet ID: [sheet_id], Sheet Name: [sheet_name], Status Column: [status_column]\n - **Agent actions**: Call [@agent:Calendar Response Handler](#mention)\n\n- **Agent receives Calendar Response Handler completion** :\n - **Agent response**: The calendar response has been processed and the sheet updated.", "model": "google/gemini-2.5-flash", "toggleAble": true, "ragReturnType": "chunks", diff --git a/apps/rowboat/app/projects/[projectId]/entities/agent_config.tsx b/apps/rowboat/app/projects/[projectId]/entities/agent_config.tsx index 3ad2c96a..f3cc65a0 100644 --- a/apps/rowboat/app/projects/[projectId]/entities/agent_config.tsx +++ b/apps/rowboat/app/projects/[projectId]/entities/agent_config.tsx @@ -68,7 +68,6 @@ export function AgentConfig({ const [isAdvancedConfigOpen, setIsAdvancedConfigOpen] = useState(false); const [showGenerateModal, setShowGenerateModal] = useState(false); const [isInstructionsMaximized, setIsInstructionsMaximized] = useState(false); - const [isExamplesMaximized, setIsExamplesMaximized] = useState(false); const { showPreview } = usePreviewModal(); const [localName, setLocalName] = useState(agent.name); const [nameError, setNameError] = useState(null); @@ -172,15 +171,12 @@ export function AgentConfig({ if (isInstructionsMaximized) { setIsInstructionsMaximized(false); } - if (isExamplesMaximized) { - setIsExamplesMaximized(false); - } } }; window.addEventListener('keydown', handleEscape); return () => window.removeEventListener('keydown', handleEscape); - }, [isInstructionsMaximized, isExamplesMaximized]); + }, [isInstructionsMaximized]); const validateName = (value: string) => { if (value.length === 0) { @@ -438,98 +434,7 @@ export function AgentConfig({ className="h-full min-h-0 overflow-auto !mb-0 !mt-0 min-h-[300px]" /> - {/* Examples Section */} -
-
- - -
- {!isExamplesMaximized && ( -
- šŸ’” Tip: Use the maximized view for a better editing experience -
- )} - {isExamplesMaximized ? ( -
-
- {/* Saved Banner for maximized examples */} - {showSavedBanner && ( -
- - - - Changes saved -
- )} -
-
- {agent.name} - / - Examples -
- -
-
- { - handleUpdate({ - ...agent, - examples: value - }); - showSavedMessage(); - }} - placeholder="Enter examples for this agent" - markdown - multiline - mentions - mentionsAtValues={atMentions} - className="h-full min-h-0 overflow-auto !mb-0 !mt-0" - /> -
-
-
- ) : ( - { - handleUpdate({ - ...agent, - examples: value - }); - showSavedMessage(); - }} - placeholder="Enter examples for this agent" - markdown - multiline - mentions - mentionsAtValues={atMentions} - className="h-full min-h-0 overflow-auto !mb-0 !mt-0" - /> - )} -
+ {/* Examples Section removed */} )} @@ -989,4 +894,4 @@ function validateAgentName(value: string, currentName?: string, usedNames?: Set< return "Name must contain only letters, numbers, underscores, hyphens, and spaces"; } return null; -} \ No newline at end of file +} diff --git a/apps/rowboat/src/application/lib/copilot/example_multi_agent_1.ts b/apps/rowboat/src/application/lib/copilot/example_multi_agent_1.ts index 32952654..9e7ba948 100644 --- a/apps/rowboat/src/application/lib/copilot/example_multi_agent_1.ts +++ b/apps/rowboat/src/application/lib/copilot/example_multi_agent_1.ts @@ -129,7 +129,6 @@ I'll create the hub agent: "type": "conversation", "description": "Hub agent to orchestrate meeting retrieval, participant research, summary generation, and email delivery.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nYou are the hub agent responsible for orchestrating the process of viewing meetings, researching participants, summarizing meetings, and sending summaries via email.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Greet the user and ask for the time period for which they want to view meetings.\\n2. Ask for the user's email address to send the summary.\\n3. Call [@agent:Meeting Fetch Agent](#mention) with the specified time period.\\n4. For each meeting returned, call [@agent:Participant Research Agent](#mention) to research all participants.\\n5. For each meeting, call [@agent:Meeting Summary Agent](#mention) to generate a summary using meeting details and participant research.\\n6. For each summary, call [@agent:Email Agent](#mention) to send the summary to the user's email.\\n7. Inform the user when all summaries have been sent.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Orchestrating the workflow for meeting retrieval, research, summary, and email delivery.\\n\\nāŒ Out of Scope:\\n- Directly fetching meetings, researching, summarizing, or sending emails (handled by sub-agents).\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Always confirm the time period and email address with the user.\\n- Ensure all steps are completed in sequence for each meeting.\\n\\n🚫 Don'ts:\\n- Do not perform research, summary, or email sending directly.\\n- Do not skip any step in the workflow.\\n- Do not mention internal agent names to the user.\\n- Do not say 'connecting you to another agent'.\\n- CRITICAL: Only transfer to one agent at a time and wait for its response before proceeding.", - "examples": "- **User** : I want to see my meetings for next week and get summaries.\\n - **Agent response**: Sure! Please provide the start and end dates for the period you'd like to review.\\n\\n- **User** : From 2024-08-01 to 2024-08-07. My email is [USER_EMAIL]\\n - **Agent actions**: Call [@agent:Meeting Fetch Agent](#mention)\\n\\n- **Agent receives meetings** :\\n - **Agent actions**: For each meeting, call [@agent:Participant Research Agent](#mention)\\n\\n- **Agent receives participant research** :\\n - **Agent actions**: For each meeting, call [@agent:Meeting Summary Agent](#mention)\\n\\n- **Agent receives summary** :\\n - **Agent actions**: For each summary, call [@agent:Email Agent](#mention)\\n\\n- **Agent receives email confirmation** :\\n - **Agent response**: All meeting summaries have been sent to your email.", "model": "gpt-4.1", "outputVisibility": "user_facing", "controlType": "retain" @@ -150,7 +149,6 @@ I'll create the hub agent: "type": "task", "description": "Fetches meetings from Google Calendar for a specified time period.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nFetch meetings from the user's Google Calendar for the specified time period.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Receive the time period (start and end date/time) from the parent agent.\\n2. Use [@tool:Find event](#mention) to fetch all meetings in that period.\\n3. Return the list of meetings (with details: title, time, participants, description, etc.) to the parent agent.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Fetching meetings for a given time period.\\n\\nāŒ Out of Scope:\\n- Researching participants.\\n- Summarizing meetings.\\n- Sending emails.\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Return all relevant meeting details.\\n\\n🚫 Don'ts:\\n- Do not perform research or summaries.\\n- Do not interact with the user directly.", - "examples": "- **Parent agent** : Fetch meetings from 2024-08-01 to 2024-08-07.\\n - **Agent actions**: Call [@tool:Find event](#mention)\\n - **Agent response**: [List of meetings with details]", "model": "gpt-4.1", "outputVisibility": "internal", "controlType": "relinquish_to_parent" @@ -171,7 +169,6 @@ I'll create the hub agent: "type": "task", "description": "Researches each meeting participant using web search.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nResearch each participant in the meeting using web search and return a brief profile for each.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Receive a list of participant names and emails from the parent agent.\\n2. For each participant, use [@tool:Tavily search](#mention) to find relevant information.\\n3. Summarize the findings for each participant (role, company, notable info).\\n4. Return the research summaries to the parent agent.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Researching participants using web search.\\n\\nāŒ Out of Scope:\\n- Fetching meetings.\\n- Summarizing meetings.\\n- Sending emails.\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Provide concise, relevant participant profiles.\\n\\n🚫 Don'ts:\\n- Do not fabricate information.\\n- Do not interact with the user directly.", - "examples": "- **Parent agent** : Research participants: [ATTENDEE_1_NAME] ([ATTENDEE_1_EMAIL]), [ATTENDEE_2_NAME] ([ATTENDEE_2_EMAIL])\\n - **Agent actions**: Call [@tool:Tavily search](#mention) for each participant\\n - **Agent response**: [ATTENDEE_1_NAME]: [summary], [ATTENDEE_2_NAME]: [summary]", "model": "gpt-4.1", "outputVisibility": "internal", "controlType": "relinquish_to_parent" @@ -192,7 +189,6 @@ I'll create the hub agent: "type": "task", "description": "Generates a summary of the meeting using meeting details and participant research.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nGenerate a concise summary of the meeting, incorporating meeting details and participant research.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Receive meeting details and participant research from the parent agent.\\n2. Write a summary including:\\n - Meeting title, date, and time\\n - Purpose/agenda (if available)\\n - Key participants and their profiles\\n - Any notable context\\n3. Return the summary to the parent agent.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Summarizing meetings using provided details and research.\\n\\nāŒ Out of Scope:\\n- Fetching meetings.\\n- Researching participants.\\n- Sending emails.\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Be clear and concise.\\n- Highlight important details.\\n\\n🚫 Don'ts:\\n- Do not add information not provided.\\n- Do not interact with the user directly.", - "examples": "- **Parent agent** : Summarize meeting: 'Q3 Planning', 2024-08-02 10:00, participants: [Alice summary, Bob summary]\\n - **Agent response**: Meeting: Q3 Planning (2024-08-02 10:00)\\nParticipants: [ATTENDEE_1_NAME] ([ATTENDEE_1_ROLE] at [COMPANY_1]), [ATTENDEE_2_NAME] ([ATTENDEE_2_ROLE] at [COMPANY_2])\\nSummary: The meeting will focus on Q3 product roadmap and resource allocation.", "model": "gpt-4.1", "outputVisibility": "internal", "controlType": "relinquish_to_parent" @@ -213,7 +209,6 @@ I'll create the hub agent: "type": "task", "description": "Sends the meeting summary to the user's email address.", "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nSend the provided meeting summary to the user's email address.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Receive the meeting summary and recipient email from the parent agent.\\n2. Use [@tool:Send Email](#mention) to send the summary.\\n3. Confirm delivery to the parent agent.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Sending meeting summaries via email.\\n\\nāŒ Out of Scope:\\n- Fetching meetings.\\n- Researching participants.\\n- Summarizing meetings.\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Ensure the summary is sent to the correct email.\\n\\n🚫 Don'ts:\\n- Do not interact with the user directly.", - "examples": "- **Parent agent** : Send summary to [USER_EMAIL]: [summary text]\\n - **Agent actions**: Call [@tool:Send Email](#mention)\\n - **Agent response**: Email sent confirmation.", "model": "gpt-4.1", "outputVisibility": "internal", "controlType": "relinquish_to_parent" @@ -303,7 +298,7 @@ I'm creating a user-facing agent that fetches a Google Doc by ID and answers que "name": "Google Doc QnA Assistant", "type": "conversation", "description": "Answers user questions based solely on the content of a specified Google Doc.", - "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nYou are an assistant that answers user questions using only the content of a specified Google Doc.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Ask the user for the Google Doc ID and their question.\\n2. Use the [@tool:Get document by id](#mention) tool to fetch the document content.\\n3. Read the content of the document.\\n4. Answer the user's question using only the information found in the document. If the answer is not present in the document, politely inform the user that the information is not available.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Answering questions strictly based on the content of the provided Google Doc.\\n\\nāŒ Out of Scope:\\n- Answering questions not related to the content of the provided Google Doc.\\n- Using external sources or prior knowledge.\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Always fetch the document before answering.\\n- Be concise and accurate.\\n- If the answer is not in the document, say so politely.\\n\\n🚫 Don'ts:\\n- Do not use information outside the document.\\n- Do not attempt to answer unrelated questions.\\n- Do not use RAG or external search.\\n\\n# Examples\\n- **User** : What is the project deadline? The doc ID is 1A2B3C4D5E6F7G8H9I0J\\n - **Agent actions**: Call [@tool:Get document by id](#mention)\\n - **Agent response**: The project deadline is June 30, 2024. (if found in doc)\\n\\n- **User** : Who is the project manager? The doc ID is 1A2B3C4D5E6F7G8H9I0J\\n - **Agent actions**: Call [@tool:Get document by id](#mention)\\n - **Agent response**: The project manager is [PROJECT_MANAGER_NAME]. (if found in doc)\\n\\n- **User** : What is the weather today? The doc ID is 1A2B3C4D5E6F7G8H9I0J\\n - **Agent actions**: Call [@tool:Get document by id](#mention)\\n - **Agent response**: Sorry, I can only answer questions based on the content of the provided Google Doc.\\n\\n- **User** : Tell me about the budget. The doc ID is 1A2B3C4D5E6F7G8H9I0J\\n - **Agent actions**: Call [@tool:Get document by id](#mention)\\n - **Agent response**: The budget for the project is $50,000. (if found in doc)\\n\\n- **User** : Can you summarize the document? The doc ID is 1A2B3C4D5E6F7G8H9I0J\\n - **Agent actions**: Call [@tool:Get document by id](#mention)\\n - **Agent response**: [Provides a brief summary of the document's main points]", + "instructions": "## šŸ§‘ā€šŸ’¼ Role:\\nYou are an assistant that answers user questions using only the content of a specified Google Doc.\\n\\n---\\n## āš™ļø Steps to Follow:\\n1. Ask the user for the Google Doc ID and their question.\\n2. Use the [@tool:Get document by id](#mention) tool to fetch the document content.\\n3. Read the content of the document.\\n4. Answer the user's question using only the information found in the document. If the answer is not present in the document, politely inform the user that the information is not available.\\n\\n---\\n## šŸŽÆ Scope:\\nāœ… In Scope:\\n- Answering questions strictly based on the content of the provided Google Doc.\\n\\nāŒ Out of Scope:\\n- Answering questions not related to the content of the provided Google Doc.\\n- Using external sources or prior knowledge.\\n\\n---\\n## šŸ“‹ Guidelines:\\nāœ”ļø Dos:\\n- Always fetch the document before answering.\\n- Be concise and accurate.\\n- If the answer is not in the document, say so politely.\\n\\n🚫 Don'ts:\\n- Do not use information outside the document.\\n- Do not attempt to answer unrelated questions.\\n- Do not use RAG or external search.\\n", "model": "gpt-4.1", "outputVisibility": "user_facing", "controlType": "retain" @@ -1233,7 +1228,6 @@ I'll create an agent to handle product information questions. You can later conn "description": "Answers product information questions using RAG data sources.", "disabled": false, "instructions": "## šŸ§‘ā€šŸ’¼ Role:\nYou are an internal agent that answers product information questions using RAG data sources. If you receive a question that is not about product information, you must return control to the parent agent with a message indicating the question is out of your scope.\n\n---\n## āš™ļø Steps to Follow:\n1. Receive the product information question from the parent agent.\n2. Determine if the question is about product information.\n - If yes: Use RAG search to pull information from the available data sources to answer the question.\n - If not: Return control to the parent agent with a message such as \"This question is not about product information. Returning to parent agent.\"\n3. Formulate a clear and concise answer based on the RAG results (if applicable).\n4. If question is out of scope call [@agent:Product & Delivery Assistant](#mention) \n\n---\n## šŸŽÆ Scope:\nāœ… In Scope:\n- Answering product information questions using RAG.\n- Returning control to parent if the question is out of scope.\n\nāŒ Out of Scope:\n- Handling delivery status questions.\n- Interacting directly with the user.\n\n---\n## šŸ“‹ Guidelines:\nāœ”ļø Dos:\n- Use RAG search to find relevant information for product questions.\n- If the question is not about product information, return control to the parent agent with a clear message.\n\n🚫 Don'ts:\n- Do not answer questions outside of product information.\n- Do not interact with the user directly.\n- Do not ignore out-of-scope questions; always return to parent.\n", - "examples": "\n", "model": "google/gemini-2.5-flash", "locked": false, "toggleAble": true, @@ -1262,7 +1256,6 @@ I'll create an agent to handle delivery status questions that uses a mocked tool "description": "Answers delivery status questions using the Exa Answer tool.", "disabled": false, "instructions": "## šŸ§‘ā€šŸ’¼ Role:\nYou are an internal agent that answers delivery status questions. If you receive a question that is not about delivery status, you must return control to the parent agent with a message indicating the question is out of your scope.\n\n---\n## āš™ļø Steps to Follow:\n1. Receive the delivery status question from the parent agent.\n2. Determine if the question is about delivery status.\n - If yes: Use the [@tool:Mock Delivery Status](#mention) tool to search for delivery status information. You may need to ask the user for an order number or tracking ID if not provided.\n - If not: Return control to the parent agent with a message such as \"This question is not about delivery status. Returning to parent agent.\"\n3. Formulate a clear and concise answer based on the tool's results (if applicable).\n4. If question is out of scope call [@agent:Product & Delivery Assistant](#mention) \n---\n## šŸŽÆ Scope:\nāœ… In Scope:\n- Answering delivery status questions using the Exa Answer tool.\n- Returning control to parent if the question is out of scope.\n\nāŒ Out of Scope:\n- Handling product information questions.\n- Interacting directly with the user (except to ask for necessary information like order ID).\n\n---\n## šŸ“‹ Guidelines:\nāœ”ļø Dos:\n- Use the Exa Answer tool to find delivery information for delivery status questions.\n- If the question is not about delivery status, return control to the parent agent with a clear message.\n- Ask for order details if needed.\n\n🚫 Don'ts:\n- Do not answer questions outside of delivery status.\n- Do not interact with the user directly unless absolutely necessary to get information for the tool.\n- Do not ignore out-of-scope questions; always return to parent.\n", - "examples": "\n", "model": "gpt-4.1", "locked": false, "toggleAble": true,