@salesforce/plugin-agent 1.15.0 → 1.15.1-dev.1

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
@@ -132,7 +132,7 @@ EXAMPLES
132
132
  $ sf agent create --agent-name "Resort Manager" --spec specs/resortManagerAgent.yaml --preview
133
133
  ```
134
134
 
135
- _See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/create.ts)_
135
+ _See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/create.ts)_
136
136
 
137
137
  ## `sf agent generate agent-spec`
138
138
 
@@ -236,7 +236,7 @@ EXAMPLES
236
236
  $ sf agent generate agent-spec --tone formal --agent-user resortmanager@myorg.com
237
237
  ```
238
238
 
239
- _See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/generate/agent-spec.ts)_
239
+ _See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/generate/agent-spec.ts)_
240
240
 
241
241
  ## `sf agent generate template`
242
242
 
@@ -270,7 +270,7 @@ EXAMPLES
270
270
  force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml --agent-version 1
271
271
  ```
272
272
 
273
- _See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/generate/template.ts)_
273
+ _See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/generate/template.ts)_
274
274
 
275
275
  ## `sf agent generate test-spec`
276
276
 
@@ -278,7 +278,12 @@ Interactively generate a specification file for a AI evaluation test.
278
278
 
279
279
  ```
280
280
  USAGE
281
- $ sf agent generate test-spec [--flags-dir <value>]
281
+ $ sf agent generate test-spec [--flags-dir <value>] [-d <value>] [--force-overwrite] [-f <value>]
282
+
283
+ FLAGS
284
+ -d, --from-definition=<value> The API name of the AIEvaluationDefinition that you want to convert to a spec file.
285
+ -f, --output-file=<value> The name of the generated spec file. Defaults to "specs/<AGENT_API_NAME>-testSpec.yaml"
286
+ --force-overwrite Don't prompt for confirmation when overwriting an existing test spec file.
282
287
 
283
288
  GLOBAL FLAGS
284
289
  --flags-dir=<value> Import flag values from a directory.
@@ -293,7 +298,7 @@ EXAMPLES
293
298
  $ sf agent generate test-spec
294
299
  ```
295
300
 
296
- _See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/generate/test-spec.ts)_
301
+ _See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/generate/test-spec.ts)_
297
302
 
298
303
  ## `sf agent preview`
299
304
 
@@ -328,43 +333,43 @@ FLAG DESCRIPTIONS
328
333
  the API name of the agent? (TBD based on agents library)
329
334
  ```
330
335
 
331
- _See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/preview.ts)_
336
+ _See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/preview.ts)_
332
337
 
333
338
  ## `sf agent test create`
334
339
 
335
- Summary of a command.
340
+ Convert a test spec file into an AiEvaluationDefinition and deploy it to your org.
336
341
 
337
342
  ```
338
343
  USAGE
339
- $ sf agent test create -s <value> -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [--preview] [-p]
344
+ $ sf agent test create -o <value> [--json] [--flags-dir <value>] [--test-api-name <value>] [--spec <value>]
345
+ [--api-version <value>] [--preview] [--force-overwrite]
340
346
 
341
347
  FLAGS
342
- -o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
343
- configuration variable is already set.
344
- -p, --no-prompt Don't prompt for confirmation when overwriting an existing test.
345
- -s, --spec=<value> (required) Description of a flag.
346
- --api-version=<value> Override the api version used for api requests made by this command
347
- --preview Preview the test metadata without deploying to your org.
348
+ -o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
349
+ configuration variable is already set.
350
+ --api-version=<value> Override the api version used for api requests made by this command
351
+ --force-overwrite Don't prompt for confirmation when overwriting an existing test.
352
+ --preview Preview the test metadata without deploying to your org.
353
+ --spec=<value> The path to the spec file.
354
+ --test-api-name=<value> The API name of the AiEvaluationDefinition.
348
355
 
349
356
  GLOBAL FLAGS
350
357
  --flags-dir=<value> Import flag values from a directory.
351
358
  --json Format output as json.
352
359
 
353
360
  DESCRIPTION
354
- Summary of a command.
361
+ Convert a test spec file into an AiEvaluationDefinition and deploy it to your org.
362
+
363
+ This command will convert a test spec file into an AiEvaluationDefinition and deploy it to your org. The spec file
364
+ must be in yaml format.
355
365
 
356
- More information about a command. Don't repeat the summary.
366
+ Use the --preview flag to see the metadata that will be deployed without actually deploying it.
357
367
 
358
368
  EXAMPLES
359
369
  $ sf agent test create
360
-
361
- FLAG DESCRIPTIONS
362
- -s, --spec=<value> Description of a flag.
363
-
364
- More information about a flag. Don't repeat the summary.
365
370
  ```
366
371
 
367
- _See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/test/create.ts)_
372
+ _See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/test/create.ts)_
368
373
 
369
374
  ## `sf agent test list`
370
375
 
@@ -393,7 +398,7 @@ EXAMPLES
393
398
  $ sf agent test list
394
399
  ```
395
400
 
396
- _See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/test/list.ts)_
401
+ _See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/test/list.ts)_
397
402
 
398
403
  ## `sf agent test results`
399
404
 
@@ -449,7 +454,7 @@ FLAG DESCRIPTIONS
449
454
  test results aren't written.
450
455
  ```
451
456
 
452
- _See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/test/results.ts)_
457
+ _See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/test/results.ts)_
453
458
 
454
459
  ## `sf agent test resume`
455
460
 
@@ -512,7 +517,7 @@ FLAG DESCRIPTIONS
512
517
  test results aren't written.
513
518
  ```
514
519
 
515
- _See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/test/resume.ts)_
520
+ _See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/test/resume.ts)_
516
521
 
517
522
  ## `sf agent test run`
518
523
 
@@ -575,6 +580,6 @@ FLAG DESCRIPTIONS
575
580
  test results aren't written.
576
581
  ```
577
582
 
578
- _See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.0/src/commands/agent/test/run.ts)_
583
+ _See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.15.1-dev.1/src/commands/agent/test/run.ts)_
579
584
 
580
585
  <!-- commandsstop -->
@@ -13,7 +13,7 @@ import { MultiStageOutput } from '@oclif/multi-stage-output';
13
13
  import { input as inquirerInput } from '@inquirer/prompts';
14
14
  import { colorize } from '@oclif/core/ux';
15
15
  import { Agent, AgentCreateLifecycleStagesV2, generateAgentApiName, } from '@salesforce/agents';
16
- import { makeFlags, promptForFlag, getAgentUserId, validateAgentType, validateTone, } from '../../flags.js';
16
+ import { makeFlags, promptForFlag, getAgentUserId, validateAgentType, validateTone, promptForYamlFile, } from '../../flags.js';
17
17
  import { theme } from '../../inquirer-theme.js';
18
18
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
19
19
  const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.create');
@@ -90,7 +90,7 @@ export default class AgentCreate extends SfCommand {
90
90
  }
91
91
  }
92
92
  // If we don't have an agent spec yet, prompt.
93
- const specPath = flags.spec ?? (await promptForFlag(FLAGGABLE_PROMPTS['spec']));
93
+ const specPath = flags.spec ?? (await promptForYamlFile(FLAGGABLE_PROMPTS['spec']));
94
94
  // Read the agent spec and validate
95
95
  const inputSpec = YAML.parse(readFileSync(resolve(specPath), 'utf8'));
96
96
  validateSpec(inputSpec);
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,KAAK,EAGL,4BAA4B,EAE5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,SAAS,EACT,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGhD,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;AAOnF,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,2BAA2B;CACtC,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,YAAY,EAAE;QACZ,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAS,EAAoB,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,4BAA4B;QACvF,QAAQ,EAAE,IAAI;KACf;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;QAC5D,QAAQ,EAAE,CAAC,CAAS,EAAoB,EAAE;YACxC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAClB,OAAO,wCAAwC,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,GAAG,qCAAqC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAClD,QAAQ,EAAE,CAAC,CAAS,EAAoB,EAAE;YACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,iDAAiD,CAAC;YAC3D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE,IAAI;KACf;CACwC,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAA4B;IAC5D,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,eAAe,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;IAEtB,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC;SACtD,CAAC;QACF,6DAA6D;QAC7D,oDAAoD;QACpD,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,MAAM,EAAE,IAAI;SACb,CAAC;KACH,CAAC;IAEF,sCAAsC;IAC/B,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEhD,wEAAwE;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,QAAQ,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEhF,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAA0B,CAAC;QAC/F,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,8CAA8C;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC;gBACxC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC;gBAC3D,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,QAAQ;gBACtD,OAAO,EAAE,YAAY;gBACrB,KAAK;aACN,CAAC,CAAC;YACH,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC;gBAC1B,YAAY,GAAG,aAAa,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,GAAG,cAAc,SAAS,WAAW,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,YAAY,SAAS,QAAQ,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3B,sDAAsD;QACtD,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,4BAA4B,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACxG,sDAAsD;QACtD,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,4BAA4B,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACrG,sDAAsD;QACtD,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,4BAA4B,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEzG,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAQ,CAAC,CAAC;QAEnD,MAAM,WAAW,GAAwB;YACvC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,cAAc,EAAE;gBACd,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;oBAChD,gBAAgB,EAAE,SAAS,CAAC,MAAM;iBACnC;aACF;YACD,kBAAkB,EAAE,EAAE;SACvB,CAAC;QACF,IAAI,SAAS,EAAE,cAAc,EAAE,CAAC;YAC9B,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,GAAG,SAAS,EAAE,cAAc,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,WAAW,CAAC,aAAa,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxB,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,SAAS,EAAE,SAAS,EAAE,CAAC;gBACzB,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;gBAC1B,WAAW,CAAC,aAAa,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YAC9D,CAAC;YACD,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;gBACpB,WAAW,CAAC,aAAa,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,MAAM,GAAsB,QAAQ,CAAC;QAE3C,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,EAAY,CAAC;gBAChE,IAAI,CAAC,GAAG,CAAC,wBAAwB,SAAS,OAAO,WAAW,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,GAAG,CACN,OAAO,QAAQ,CACb,KAAK,EACL,4BAA4B,YAAY,OAAO,WAAW,EAAE,CAC7D,oCAAoC,CACtC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,GAAG,GAAG,YAAY,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;gBACnF,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,+CAA+C,eAAe,IAAI,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,2BAA2B,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;;AAGH,sFAAsF;AACtF,+CAA+C;AAC/C,MAAM,YAAY,GAAG,CAAC,IAA6B,EAAQ,EAAE;IAC3D,MAAM,kBAAkB,GAAkF;QACxG,WAAW;QACX,MAAM;QACN,aAAa;QACb,oBAAoB;QACpB,QAAQ;KACT,CAAC;IACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,WAAW,CAAC,qCAAqC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,10 @@ export default class AgentGenerateTestSpec extends SfCommand<void> {
5
5
  static readonly examples: string[];
6
6
  static readonly enableJsonFlag = false;
7
7
  static readonly state = "beta";
8
+ static readonly flags: {
9
+ 'from-definition': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'force-overwrite': import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ 'output-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
8
13
  run(): Promise<void>;
9
14
  }
@@ -1,45 +1,72 @@
1
1
  /*
2
- * Copyright (c) 2024, salesforce.com, inc.
2
+ * Copyright (c) 2025, salesforce.com, inc.
3
3
  * All rights reserved.
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 { join } from 'node:path';
8
7
  import { readFile } from 'node:fs/promises';
9
- import { SfCommand } from '@salesforce/sf-plugins-core';
10
- import { Messages, SfError } from '@salesforce/core';
11
- import { generateTestSpec } from '@salesforce/agents';
8
+ import { join } from 'node:path';
9
+ import { existsSync } from 'node:fs';
10
+ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
11
+ import { Messages, SfError, SfProject } from '@salesforce/core';
12
+ import { writeTestSpec, generateTestSpecFromAiEvalDefinition } from '@salesforce/agents';
12
13
  import { select, input, confirm, checkbox } from '@inquirer/prompts';
13
14
  import { XMLParser } from 'fast-xml-parser';
15
+ import { ComponentSetBuilder } from '@salesforce/source-deploy-retrieve';
14
16
  import { theme } from '../../../inquirer-theme.js';
15
- import { readDir } from '../../../read-dir.js';
17
+ import yesNoOrCancel from '../../../yes-no-cancel.js';
16
18
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
17
19
  const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.generate.test-spec');
18
20
  function castArray(value) {
19
21
  return Array.isArray(value) ? value : [value];
20
22
  }
21
- async function promptForTestCase(genAiPlugins) {
23
+ /**
24
+ * Prompts the user for test case information through interactive prompts.
25
+ *
26
+ * @param genAiPlugins - Record mapping topic names to GenAiPlugin XML file paths (used to find the related actions)
27
+ * @param genAiFunctions - Array of GenAiFunction names from the GenAiPlanner
28
+ * @returns Promise resolving to a TestCase object containing:
29
+ * - utterance: The user input string
30
+ * - expectedTopic: The expected topic for classification
31
+ * - expectedActions: Array of expected action names
32
+ * - expectedOutcome: Expected outcome string
33
+ *
34
+ * @remarks
35
+ * This function guides users through creating a test case by:
36
+ * 1. Prompting for an utterance
37
+ * 2. Selecting an expected topic (from GenAiPlugins specified in the Bot's GenAiPlanner)
38
+ * 3. Choosing expected actions (from GenAiFunctions in the GenAiPlanner or GenAiPlugin)
39
+ * 4. Defining an expected outcome
40
+ */
41
+ async function promptForTestCase(genAiPlugins, genAiFunctions) {
22
42
  const utterance = await input({
23
43
  message: 'Utterance',
24
44
  validate: (d) => d.length > 0 || 'utterance cannot be empty',
25
45
  theme,
26
46
  });
27
- const customKey = '<OTHER>';
28
- const topics = Object.keys(genAiPlugins);
29
- const askForOtherActions = async () => (await input({
47
+ const expectedTopic = await select({
48
+ message: 'Expected topic',
49
+ choices: Object.keys(genAiPlugins),
50
+ theme,
51
+ });
52
+ // GenAiFunctions (aka actions) can be defined in the GenAiPlugin or GenAiPlanner
53
+ // the actions from the planner are passed in as an argument to this function
54
+ // the actions from the plugin are read from the GenAiPlugin file
55
+ let actions = [];
56
+ if (genAiPlugins[expectedTopic]) {
57
+ const genAiPluginXml = await readFile(genAiPlugins[expectedTopic], 'utf-8');
58
+ const parser = new XMLParser();
59
+ const parsed = parser.parse(genAiPluginXml);
60
+ actions = castArray(parsed.GenAiPlugin.genAiFunctions ?? []).map((f) => f.functionName);
61
+ }
62
+ const expectedActions = await checkbox({
30
63
  message: 'Expected action(s)',
31
- validate: (d) => {
32
- if (!d.length) {
33
- return 'expected value cannot be empty';
34
- }
35
- return true;
36
- },
64
+ choices: [...actions, ...genAiFunctions],
37
65
  theme,
38
- }))
39
- .split(',')
40
- .map((a) => a.trim());
41
- const askForBotRating = async () => input({
42
- message: 'Expected response',
66
+ required: true,
67
+ });
68
+ const expectedOutcome = await input({
69
+ message: 'Expected outcome',
43
70
  validate: (d) => {
44
71
  if (!d.length) {
45
72
  return 'expected value cannot be empty';
@@ -48,62 +75,152 @@ async function promptForTestCase(genAiPlugins) {
48
75
  },
49
76
  theme,
50
77
  });
51
- const expectedTopic = await select({
52
- message: 'Expected topic',
53
- choices: [...topics, customKey],
54
- theme,
55
- });
56
- if (expectedTopic === customKey) {
57
- return {
58
- utterance,
59
- expectedTopic: await input({
60
- message: 'Expected topic',
61
- validate: (d) => {
62
- if (!d.length) {
63
- return 'expected value cannot be empty';
64
- }
65
- return true;
66
- },
67
- theme,
68
- }),
69
- // If the user selects OTHER for the topic, then we don't have a genAiPlugin to get actions from so we ask for them for custom input
70
- expectedActions: await askForOtherActions(),
71
- expectedOutcome: await askForBotRating(),
72
- };
73
- }
74
- const genAiPluginXml = await readFile(genAiPlugins[expectedTopic], 'utf-8');
75
- const parser = new XMLParser();
76
- const parsed = parser.parse(genAiPluginXml);
77
- const actions = castArray(parsed.GenAiPlugin.genAiFunctions).map((f) => f.functionName);
78
- let expectedActions = await checkbox({
79
- message: 'Expected action(s)',
80
- choices: [...actions, customKey],
81
- theme,
82
- required: true,
83
- });
84
- if (expectedActions.includes(customKey)) {
85
- const additional = await askForOtherActions();
86
- expectedActions = [...expectedActions.filter((a) => a !== customKey), ...additional];
87
- }
88
- const expectedOutcome = await askForBotRating();
89
78
  return {
90
79
  utterance,
80
+ expectedTopic,
91
81
  expectedActions,
92
82
  expectedOutcome,
93
- expectedTopic,
94
83
  };
95
84
  }
85
+ function getMetadataFilePaths(cs, type) {
86
+ return [...cs.filter((component) => component.type.name === type && component.fullName !== '*')].reduce((acc, component) => ({
87
+ ...acc,
88
+ [component.fullName]: cs.getComponentFilenamesByNameAndType({
89
+ fullName: component.fullName,
90
+ type,
91
+ })[0],
92
+ }), {});
93
+ }
94
+ /**
95
+ * Retrieves GenAIPlugins and GenAiFunctions from a Bot's GenAiPlanner
96
+ *
97
+ * We have to get the bot version and planner for the selected bot so that we can get
98
+ * the actions (GenAiFunctions) and topics (GenAiPlugins) that can be selected for the
99
+ * test cases.
100
+ *
101
+ * The BotVersion tells us which GenAiPlanner to use, and the GenAiPlanner
102
+ * tells us which GenAiPlugins and GenAiFunctions are available. More GenAiFunctions
103
+ * might be available in the GenAiPlugin, so we read those later when the user
104
+ * has selected a GenAiPlugin/topic - inside of `promptForTestCase`.
105
+ *
106
+ * @param subjectName - The name of the Bot to analyze
107
+ * @param cs - ComponentSet containing Bot, GenAiPlanner, and GenAiPlugin components
108
+ *
109
+ * @returns Object containing:
110
+ * - genAiPlugins: Record of plugin names to their file paths
111
+ * - genAiFunctions: Array of function names
112
+ */
113
+ async function getPluginsAndFunctions(subjectName, cs) {
114
+ const botVersions = getMetadataFilePaths(cs, 'Bot');
115
+ const genAiPlanners = getMetadataFilePaths(cs, 'GenAiPlanner');
116
+ const parser = new XMLParser();
117
+ const botVersionXml = await readFile(botVersions[subjectName], 'utf-8');
118
+ const parsedBotVersion = parser.parse(botVersionXml);
119
+ const plannerXml = await readFile(genAiPlanners[parsedBotVersion.BotVersion.conversationDefinitionPlanners.genAiPlannerName ?? subjectName], 'utf-8');
120
+ const parsedPlanner = parser.parse(plannerXml);
121
+ const genAiFunctions = castArray(parsedPlanner.GenAiPlanner.genAiFunctions).map(({ genAiFunctionName }) => genAiFunctionName);
122
+ const genAiPlugins = castArray(parsedPlanner.GenAiPlanner.genAiPlugins).reduce((acc, { genAiPluginName }) => ({
123
+ ...acc,
124
+ [genAiPluginName]: cs.getComponentFilenamesByNameAndType({
125
+ fullName: genAiPluginName,
126
+ type: 'GenAiPlugin',
127
+ })[0],
128
+ }), {});
129
+ return { genAiPlugins, genAiFunctions };
130
+ }
131
+ function ensureYamlExtension(filePath) {
132
+ if (!filePath)
133
+ return undefined;
134
+ if (filePath.endsWith('.yaml') || filePath.endsWith('.yml'))
135
+ return filePath;
136
+ return `${filePath}.yaml`;
137
+ }
138
+ async function promptUntilUniqueFile(subjectName, filePath) {
139
+ const outputFile = filePath ??
140
+ (await input({
141
+ message: 'Enter a path for the test spec file',
142
+ validate(d) {
143
+ if (!d.length) {
144
+ return 'Path cannot be empty';
145
+ }
146
+ return true;
147
+ },
148
+ theme,
149
+ }));
150
+ if (!existsSync(outputFile)) {
151
+ return outputFile;
152
+ }
153
+ const confirmation = await yesNoOrCancel({
154
+ message: `File ${outputFile} already exists. Overwrite?`,
155
+ default: false,
156
+ });
157
+ if (confirmation === 'cancel') {
158
+ return;
159
+ }
160
+ if (!confirmation) {
161
+ return promptUntilUniqueFile(subjectName);
162
+ }
163
+ return outputFile;
164
+ }
165
+ /**
166
+ * If the user provides the --force-overwrite flag, then we'll use the default file path (either the one provided by --output-file or the default path).
167
+ * If the user doesn't provide it, we'll prompt the user for a file path until they provide a unique one or cancel.
168
+ */
169
+ async function determineFilePath(subjectName, outputFile, forceOverwrite) {
170
+ const defaultFile = ensureYamlExtension(outputFile ?? join('specs', `${subjectName}-testSpec.yaml`));
171
+ return ensureYamlExtension(forceOverwrite ? defaultFile : await promptUntilUniqueFile(subjectName, defaultFile));
172
+ }
96
173
  export default class AgentGenerateTestSpec extends SfCommand {
97
174
  static summary = messages.getMessage('summary');
98
175
  static description = messages.getMessage('description');
99
176
  static examples = messages.getMessages('examples');
100
177
  static enableJsonFlag = false;
101
178
  static state = 'beta';
179
+ static flags = {
180
+ 'from-definition': Flags.string({
181
+ char: 'd',
182
+ summary: messages.getMessage('flags.from-definition.summary'),
183
+ }),
184
+ 'force-overwrite': Flags.boolean({
185
+ summary: messages.getMessage('flags.force-overwrite.summary'),
186
+ }),
187
+ 'output-file': Flags.string({
188
+ char: 'f',
189
+ summary: messages.getMessage('flags.output-file.summary'),
190
+ }),
191
+ };
102
192
  async run() {
103
- const botsDir = join('force-app', 'main', 'default', 'bots');
104
- const bots = await readDir(botsDir);
193
+ const { flags } = await this.parse(AgentGenerateTestSpec);
194
+ const directoryPaths = (await SfProject.resolve().then((project) => project.getPackageDirectories())).map((dir) => dir.fullPath);
195
+ const cs = await ComponentSetBuilder.build({
196
+ metadata: {
197
+ metadataEntries: ['GenAiPlanner', 'GenAiPlugin', 'Bot', 'AiEvaluationDefinition'],
198
+ directoryPaths,
199
+ },
200
+ });
201
+ if (flags['from-definition']) {
202
+ const aiEvalDefs = getMetadataFilePaths(cs, 'AiEvaluationDefinition');
203
+ if (!aiEvalDefs[flags['from-definition']]) {
204
+ throw new SfError(`AiEvaluationDefinition ${flags['from-definition']} not found`, 'AiEvalDefinitionNotFoundError');
205
+ }
206
+ const spec = await generateTestSpecFromAiEvalDefinition(aiEvalDefs[flags['from-definition']]);
207
+ const outputFile = await determineFilePath(spec.subjectName, flags['output-file'], flags['force-overwrite']);
208
+ if (!outputFile) {
209
+ this.log(messages.getMessage('info.cancel'));
210
+ return;
211
+ }
212
+ await writeTestSpec(spec, outputFile);
213
+ this.log(`Created ${outputFile}`);
214
+ return;
215
+ }
216
+ const bots = [
217
+ ...cs
218
+ .filter((component) => component.type.name === 'Bot')
219
+ .map((c) => c.fullName)
220
+ .filter((n) => n !== '*'),
221
+ ];
105
222
  if (bots.length === 0) {
106
- throw new SfError(`No agents found in ${botsDir}`, 'NoAgentsFoundError');
223
+ throw new SfError(`No agents found in ${directoryPaths.join(', ')}`, 'NoAgentsFoundError');
107
224
  }
108
225
  const subjectType = await select({
109
226
  message: 'What are you testing',
@@ -115,6 +232,12 @@ export default class AgentGenerateTestSpec extends SfCommand {
115
232
  choices: bots,
116
233
  theme,
117
234
  });
235
+ const outputFile = await determineFilePath(subjectName, flags['output-file'], flags['force-overwrite']);
236
+ if (!outputFile) {
237
+ this.log(messages.getMessage('info.cancel'));
238
+ return;
239
+ }
240
+ const { genAiPlugins, genAiFunctions } = await getPluginsAndFunctions(subjectName, cs);
118
241
  const name = await input({
119
242
  message: 'Enter a name for the test definition',
120
243
  validate(d) {
@@ -123,12 +246,6 @@ export default class AgentGenerateTestSpec extends SfCommand {
123
246
  return 'Name cannot be empty';
124
247
  }
125
248
  return true;
126
- // TODO: add back validation once we refine the regex
127
- // check against FORTY_CHAR_API_NAME_REGEX
128
- // if (!FORTY_CHAR_API_NAME_REGEX.test(d)) {
129
- // return 'The non-namespaced portion an API name must begin with a letter, contain only letters, numbers, and underscores, not contain consecutive underscores, and not end with an underscore.';
130
- // }
131
- // return true;
132
249
  },
133
250
  theme,
134
251
  });
@@ -136,31 +253,26 @@ export default class AgentGenerateTestSpec extends SfCommand {
136
253
  message: 'Enter a description for test definition (optional)',
137
254
  theme,
138
255
  });
139
- const genAiPluginDir = join('force-app', 'main', 'default', 'genAiPlugins');
140
- const genAiPlugins = Object.fromEntries((await readDir(genAiPluginDir)).map((genAiPlugin) => [
141
- genAiPlugin.replace('.genAiPlugin-meta.xml', ''),
142
- join(genAiPluginDir, genAiPlugin),
143
- ]));
144
256
  const testCases = [];
145
257
  do {
146
258
  this.log();
147
259
  this.styledHeader(`Adding test case #${testCases.length + 1}`);
148
260
  // eslint-disable-next-line no-await-in-loop
149
- testCases.push(await promptForTestCase(genAiPlugins));
261
+ testCases.push(await promptForTestCase(genAiPlugins, genAiFunctions));
150
262
  } while ( // eslint-disable-next-line no-await-in-loop
151
263
  await confirm({
152
264
  message: 'Would you like to add another test case',
153
265
  default: true,
154
266
  }));
155
267
  this.log();
156
- await generateTestSpec({
268
+ await writeTestSpec({
157
269
  name,
158
270
  description,
159
271
  subjectType,
160
272
  subjectName,
161
273
  testCases,
162
- }, `${name}-test-spec.yaml`);
163
- this.log(`Created ${name}-test-spec.yaml`);
274
+ }, outputFile);
275
+ this.log(`Created ${outputFile}`);
164
276
  }
165
277
  }
166
278
  //# sourceMappingURL=test-spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-spec.js","sourceRoot":"","sources":["../../../../src/commands/agent/generate/test-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-spec.js","sourceRoot":"","sources":["../../../../src/commands/agent/generate/test-spec.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,12 @@ export default class AgentTestCreate extends SfCommand<AgentTestCreateResult> {
11
11
  static readonly examples: string[];
12
12
  static readonly state = "beta";
13
13
  static readonly flags: {
14
- spec: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
14
  'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
16
15
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
16
  preview: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- 'no-prompt': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'force-overwrite': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ spec: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ "test-api-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
20
  };
20
21
  private mso?;
21
22
  run(): Promise<AgentTestCreateResult>;