@salesforce/plugin-agent 1.11.1 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -62,9 +62,7 @@ sf plugins
62
62
  <!-- commands -->
63
63
 
64
64
  - [`sf agent create`](#sf-agent-create)
65
- - [`sf agent create-v2`](#sf-agent-create-v2)
66
- - [`sf agent generate spec`](#sf-agent-generate-spec)
67
- - [`sf agent generate spec-v2`](#sf-agent-generate-spec-v2)
65
+ - [`sf agent generate agent-spec`](#sf-agent-generate-agent-spec)
68
66
  - [`sf agent generate test-spec`](#sf-agent-generate-test-spec)
69
67
  - [`sf agent preview`](#sf-agent-preview)
70
68
  - [`sf agent test cancel`](#sf-agent-test-cancel)
@@ -76,54 +74,12 @@ sf plugins
76
74
 
77
75
  ## `sf agent create`
78
76
 
79
- Create an agent in your org from a local agent spec file.
80
-
81
- ```
82
- USAGE
83
- $ sf agent create -o <value> -f <value> -n <value> [--json] [--flags-dir <value>] [--api-version <value>]
84
-
85
- FLAGS
86
- -f, --spec=<value> (required) Path to an agent spec file.
87
- -n, --name=<value> (required) API name of the new agent.
88
- -o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
89
- configuration variable is already set.
90
- --api-version=<value> Override the api version used for api requests made by this command
91
-
92
- GLOBAL FLAGS
93
- --flags-dir=<value> Import flag values from a directory.
94
- --json Format output as json.
95
-
96
- DESCRIPTION
97
- Create an agent in your org from a local agent spec file.
98
-
99
- To generate an agent spec file, run the "agent generate spec" CLI command, which outputs a JSON file with the list of
100
- jobs and descriptions that the new agent can perform. Then specify this generated spec file to the --spec flag of this
101
- command, along with the name of the new agent.
102
-
103
- When this command finishes, your org contains the new agent, which you can then edit in the Agent Builder UI. The new
104
- agent already has a list of topics and actions that were automatically created from the list of jobs in the provided
105
- agent spec file. This command also retrieves all the metadata files associated with the new agent to your local DX
106
- project.
107
-
108
- To open the new agent in your org's Agent Builder UI, run this command: "sf org open agent --name
109
- <api-name-of-your-agent>".
110
-
111
- EXAMPLES
112
- Create an agent called "CustomerSupportAgent" in an org with alias "my-org" using the specified agent spec file:
113
-
114
- $ sf agent create --name CustomerSupportAgent --spec ./config/agentSpec.json --target-org my-org
115
- ```
116
-
117
- _See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/create.ts)_
118
-
119
- ## `sf agent create-v2`
120
-
121
77
  Create an agent in your org using a local agent spec file.
122
78
 
123
79
  ```
124
80
  USAGE
125
- $ sf agent create-v2 -o <value> --spec <value> [--json] [--flags-dir <value>] [--api-version <value>] [--agent-name
126
- <value>] [--preview] [--agent-api-name <value>]
81
+ $ sf agent create -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [--agent-name <value>]
82
+ [--agent-api-name <value>] [--spec <value>] [--preview]
127
83
 
128
84
  FLAGS
129
85
  -o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
@@ -133,7 +89,7 @@ FLAGS
133
89
  --agent-name=<value> Name (label) of the new agent.
134
90
  --api-version=<value> Override the api version used for api requests made by this command
135
91
  --preview Preview the agent without saving it in your org.
136
- --spec=<value> (required) Path to an agent spec file.
92
+ --spec=<value> Path to an agent spec file.
137
93
 
138
94
  GLOBAL FLAGS
139
95
  --flags-dir=<value> Import flag values from a directory.
@@ -161,92 +117,30 @@ DESCRIPTION
161
117
  EXAMPLES
162
118
  Create an agent called "ResortManager" in an org with alias "my-org" using the specified agent spec file:
163
119
 
164
- $ sf agent create-v2 --agent-name ResortManager --spec specs/resortManagerAgent.yaml --target-org my-org
120
+ $ sf agent create --agent-name ResortManager --spec specs/resortManagerAgent.yaml --target-org my-org
165
121
 
166
122
  Preview the creation of an agent called "ResortManager" and use your default org:
167
123
 
168
- $ sf agent create-v2 --agent-name ResortManager --spec specs/resortManagerAgent.yaml --preview
124
+ $ sf agent create --agent-name ResortManager --spec specs/resortManagerAgent.yaml --preview
169
125
  ```
170
126
 
171
- _See code: [src/commands/agent/create-v2.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/create-v2.ts)_
127
+ _See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/create.ts)_
172
128
 
173
- ## `sf agent generate spec`
174
-
175
- Generate an agent spec, which is the list of jobs that the agent performs.
176
-
177
- ```
178
- USAGE
179
- $ sf agent generate spec -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [-t customer|internal]
180
- [--role <value>] [--company-name <value>] [--company-description <value>] [--company-website <value>] [-d <value>]
181
- [-f <value>]
182
-
183
- FLAGS
184
- -d, --output-dir=<value> [default: config] Directory where the agent spec file is written; can be an
185
- absolute or relative path.
186
- -f, --file-name=<value> [default: agentSpec.json] Name of the generated agent spec file.
187
- -o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
188
- configuration variable is already set.
189
- -t, --type=<option> Type of agent to create.
190
- <options: customer|internal>
191
- --api-version=<value> Override the api version used for api requests made by this command
192
- --company-description=<value> Description of your company.
193
- --company-name=<value> Name of your company.
194
- --company-website=<value> Website URL of your company.
195
- --role=<value> Role of the agent.
196
-
197
- GLOBAL FLAGS
198
- --flags-dir=<value> Import flag values from a directory.
199
- --json Format output as json.
200
-
201
- DESCRIPTION
202
- Generate an agent spec, which is the list of jobs that the agent performs.
203
-
204
- When using Salesforce CLI to create an agent in your org, the first step is to generate the local JSON-formatted agent
205
- spec file with this command.
206
-
207
- An agent spec is a list of jobs and descriptions that capture what the agent can do. Use flags such as --role and
208
- --company-description to provide details about your company and the role that the agent plays in your company; you can
209
- also enter the information interactively if you prefer. When you then execute this command, the large language model
210
- (LLM) associated with your org uses the information to generate the list of jobs that the agent most likely performs.
211
- We recommend that you provide good details for --role, --company-description, etc, so that the LLM can generate the
212
- best and most relevant list of jobs and descriptions. Once generated, you can edit the spec file; for example, you can
213
- remove jobs that don't apply to your agent.
214
-
215
- When your agent spec is ready, you then create the agent in your org by specifying the agent spec file to the
216
- --job-spec flag of the "agent create" CLI command.
217
-
218
- EXAMPLES
219
- Create an agent spec for your default org in the default location and use flags to specify the agent's role and your
220
- company details:
221
-
222
- $ sf agent generate spec --type customer --role "Assist users in navigating and managing bookings" \
223
- --company-name "Coral Cloud" --company-description "Resort that manages guests and their reservations and \
224
- experiences"
225
-
226
- Create an agent spec by being prompted for role and company details interactively; write the generated file to the
227
- "specs" directory and use the org with alias "my-org":
228
-
229
- $ sf agent generate spec --output-dir specs --target-org my-org
230
- ```
231
-
232
- _See code: [src/commands/agent/generate/spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/generate/spec.ts)_
233
-
234
- ## `sf agent generate spec-v2`
129
+ ## `sf agent generate agent-spec`
235
130
 
236
131
  Generate an agent spec, which is a YAML file that captures what an agent can do.
237
132
 
238
133
  ```
239
134
  USAGE
240
- $ sf agent generate spec-v2 -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [-t customer|internal]
135
+ $ sf agent generate agent-spec -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [--type customer|internal]
241
136
  [--role <value>] [--company-name <value>] [--company-description <value>] [--company-website <value>] [--max-topics
242
137
  <value>] [--agent-user <value>] [--enrich-logs true|false] [--tone formal|casual|neutral] [--spec <value>]
243
- [--output-file <value>] [--full-interview] [--grounding-context <value> --prompt-template <value>] [--no-prompt]
138
+ [--output-file <value>] [--full-interview] [--grounding-context <value> --prompt-template <value>] [-p]
244
139
 
245
140
  FLAGS
246
141
  -o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
247
142
  configuration variable is already set.
248
- -t, --type=<option> Type of agent to create.
249
- <options: customer|internal>
143
+ -p, --no-prompt Don't prompt the user to confirm spec file overwrite.
250
144
  --agent-user=<value> Username of a user in your org to assign to your agent; determines what your agent
251
145
  can access and do.
252
146
  --api-version=<value> Override the api version used for api requests made by this command
@@ -260,9 +154,8 @@ FLAGS
260
154
  --grounding-context=<value> Context information and personalization that's added to your prompts when using a
261
155
  custom prompt template.
262
156
  --max-topics=<value> Maximum number of topics to generate in the agent spec; default is 10.
263
- --no-prompt Don't prompt the user to confirm spec file overwrite.
264
- --output-file=<value> [default: config/agentSpec.yaml] Path for the generated YAML agent spec file; can
265
- be an absolute or relative path.
157
+ --output-file=<value> [default: specs/agentSpec.yaml] Path for the generated YAML agent spec file; can be
158
+ an absolute or relative path.
266
159
  --prompt-template=<value> API name of a customized prompt template to use instead of the default prompt
267
160
  template.
268
161
  --role=<value> Role of the agent.
@@ -270,6 +163,8 @@ FLAGS
270
163
  --tone=<option> Conversational style of the agent, such as how it expresses your brand personality
271
164
  in its messages through word choice, punctuation, and sentence structure.
272
165
  <options: formal|casual|neutral>
166
+ --type=<option> Type of agent to create.
167
+ <options: customer|internal>
273
168
 
274
169
  GLOBAL FLAGS
275
170
  --flags-dir=<value> Import flag values from a directory.
@@ -305,24 +200,24 @@ EXAMPLES
305
200
  Generate an agent spec in the default location and use flags to specify the agent properties, such as its role and
306
201
  your company details; use your default org:
307
202
 
308
- $ sf agent generate spec-v2 --type customer --role "Field customer complaints and manage employee schedules." \
203
+ $ sf agent generate agent-spec --type customer --role "Field customer complaints and manage employee schedules." \
309
204
  --company-name "Coral Cloud Resorts" --company-description "Provide customers with exceptional destination \
310
205
  activities, unforgettable experiences, and reservation services."
311
206
 
312
207
  Generate an agent spec by being prompted for the required agent properties and generate a maxiumum of 5 topics;
313
208
  write the generated file to the "specs/resortManagerSpec.yaml" file and use the org with alias "my-org":
314
209
 
315
- $ sf agent generate spec-v2 --max-topics 5 --output-file specs/resortManagerAgent.yaml --target-org my-org
210
+ $ sf agent generate agent-spec --max-topics 5 --output-file specs/resortManagerAgent.yaml --target-org my-org
316
211
 
317
212
  Specify an existing agent spec file called "specs/resortManagerAgent.yaml", and then overwrite it with a new version
318
213
  that contains newly AI-generated topics based on the updated role information passed in with the --role flag:
319
214
 
320
- $ sf agent generate spec-v2 --spec specs/resortManagerAgent.yaml --output-file specs/resortManagerAgent.yaml \
215
+ $ sf agent generate agent-spec --spec specs/resortManagerAgent.yaml --output-file specs/resortManagerAgent.yaml \
321
216
  --role "Field customer complaints, manage employee schedules, and ensure all resort operations are running \
322
217
  smoothly" --target-org my-org
323
218
  ```
324
219
 
325
- _See code: [src/commands/agent/generate/spec-v2.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/generate/spec-v2.ts)_
220
+ _See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/generate/agent-spec.ts)_
326
221
 
327
222
  ## `sf agent generate test-spec`
328
223
 
@@ -345,7 +240,7 @@ EXAMPLES
345
240
  $ sf agent generate test-spec
346
241
  ```
347
242
 
348
- _See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/generate/test-spec.ts)_
243
+ _See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/generate/test-spec.ts)_
349
244
 
350
245
  ## `sf agent preview`
351
246
 
@@ -380,7 +275,7 @@ FLAG DESCRIPTIONS
380
275
  the API name of the agent? (TBD based on agents library)
381
276
  ```
382
277
 
383
- _See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/preview.ts)_
278
+ _See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/preview.ts)_
384
279
 
385
280
  ## `sf agent test cancel`
386
281
 
@@ -417,7 +312,7 @@ EXAMPLES
417
312
  $ sf agent test cancel --job-id 4KBfake0000003F4AQ --target-org my-org
418
313
  ```
419
314
 
420
- _See code: [src/commands/agent/test/cancel.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/test/cancel.ts)_
315
+ _See code: [src/commands/agent/test/cancel.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/test/cancel.ts)_
421
316
 
422
317
  ## `sf agent test create`
423
318
 
@@ -453,7 +348,7 @@ FLAG DESCRIPTIONS
453
348
  More information about a flag. Don't repeat the summary.
454
349
  ```
455
350
 
456
- _See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/test/create.ts)_
351
+ _See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/test/create.ts)_
457
352
 
458
353
  ## `sf agent test list`
459
354
 
@@ -482,7 +377,7 @@ EXAMPLES
482
377
  $ sf agent test list
483
378
  ```
484
379
 
485
- _See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/test/list.ts)_
380
+ _See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/test/list.ts)_
486
381
 
487
382
  ## `sf agent test results`
488
383
 
@@ -538,7 +433,7 @@ FLAG DESCRIPTIONS
538
433
  test results aren't written.
539
434
  ```
540
435
 
541
- _See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/test/results.ts)_
436
+ _See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/test/results.ts)_
542
437
 
543
438
  ## `sf agent test resume`
544
439
 
@@ -601,7 +496,7 @@ FLAG DESCRIPTIONS
601
496
  test results aren't written.
602
497
  ```
603
498
 
604
- _See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/test/resume.ts)_
499
+ _See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/test/resume.ts)_
605
500
 
606
501
  ## `sf agent test run`
607
502
 
@@ -664,6 +559,6 @@ FLAG DESCRIPTIONS
664
559
  test results aren't written.
665
560
  ```
666
561
 
667
- _See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.11.1/src/commands/agent/test/run.ts)_
562
+ _See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.13.0/src/commands/agent/test/run.ts)_
668
563
 
669
564
  <!-- commandsstop -->
@@ -1,7 +1,7 @@
1
1
  import { SfCommand } from '@salesforce/sf-plugins-core';
2
- export type AgentCreateResult = {
3
- isSuccess: boolean;
4
- errorMessage?: string;
2
+ import { AgentCreateResponseV2 } from '@salesforce/agents';
3
+ export type AgentCreateResult = AgentCreateResponseV2 & {
4
+ previewFilePath?: string;
5
5
  };
6
6
  export default class AgentCreate extends SfCommand<AgentCreateResult> {
7
7
  static readonly summary: string;
@@ -10,10 +10,13 @@ export default class AgentCreate extends SfCommand<AgentCreateResult> {
10
10
  static readonly requiresProject = true;
11
11
  static state: string;
12
12
  static readonly flags: {
13
+ preview: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ 'planner-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ spec: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ "agent-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ "agent-api-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
18
  'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
14
19
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
- spec: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
16
- name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
20
  };
18
21
  run(): Promise<AgentCreateResult>;
19
22
  }
@@ -4,14 +4,59 @@
4
4
  * Licensed under the BSD 3-Clause license.
5
5
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
6
  */
7
- import * as fs from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
9
+ import YAML from 'yaml';
8
10
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
9
11
  import { Lifecycle, Messages } from '@salesforce/core';
10
12
  import { MultiStageOutput } from '@oclif/multi-stage-output';
13
+ import { input as inquirerInput } from '@inquirer/prompts';
11
14
  import { colorize } from '@oclif/core/ux';
12
- import { Agent, AgentCreateLifecycleStages } from '@salesforce/agents';
15
+ import { Agent, AgentCreateLifecycleStagesV2, generateAgentApiName, } from '@salesforce/agents';
16
+ import { makeFlags, promptForFlag, validateAgentType } from '../../flags.js';
17
+ import { theme } from '../../inquirer-theme.js';
13
18
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
14
19
  const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.create');
20
+ const MSO_STAGES = {
21
+ parse: 'Parsing Agent spec',
22
+ preview: 'Creating Agent for preview',
23
+ create: 'Creating Agent in org',
24
+ retrieve: 'Retrieving Agent metadata',
25
+ };
26
+ const FLAGGABLE_PROMPTS = {
27
+ 'agent-name': {
28
+ message: messages.getMessage('flags.agent-name.summary'),
29
+ validate: (d) => d.length > 0 || 'Agent Name cannot be empty',
30
+ required: true,
31
+ },
32
+ 'agent-api-name': {
33
+ message: messages.getMessage('flags.agent-api-name.summary'),
34
+ validate: (d) => {
35
+ if (d.length === 0) {
36
+ return true;
37
+ }
38
+ if (d.length > 80) {
39
+ return 'API name cannot be over 80 characters.';
40
+ }
41
+ const regex = /^[A-Za-z][A-Za-z0-9_]*[A-Za-z0-9]+$/;
42
+ if (!regex.test(d)) {
43
+ return 'Invalid API name.';
44
+ }
45
+ return true;
46
+ },
47
+ },
48
+ spec: {
49
+ message: messages.getMessage('flags.spec.summary'),
50
+ validate: (d) => {
51
+ const specPath = resolve(d);
52
+ if (!existsSync(specPath)) {
53
+ return 'Please enter an existing agent spec (yaml) file';
54
+ }
55
+ return true;
56
+ },
57
+ required: true,
58
+ },
59
+ };
15
60
  export default class AgentCreate extends SfCommand {
16
61
  static summary = messages.getMessage('summary');
17
62
  static description = messages.getMessage('description');
@@ -21,54 +66,137 @@ export default class AgentCreate extends SfCommand {
21
66
  static flags = {
22
67
  'target-org': Flags.requiredOrg(),
23
68
  'api-version': Flags.orgApiVersion(),
24
- spec: Flags.file({
25
- char: 'f',
26
- required: true,
27
- summary: messages.getMessage('flags.spec.summary'),
69
+ ...makeFlags(FLAGGABLE_PROMPTS),
70
+ preview: Flags.boolean({
71
+ summary: messages.getMessage('flags.preview.summary'),
28
72
  }),
29
- name: Flags.string({
30
- char: 'n',
31
- required: true,
32
- summary: messages.getMessage('flags.name.summary'),
73
+ // This would be used as more of an agent update than create.
74
+ // Could possibly move to an `agent update` command.
75
+ 'planner-id': Flags.string({
76
+ summary: messages.getMessage('flags.planner-id.summary'),
77
+ hidden: true,
33
78
  }),
34
79
  };
80
+ // eslint-disable-next-line complexity
35
81
  async run() {
36
82
  const { flags } = await this.parse(AgentCreate);
37
- const jsonParsingStage = `Parsing ${flags.spec}`;
38
- const mso = new MultiStageOutput({
39
- jsonEnabled: this.jsonEnabled(),
40
- title: `Creating ${flags.name} Agent`,
41
- stages: [
42
- jsonParsingStage,
43
- 'Generating local metadata',
44
- 'Deploying metadata to org',
45
- 'Creating Agent in org',
46
- 'Retrieving Agent metadata',
47
- ],
48
- });
49
- mso.goto(jsonParsingStage);
50
- const agentConfig = {
51
- ...JSON.parse(fs.readFileSync(flags.spec, 'utf8')),
52
- name: flags.name,
53
- };
54
- // @ts-expect-error not using async method in callback
55
- Lifecycle.getInstance().on(AgentCreateLifecycleStages.CreatingLocally, () => mso.goto('Generating local metadata'));
56
- Lifecycle.getInstance().on(AgentCreateLifecycleStages.DeployingMetadata, () =>
83
+ // throw error if --json is used and not all required flags are provided
84
+ if (this.jsonEnabled()) {
85
+ if (!flags['agent-name']) {
86
+ throw messages.createError('error.missingRequiredFlags', ['agent-name']);
87
+ }
88
+ if (!flags.spec) {
89
+ throw messages.createError('error.missingRequiredFlags', ['spec']);
90
+ }
91
+ }
92
+ // If we don't have an agent spec yet, prompt.
93
+ const specPath = flags.spec ?? (await promptForFlag(FLAGGABLE_PROMPTS['spec']));
94
+ // Read the agent spec and validate
95
+ const inputSpec = YAML.parse(readFileSync(resolve(specPath), 'utf8'));
96
+ validateSpec(inputSpec);
97
+ // If we don't have an agent name yet, prompt.
98
+ const agentName = flags['agent-name'] ?? (await promptForFlag(FLAGGABLE_PROMPTS['agent-name']));
99
+ let agentApiName = flags['agent-api-name'];
100
+ if (!agentApiName) {
101
+ agentApiName = generateAgentApiName(agentName);
102
+ const promptedValue = await inquirerInput({
103
+ message: messages.getMessage('flags.agent-api-name.prompt', [agentApiName]),
104
+ validate: FLAGGABLE_PROMPTS['agent-api-name'].validate,
105
+ theme,
106
+ });
107
+ if (promptedValue?.length) {
108
+ agentApiName = promptedValue;
109
+ }
110
+ }
111
+ let title;
112
+ const stages = [MSO_STAGES.parse];
113
+ if (flags.preview) {
114
+ title = `Previewing ${agentName} Creation`;
115
+ stages.push(MSO_STAGES.preview);
116
+ }
117
+ else {
118
+ title = `Creating ${agentName} Agent`;
119
+ stages.push(MSO_STAGES.create);
120
+ stages.push(MSO_STAGES.retrieve);
121
+ }
122
+ const mso = new MultiStageOutput({ jsonEnabled: this.jsonEnabled(), title, stages });
123
+ mso.goto(MSO_STAGES.parse);
57
124
  // @ts-expect-error not using async method in callback
58
- mso.goto('Deploying metadata to org'));
125
+ Lifecycle.getInstance().on(AgentCreateLifecycleStagesV2.Previewing, () => mso.goto(MSO_STAGES.preview));
59
126
  // @ts-expect-error not using async method in callback
60
- Lifecycle.getInstance().on(AgentCreateLifecycleStages.CreatingRemotely, () => mso.goto('Creating Agent in org'));
61
- Lifecycle.getInstance().on(AgentCreateLifecycleStages.RetrievingMetadata, () =>
127
+ Lifecycle.getInstance().on(AgentCreateLifecycleStagesV2.Creating, () => mso.goto(MSO_STAGES.create));
62
128
  // @ts-expect-error not using async method in callback
63
- mso.goto('Retrieving Agent metadata'));
64
- const agent = new Agent(flags['target-org'].getConnection(flags['api-version']), this.project);
65
- const created = await agent.create(agentConfig);
129
+ Lifecycle.getInstance().on(AgentCreateLifecycleStagesV2.Retrieving, () => mso.goto(MSO_STAGES.retrieve));
130
+ const connection = flags['target-org'].getConnection(flags['api-version']);
131
+ const agent = new Agent(connection, this.project);
132
+ const agentConfig = {
133
+ agentType: inputSpec.agentType,
134
+ generationInfo: {
135
+ defaultInfo: {
136
+ role: inputSpec.role,
137
+ companyName: inputSpec.companyName,
138
+ companyDescription: inputSpec.companyDescription,
139
+ preDefinedTopics: inputSpec.topics,
140
+ },
141
+ },
142
+ generationSettings: {},
143
+ };
144
+ if (inputSpec?.companyWebsite) {
145
+ agentConfig.generationInfo.defaultInfo.companyWebsite = inputSpec?.companyWebsite;
146
+ }
147
+ if (!flags.preview) {
148
+ agentConfig.saveAgent = true;
149
+ agentConfig.agentSettings = { agentName, agentApiName };
150
+ if (flags['planner-id']) {
151
+ agentConfig.agentSettings.plannerId = flags['planner-id'];
152
+ }
153
+ if (inputSpec?.agentUser) {
154
+ // TODO: query for the user ID from the username
155
+ agentConfig.agentSettings.userId = inputSpec.agentUser;
156
+ }
157
+ if (inputSpec?.enrichLogs) {
158
+ agentConfig.agentSettings.enrichLogs = inputSpec.enrichLogs;
159
+ }
160
+ if (inputSpec?.tone) {
161
+ agentConfig.agentSettings.tone = inputSpec.tone;
162
+ }
163
+ }
164
+ const response = await agent.createV2(agentConfig);
165
+ const result = response;
66
166
  mso.stop();
67
- this.log(created.isSuccess
68
- ? colorize('green', `Successfully created ${flags.name} in ${flags['target-org'].getUsername() ?? 'the target org'}.`)
69
- : colorize('red', `failed to create agent ${flags.name}: ${created.errorMessage ?? ''}`));
70
- this.log(`Use ${colorize('dim', `sf org open agent --name ${flags.name}`)} to view the agent in the browser.`);
71
- return { isSuccess: created.isSuccess };
167
+ if (response.isSuccess) {
168
+ if (!flags.preview) {
169
+ const orgUsername = flags['target-org'].getUsername();
170
+ this.log(`Successfully created ${agentName} in ${orgUsername}.\n`);
171
+ this.log(`Use ${colorize('dim', `sf org open agent --name ${agentApiName} -o ${orgUsername}`)} to view the agent in the browser.`);
172
+ }
173
+ else {
174
+ const previewFileName = `${agentApiName}_Preview_${new Date().toISOString()}.json`;
175
+ writeFileSync(previewFileName, JSON.stringify(response, null, 2));
176
+ result.previewFilePath = resolve(previewFileName);
177
+ this.log(`Successfully created agent for preview. See ${previewFileName}\n`);
178
+ }
179
+ }
180
+ else {
181
+ this.log(colorize('red', `Failed to create agent: ${response.errorMessage ?? ''}`));
182
+ }
183
+ return result;
72
184
  }
73
185
  }
186
+ // The spec must define: agentType, role, companyName, companyDescription, and topics.
187
+ // Agent type must be 'customer' or 'internal'.
188
+ const validateSpec = (spec) => {
189
+ const requiredSpecValues = [
190
+ 'agentType',
191
+ 'role',
192
+ 'companyName',
193
+ 'companyDescription',
194
+ 'topics',
195
+ ];
196
+ const missingFlags = requiredSpecValues.filter((f) => !spec[f]);
197
+ if (missingFlags.length) {
198
+ throw messages.createError('error.missingRequiredSpecProperties', [missingFlags.join(', ')]);
199
+ }
200
+ validateAgentType(spec.agentType, true);
201
+ };
74
202
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,6 @@ export declare const FLAGGABLE_PROMPTS: {
15
15
  type: {
16
16
  message: string;
17
17
  validate: (d: string) => boolean | string;
18
- char: "t";
19
18
  options: string[];
20
19
  required: true;
21
20
  };
@@ -63,7 +62,7 @@ export declare const FLAGGABLE_PROMPTS: {
63
62
  default: string;
64
63
  };
65
64
  };
66
- export default class AgentCreateSpecV2 extends SfCommand<AgentCreateSpecResult> {
65
+ export default class AgentCreateSpec extends SfCommand<AgentCreateSpecResult> {
67
66
  static readonly summary: string;
68
67
  static readonly description: string;
69
68
  static readonly examples: string[];