GenAiPlannerBundle

Represents a planner for an agent or agent template. It’s a container for all the topics and actions used to interact with a large language model (LLM).

Parent Type 

This type extends Metadata and inherits its fields.

File Suffix and Directory Location 

GenAiPlannerBundle components have the suffix .genAiPlannerBundle and are stored in a subfolder for the agent in the genAiPlannerBundles folder.

Version 

Introduced in API version 64.0.

GenAiPlannerBundle replaces GenAiPlanner, which is available in API version 63.0 and earlier.

Special Access Rules 

GenAiPlannerBundle is available only if Agents is enabled in your org.

Fields 

agentGraph 

  • Type: string
  • Required: No

agentGraphRef 

  • Type: string
  • Required: No

agentScript 

  • Type: string
  • Required: No

attributeMappings 

botTemplate 

  • Type: string
  • Required: No
  • Description: If this planner is used by an agent template instead of an agent, this field is the template associated with the planner.

capabilities 

  • Type: string
  • Required: No
  • Description: A set of tags associated with the agent.

description 

  • Type: string
  • Required: No
  • Description: A description explaining the general purpose and domain of the agent.

genAiFunctions 

  • Type: GenAiPlannerFunctionDef[]
  • Required: No
  • Description: A list of agent action definitions, such as a knowledge action, that are not contained in a topic.

genAiPlugins 

localActionLinks 

localTopicLinks 

localTopics 

masterLabel 

  • Type: string
  • Required: Yes
  • Description: Required. The master label for the planner.

plannerActions 

plannerSurfaces 

plannerType 

  • Type: PlannerType (enumeration of type string)

  • Required: Yes

  • Description: Required. A particular approach to problem solving that is given as prompt instructions to a large language model (LLM).

    The supported values are:

  • Possible values:

    • AiCopilot__AgileAppDev — Uses an iterative development strategy to assist with building applications using the LLM. This strategy prompts the LLM to generate modular, testable components based on evolving user input and context. Unlike linear workflows, it supports continuous refinement and feedback loops throughout the development process.
    • AiCopilot__ReAct — Uses a reactive reasoning strategy to solve problems with the LLM. This strategy consists of prompting the LLM to generate the next step in response to an event and the current context. It differs from a sequential reasoning engine in that it doesn’t plan more than one step ahead of time.
    • Atlas__ConcurrentMultiAgentOrchestration — Uses a unified orchestration strategy to solve problems with the LLM across text and voice agent interactions. This strategy prompts the LLM to plan and execute multiple steps concurrently, coordinating across sub-agents and tools. Unlike single-step reactive strategies, it supports parallel tool calling and multi-agent coordination within a single interaction.

ruleExpressionAssignments 

ruleExpressions 

voiceDefinition 

AiPlannerSurfaceDef Type 

Fields 

adaptiveResponseAllowed 

  • Type: boolean
  • Required: No

callRecordingAllowed 

  • Type: boolean
  • Required: No

outboundRouteConfigs 

surface 

  • Type: string
  • Required: Yes

surfaceType 

  • Type: SurfaceType (enumeration of type string)
  • Required: Yes

AiPlannerSurfOtbdRouteDef Type 

Fields 

escalationMessage 

  • Type: string
  • Required: No

outboundRouteName 

  • Type: string
  • Required: Yes

outboundRouteType 

  • Type: OutboundRouteType (enumeration of type string)
  • Required: Yes

AiPlannerVoiceAvatarDef Type 

Parent Type 

This type extends Metadata and inherits its fields.

Fields 

context 

  • Type: string
  • Required: No

developerName 

  • Type: string
  • Required: No
  • Description: The unique developer name of this component. Used as an API reference and must follow Salesforce identifier rules.

imageUrl 

  • Type: string
  • Required: No

label 

  • Type: string
  • Required: No
  • Description: The label that identifies this component in the Salesforce UI and in metadata listings. Character limits and translation behavior follow the enclosing type.

replicaKey 

  • Type: AvatarReplicaKeyType (enumeration of type string)
  • Required: No

GenAiLocalPlugin Type 

Represents a custom agent topic.

Fields 

aiPluginUtterances 

  • Type: AiPluginUtteranceDef[]
  • Required: No
  • Description: A list of utterances that can be used to pick a topic during runtime.

canEscalate 

  • Type: boolean
  • Required: No
  • Description: Determines whether this topic is applicable for escalation to a rep.

description 

  • Type: string

  • Required: Yes

  • Description: Required.

    The description of the topic.

genAiFunctions 

genAiPluginInstructions 

language 

  • Type: string

  • Required: Yes

  • Description: Required.

    The language of the topic.

localDeveloperName 

  • Type: string
  • Required: No

masterLabel 

  • Type: string

  • Required: Yes

  • Description: Required.

    The master label for the topic.

name 

  • Type: string

  • Required: Yes

  • Description: Required.

    Represents the API name of the topic. This name must be unique across all custom and customized topics. Can contain only underscores and alphanumeric characters and must be unique in your org. It must begin with a letter, not include spaces, not end with an underscore, and not contain two consecutive underscores.

pluginType 

  • Type: PluginType (enumeration of type string)

  • Required: Yes

  • Description: Required.

    Values are:

  • Possible values:

    • Topic
    • APICustomTopic

scope 

  • Type: string
  • Required: No
  • Description: A specific job description for a topic.

GenAiPlannerAttrMapping Type 

Represents an attribute mapping, which enables you to map the output of one action attribute to the input of another attribute. This mapping enables you to propagate sensitive data safely without relying on untrusted user input.

Fields 

attributeName 

  • Type: string
  • Required: Yes
  • Description: Required. The attribute name in the format: Namespace.TopicName.ActionName.AttributeName.

attributeType 

  • Type: AttributeType (enumeration of type string)
  • Required: Yes
  • Description: Required. The attribute type. Values are:
  • Possible values:
    • CustomPluginFunctionAttribute — Map to a custom action input or output
    • StandardPluginFunctionInput — Map to a standard action input
    • StandardPluginFunctionOutput — Map output to a variable

constantValue 

  • Type: string
  • Required: No
  • Description: Reserved for future use.

mappingTargetName 

  • Type: string
  • Required: No
  • Description: The target name for the attribute mapping.

mappingType 

  • Type: AttributeMappingType (enumeration of type string)
  • Required: Yes
  • Description: Required. The target type. Values are:
  • Possible values:
    • ActionAttribute
    • Constant
    • Variable
    • ContextVariable

GenAiPlannerFunctionDef Type 

Represents an agent topic or action definition.

Fields 

genAiCustomizedPlugin 

  • Type: GenAiLocalPlugin
  • Required: No
  • Description: A list of custom agent topics.

genAiFunctionName 

  • Type: string
  • Required: No
  • Description: The name of the agent action.

genAiPluginName 

  • Type: string
  • Required: No
  • Description: The name of the agent topic.

GenAiPlannerRuleExprAsgn Type 

Represents a rule-expression assignment to either a topic or an action.

Fields 

ruleExpressionName 

  • Type: string
  • Required: Yes
  • Description: Required. The name of the rule expression.

targetName 

  • Type: string
  • Required: Yes
  • Description: Required. The target of the assignment, which is a Namespace.TopicName.ActionName or a TopicName.

targetType 

  • Type: string (enumeration of type string)
  • Required: Yes
  • Description: Required. The type of the target. Values are:
  • Possible values:
    • Function — A knowledge action
    • Plugin — A topic
    • PluginFunction — An action in a topic

GenAiPlannerRuleExprCondition Type 

Represents a condition for a rule expression.

Fields 

leftOperand 

  • Type: string
  • Required: Yes
  • Description: Required. The left operand in the expression.

leftOperandType 

  • Type: GenAiAgentVariableType (enumeration of type string)
  • Required: Yes
  • Description: Required. The type for the left operand. Values are:
  • Possible values:
    • Variable
    • ContextVariable
    • Attribute

operator 

  • Type: GenAiRuleExpressionOperator (enumeration of type string)
  • Required: Yes
  • Description: Required. The operator in the expression. Values are:
  • Possible values:
    • equal
    • greaterThan
    • greaterThanOrEqual
    • lessThan
    • lessThanOrEqual
    • notEqual
    • isEmpty
    • isNotEmpty

rightOperandValue 

  • Type: string
  • Required: No
  • Description: The value for the right operand.

GenAiPlannerRuleExprDef Type 

Represents a rule expression, which conditionally locks or unlocks topics and actions based on defined security criteria.

Fields 

conditions 

expression 

  • Type: string
  • Required: No
  • Description: An expression with the combined conditions.

expressionLabel 

  • Type: string
  • Required: Yes
  • Description: Required. The expression label.

expressionName 

  • Type: string
  • Required: Yes
  • Description: Required. The expression name.

expressionType 

  • Type: ExpressionType (enumeration of type string)
  • Required: No
  • Description: The expression type. Values are:
  • Possible values:
    • handlebars — Reserved for future use
    • sel — Salesforce Expression Language, as used in formula fields

Declarative Metadata Sample Definition 

Here’s an example of a GenAiPlannerBundle component.

1<?xml version="1.0" encoding="UTF-8"?>
2<GenAiPlannerBundle xmlns="http://soap.sforce.com/2006/04/metadata">
3    <attributeMappings>
4        attributeName>SvcCopilotTmpl__CaseManagement.SvcCopilotTmpl__CreateCaseEnhancedData.verifiedCustomerID</attributeName>
5        <attributeType>StandardPluginFunctionInput</attributeType>
6        <mappingTargetName>VerifiedCustomerId</mappingTargetName>
7        <mappingType>Variable</mappingType>
8    </attributeMappings>
9    <attributeMappings>
10        <attributeName>SvcCopilotTmpl__CaseManagement.SvcCopilotTmpl__GetCasesForVerifiedContact.verifiedContactID</attributeName>
11        <attributeType>StandardPluginFunctionInput</attributeType>
12        <mappingTargetName>VerifiedCustomerId</mappingTargetName>
13        <mappingType>Variable</mappingType>
14    </attributeMappings>
15    <attributeMappings>
16        <attributeName>SvcCopilotTmpl__CaseManagement.SvcCopilotTmpl__GetCaseByVerifiedCaseNumber.verifiedContactID</attributeName>
17        <attributeType>StandardPluginFunctionInput</attributeType>
18        <mappingTargetName>VerifiedCustomerId</mappingTargetName>
19        <mappingType>Variable</mappingType>
20    </attributeMappings>
21    <attributeMappings>
22        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__SendEmailVerificationCode.authenticationKey</attributeName>
23        <attributeType>StandardPluginFunctionOutput</attributeType>
24        <mappingTargetName>authenticationKey</mappingTargetName>
25        <mappingType>Variable</mappingType>
26    </attributeMappings>
27    <attributeMappings>
28        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__SendEmailVerificationCode.customerId</attributeName>
29        <attributeType>StandardPluginFunctionOutput</attributeType>
30        <mappingTargetName>customerId</mappingTargetName>
31        <mappingType>Variable</mappingType>
32    </attributeMappings>
33    <attributeMappings>
34        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__SendEmailVerificationCode.customerType</attributeName>
35        <attributeType>StandardPluginFunctionOutput</attributeType>
36        <mappingTargetName>customerType</mappingTargetName>
37        <mappingType>Variable</mappingType>
38    </attributeMappings>
39    <attributeMappings>
40        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.authenticationKey</attributeName>
41        <attributeType>StandardPluginFunctionInput</attributeType>
42        <mappingTargetName>authenticationKey</mappingTargetName>
43        <mappingType>Variable</mappingType>
44    </attributeMappings>
45    <attributeMappings>
46        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.customerId</attributeName>
47        <attributeType>StandardPluginFunctionInput</attributeType>
48        <mappingTargetName>customerId</mappingTargetName>
49        <mappingType>Variable</mappingType>
50    </attributeMappings>
51    <attributeMappings>
52        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.customerType</attributeName>
53        <attributeType>StandardPluginFunctionInput</attributeType>
54        <mappingTargetName>customerType</mappingTargetName>
55        <mappingType>Variable</mappingType>
56    </attributeMappings>
57    <attributeMappings>
58        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.isVerified</attributeName>
59        <attributeType>StandardPluginFunctionOutput</attributeType>
60        <mappingTargetName>isVerified</mappingTargetName>
61        <mappingType>Variable</mappingType>
62    </attributeMappings>
63    <attributeMappings>
64        <attributeName>SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.customerId</attributeName>
65        <attributeType>StandardPluginFunctionOutput</attributeType>
66        <mappingTargetName>VerifiedCustomerId</mappingTargetName>
67        <mappingType>Variable</mappingType>
68    </attributeMappings>
69    <attributeMappings>
70        <attributeName>SvcCopilotTmpl__AccountManagement.SvcCopilotTmpl__ResetSecurePassword.verifiedContactID</attributeName>
71        <attributeType>StandardPluginFunctionInput</attributeType>
72        <mappingTargetName>VerifiedCustomerId</mappingTargetName>
73        <mappingType>Variable</mappingType>
74    </attributeMappings>
75    <attributeMappings>
76        <attributeName>SvcCopilotTmpl__AccountManagement.SvcCopilotTmpl__UpdateVerifiedContact.verifiedContactID</attributeName>
77        <attributeType>StandardPluginFunctionInput</attributeType>
78        <mappingTargetName>VerifiedCustomerId</mappingTargetName>
79        <mappingType>Variable</mappingType>
80    </attributeMappings>
81    <description>Deliver personalized customer interactions with an autonomous AI agent. Agentforce Service Agent intelligently supports your customers with common inquiries and escalates complex issues.</description>
82    <genAiFunctions>
83        <genAiFunctionName>EmployeeCopilot__AnswerQuestionsWithKnowledge</genAiFunctionName>
84    </genAiFunctions>
85    <genAiPlugins>
86        <genAiPluginName>SvcCopilotTmpl__AccountManagement</genAiPluginName>
87    </genAiPlugins>
88    <genAiPlugins>
89        <genAiPluginName>SvcCopilotTmpl__CaseManagement</genAiPluginName>
90    </genAiPlugins>
91    <genAiPlugins>
92        <genAiPluginName>SvcCopilotTmpl__Escalation</genAiPluginName>
93    </genAiPlugins>
94    <genAiPlugins>
95        <genAiPluginName>SvcCopilotTmpl__GeneralFAQ</genAiPluginName>
96    </genAiPlugins>
97    <genAiPlugins>
98        <genAiPluginName>SvcCopilotTmpl__ServiceCustomerVerification</genAiPluginName>
99    </genAiPlugins>
100    <masterLabel>ASA Template Base</masterLabel>
101    <plannerType>AiCopilot__ReAct</plannerType>
102    <ruleExpressionAssignments>
103        <ruleExpressionName>Verified_User</ruleExpressionName>
104        <targetName>SvcCopilotTmpl__AccountManagement</targetName>
105        <targetType>Plugin</targetType>
106    </ruleExpressionAssignments>
107    <ruleExpressionAssignments>
108        <ruleExpressionName>Verified_User</ruleExpressionName>
109        <targetName>SvcCopilotTmpl__CaseManagement</targetName>
110        <targetType>Plugin</targetType>
111    </ruleExpressionAssignments>
112    <ruleExpressions>
113        <conditions>
114            <leftOperand>isVerified</leftOperand>
115            <leftOperandType>Variable</leftOperandType>
116            <operator>equal</operator>
117            <rightOperandValue>true</rightOperandValue>
118        </conditions>
119        <expression>Verified_User</expression>
120        <expressionLabel>Verified User</expressionLabel>
121        <expressionName>Verified_User</expressionName>
122        <expressionType>sel</expressionType>
123    </ruleExpressions>
124</GenAiPlannerBundle>

The following is an example package.xml that references the previous definition.

1<?xml version="1.0" encoding="UTF-8"?>
2<Package xmlns="http://soap.sforce.com/2006/04/metadata">
3   <types>
4      <members>*</members>
5      <name>GenAiPlannerBundle</name>
6   </types>
7   <version>64.0</version>
8</Package>

Usage 

In Winter ‘26 orgs and later, use GenAiPlannerBundle to retrieve topics and actions created in an agent. To retrieve global topics and actions, or those created in the Asset Library, use GenAiPlugin and GenAiFunction.

In Summer ‘25 orgs and earlier, deploy topic and action metadata using GenAiPlugin and GenAiFunction.

When deploying topic or action metadata to a Summer ‘25 (version 64.0) org, retrieve the metadata using Metadata API version 64.0, even if your source org is Winter ‘26 or later (version 65.0). For Winter `26 and later, use Metadata API version 65.0 and later.

Wildcard Support in the Manifest File 

This metadata type supports the wildcard character * (asterisk) in the package.xml manifest file. For information about using the manifest file, see Deploying and Retrieving Metadata with the Zip File.