@salesforce/plugin-agent 1.20.12-preview.0 → 1.20.12
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 +11 -11
- package/lib/handleTestResults.js +8 -35
- package/lib/handleTestResults.js.map +1 -1
- package/messages/agent.preview.md +1 -1
- package/npm-shrinkwrap.json +10 -8
- package/oclif.lock +9 -9
- package/oclif.manifest.json +2 -2
- package/package.json +4 -4
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.20.12
|
|
135
|
+
_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/create.ts)_
|
|
136
136
|
|
|
137
137
|
## `sf agent generate agent-spec`
|
|
138
138
|
|
|
@@ -237,7 +237,7 @@ EXAMPLES
|
|
|
237
237
|
$ sf agent generate agent-spec --tone formal --agent-user resortmanager@myorg.com
|
|
238
238
|
```
|
|
239
239
|
|
|
240
|
-
_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
240
|
+
_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/generate/agent-spec.ts)_
|
|
241
241
|
|
|
242
242
|
## `sf agent generate template`
|
|
243
243
|
|
|
@@ -285,7 +285,7 @@ EXAMPLES
|
|
|
285
285
|
force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml --agent-version 1
|
|
286
286
|
```
|
|
287
287
|
|
|
288
|
-
_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
288
|
+
_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/generate/template.ts)_
|
|
289
289
|
|
|
290
290
|
## `sf agent generate test-spec`
|
|
291
291
|
|
|
@@ -343,7 +343,7 @@ EXAMPLES
|
|
|
343
343
|
force-app//main/default/aiEvaluationDefinitions/Resort_Manager_Tests.aiEvaluationDefinition-meta.xml
|
|
344
344
|
```
|
|
345
345
|
|
|
346
|
-
_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
346
|
+
_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/generate/test-spec.ts)_
|
|
347
347
|
|
|
348
348
|
## `sf agent preview`
|
|
349
349
|
|
|
@@ -386,7 +386,7 @@ DESCRIPTION
|
|
|
386
386
|
Find the agent's API name in its main details page in your org's Agent page in Setup.
|
|
387
387
|
|
|
388
388
|
Before you use this command, you must complete these steps:
|
|
389
|
-
|
|
389
|
+
-----------------------------------------------------------
|
|
390
390
|
|
|
391
391
|
1. Create a connected app in your org as described in the "Create a Connected App" section here:
|
|
392
392
|
https://developer.salesforce.com/docs/einstein/genai/guide/agent-api-get-started.html#create-a-connected-app. Do these
|
|
@@ -436,7 +436,7 @@ EXAMPLES
|
|
|
436
436
|
--output-dir "transcripts/my-preview"
|
|
437
437
|
```
|
|
438
438
|
|
|
439
|
-
_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
439
|
+
_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/preview.ts)_
|
|
440
440
|
|
|
441
441
|
## `sf agent test create`
|
|
442
442
|
|
|
@@ -491,7 +491,7 @@ EXAMPLES
|
|
|
491
491
|
$ sf agent test create --spec specs/Resort_Manager-testSpec.yaml --test-api-name Resort_Manager_Test --preview
|
|
492
492
|
```
|
|
493
493
|
|
|
494
|
-
_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
494
|
+
_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/test/create.ts)_
|
|
495
495
|
|
|
496
496
|
## `sf agent test list`
|
|
497
497
|
|
|
@@ -526,7 +526,7 @@ EXAMPLES
|
|
|
526
526
|
$ sf agent test list --target-org my-org
|
|
527
527
|
```
|
|
528
528
|
|
|
529
|
-
_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
529
|
+
_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/test/list.ts)_
|
|
530
530
|
|
|
531
531
|
## `sf agent test results`
|
|
532
532
|
|
|
@@ -582,7 +582,7 @@ FLAG DESCRIPTIONS
|
|
|
582
582
|
test results aren't written.
|
|
583
583
|
```
|
|
584
584
|
|
|
585
|
-
_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
585
|
+
_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/test/results.ts)_
|
|
586
586
|
|
|
587
587
|
## `sf agent test resume`
|
|
588
588
|
|
|
@@ -645,7 +645,7 @@ FLAG DESCRIPTIONS
|
|
|
645
645
|
test results aren't written.
|
|
646
646
|
```
|
|
647
647
|
|
|
648
|
-
_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
648
|
+
_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/test/resume.ts)_
|
|
649
649
|
|
|
650
650
|
## `sf agent test run`
|
|
651
651
|
|
|
@@ -709,6 +709,6 @@ FLAG DESCRIPTIONS
|
|
|
709
709
|
test results aren't written.
|
|
710
710
|
```
|
|
711
711
|
|
|
712
|
-
_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12
|
|
712
|
+
_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.20.12/src/commands/agent/test/run.ts)_
|
|
713
713
|
|
|
714
714
|
<!-- commandsstop -->
|
package/lib/handleTestResults.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { stripVTControlCharacters } from 'node:util';
|
|
9
9
|
import { writeFile, mkdir } from 'node:fs/promises';
|
|
10
|
-
import { convertTestResultsToFormat, humanFriendlyName
|
|
10
|
+
import { convertTestResultsToFormat, humanFriendlyName } from '@salesforce/agents';
|
|
11
11
|
import { Ux } from '@salesforce/sf-plugins-core/Ux';
|
|
12
12
|
import ansis from 'ansis';
|
|
13
13
|
async function writeFileToDir(outputDir, fileName, content) {
|
|
@@ -60,15 +60,11 @@ export function humanFormat(results) {
|
|
|
60
60
|
const ux = new Ux();
|
|
61
61
|
const tables = [];
|
|
62
62
|
for (const testCase of results.testCases) {
|
|
63
|
-
|
|
63
|
+
const table = ux.makeTable({
|
|
64
64
|
title: `${ansis.bold(`Test Case #${testCase.testNumber}`)}\n${ansis.dim('Utterance')}: ${testCase.inputs.utterance}`,
|
|
65
65
|
overflow: 'wrap',
|
|
66
66
|
columns: ['test', 'result', { key: 'expected', width: '40%' }, { key: 'actual', width: '40%' }],
|
|
67
|
-
data: testCase.testResults
|
|
68
|
-
// this is the table for topics/action/output validation (actual v expected)
|
|
69
|
-
// filter out other metrics from it
|
|
70
|
-
.filter((f) => !metric.includes(f.name))
|
|
71
|
-
.map((r) => ({
|
|
67
|
+
data: testCase.testResults.map((r) => ({
|
|
72
68
|
test: humanFriendlyName(r.name),
|
|
73
69
|
result: r.result === 'PASS' ? ansis.green('Pass') : ansis.red('Fail'),
|
|
74
70
|
expected: r.expectedValue,
|
|
@@ -77,42 +73,19 @@ export function humanFormat(results) {
|
|
|
77
73
|
width: '100%',
|
|
78
74
|
});
|
|
79
75
|
tables.push(table);
|
|
80
|
-
table = ux.makeTable({
|
|
81
|
-
overflow: 'wrap',
|
|
82
|
-
columns: [
|
|
83
|
-
{ key: 'test', name: 'Metric' },
|
|
84
|
-
'result',
|
|
85
|
-
{ key: 'score', name: 'Value (Threshold)' },
|
|
86
|
-
{ key: 'metricExplainability', name: 'Explanation' },
|
|
87
|
-
],
|
|
88
|
-
data: testCase.testResults
|
|
89
|
-
// this is the table for metric information
|
|
90
|
-
// filter out the standard evaluations (topics/action/output)
|
|
91
|
-
.filter((f) => metric.includes(f.name))
|
|
92
|
-
.map((r) => ({
|
|
93
|
-
test: humanFriendlyName(r.name).replace(/^./, (char) => char.toUpperCase()),
|
|
94
|
-
result: r.result === 'PASS' ? ansis.green('Pass') : ansis.red('Fail'),
|
|
95
|
-
// the threshold is 0.6 for now, in the future it will be customizable per customer
|
|
96
|
-
// for output_latency_milliseconds, the score is a milliseconds of duration, without threshold
|
|
97
|
-
score: r.name === 'output_latency_milliseconds' ? r.score : `${r.score} (0.6)`,
|
|
98
|
-
metricExplainability: r.metricExplainability,
|
|
99
|
-
})),
|
|
100
|
-
width: '100%',
|
|
101
|
-
});
|
|
102
|
-
tables.push(table);
|
|
103
76
|
}
|
|
104
77
|
const topicPassCount = results.testCases.reduce((acc, tc) => {
|
|
105
|
-
const topic = tc.testResults.find((r) => r.name === 'topic_sequence_match'
|
|
78
|
+
const topic = tc.testResults.find((r) => r.name === 'topic_sequence_match');
|
|
106
79
|
return topic?.result === 'PASS' ? acc + 1 : acc;
|
|
107
80
|
}, 0);
|
|
108
81
|
const topicPassPercent = (topicPassCount / results.testCases.length) * 100;
|
|
109
82
|
const actionPassCount = results.testCases.reduce((acc, tc) => {
|
|
110
|
-
const action = tc.testResults.find((r) => r.name === 'action_sequence_match'
|
|
83
|
+
const action = tc.testResults.find((r) => r.name === 'action_sequence_match');
|
|
111
84
|
return action?.result === 'PASS' ? acc + 1 : acc;
|
|
112
85
|
}, 0);
|
|
113
86
|
const actionPassPercent = (actionPassCount / results.testCases.length) * 100;
|
|
114
87
|
const outcomePassCount = results.testCases.reduce((acc, tc) => {
|
|
115
|
-
const outcome = tc.testResults.find((r) => r.name === 'bot_response_rating'
|
|
88
|
+
const outcome = tc.testResults.find((r) => r.name === 'bot_response_rating');
|
|
116
89
|
return outcome?.result === 'PASS' ? acc + 1 : acc;
|
|
117
90
|
}, 0);
|
|
118
91
|
const outcomePassPercent = (outcomePassCount / results.testCases.length) * 100;
|
|
@@ -130,8 +103,8 @@ export function humanFormat(results) {
|
|
|
130
103
|
const failedTestCasesObj = Object.fromEntries(Object.entries(failedTestCases).map(([, tc]) => [
|
|
131
104
|
`Test Case #${tc.testNumber}`,
|
|
132
105
|
tc.testResults
|
|
133
|
-
.filter((r) => r.result === 'FAILURE'
|
|
134
|
-
.map((r) => humanFriendlyName(r.name)
|
|
106
|
+
.filter((r) => r.result === 'FAILURE')
|
|
107
|
+
.map((r) => humanFriendlyName(r.name))
|
|
135
108
|
.join(', '),
|
|
136
109
|
]));
|
|
137
110
|
const failedTestCasesTable = makeSimpleTable(failedTestCasesObj, ansis.red.bold('Failed Test Cases'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleTestResults.js","sourceRoot":"","sources":["../src/handleTestResults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA4B,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"handleTestResults.js","sourceRoot":"","sources":["../src/handleTestResults.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ When the session concludes, the command asks if you want to save the API respons
|
|
|
13
13
|
Find the agent's API name in its main details page in your org's Agent page in Setup.
|
|
14
14
|
|
|
15
15
|
Before you use this command, you must complete these steps:
|
|
16
|
-
|
|
16
|
+
-----------------------------------------------------------
|
|
17
17
|
|
|
18
18
|
1. Create a connected app in your org as described in the "Create a Connected App" section here: https://developer.salesforce.com/docs/einstein/genai/guide/agent-api-get-started.html#create-a-connected-app. Do these four additional steps:
|
|
19
19
|
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/plugin-agent",
|
|
3
|
-
"version": "1.20.12
|
|
3
|
+
"version": "1.20.12",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@salesforce/plugin-agent",
|
|
9
|
-
"version": "1.20.12
|
|
9
|
+
"version": "1.20.12",
|
|
10
10
|
"license": "BSD-3-Clause",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@inquirer/core": "^10.1.6",
|
|
13
13
|
"@inquirer/prompts": "^7.2.0",
|
|
14
14
|
"@oclif/core": "^4",
|
|
15
15
|
"@oclif/multi-stage-output": "^0.7.12",
|
|
16
|
-
"@salesforce/agents": "
|
|
16
|
+
"@salesforce/agents": "^0.14.8",
|
|
17
17
|
"@salesforce/core": "^8.9.1",
|
|
18
18
|
"@salesforce/kit": "^3.2.3",
|
|
19
19
|
"@salesforce/sf-plugins-core": "^12.2.0",
|
|
@@ -3556,10 +3556,12 @@
|
|
|
3556
3556
|
"license": "MIT"
|
|
3557
3557
|
},
|
|
3558
3558
|
"node_modules/@salesforce/agents": {
|
|
3559
|
-
"version": "0.14.
|
|
3559
|
+
"version": "0.14.8",
|
|
3560
|
+
"resolved": "https://registry.npmjs.org/@salesforce/agents/-/agents-0.14.8.tgz",
|
|
3561
|
+
"integrity": "sha512-YdgUZwvfUopbKtdoJQWmqV4HFbdA6AgxBMYlzgqVy7E7DBwwNgrEMrgxbENivhoQanbk6PaZQP9tvXvKv+DweQ==",
|
|
3560
3562
|
"license": "BSD-3-Clause",
|
|
3561
3563
|
"dependencies": {
|
|
3562
|
-
"@salesforce/core": "^8.
|
|
3564
|
+
"@salesforce/core": "^8.10.0",
|
|
3563
3565
|
"@salesforce/kit": "^3.2.3",
|
|
3564
3566
|
"@salesforce/source-deploy-retrieve": "^12.19.3",
|
|
3565
3567
|
"fast-xml-parser": "^4.5.3",
|
|
@@ -3692,9 +3694,9 @@
|
|
|
3692
3694
|
}
|
|
3693
3695
|
},
|
|
3694
3696
|
"node_modules/@salesforce/core": {
|
|
3695
|
-
"version": "8.
|
|
3696
|
-
"resolved": "https://registry.npmjs.org/@salesforce/core/-/core-8.
|
|
3697
|
-
"integrity": "sha512-
|
|
3697
|
+
"version": "8.10.0",
|
|
3698
|
+
"resolved": "https://registry.npmjs.org/@salesforce/core/-/core-8.10.0.tgz",
|
|
3699
|
+
"integrity": "sha512-gStIzB8wPjjwyKZCK8eSfwkLiv9h9qzP64b51U5THBskEjm6Sw6ZyWqZmCzA85FEZ/IM/n1nh4e3R9JoG6Z6mA==",
|
|
3698
3700
|
"license": "BSD-3-Clause",
|
|
3699
3701
|
"dependencies": {
|
|
3700
3702
|
"@jsforce/jsforce-node": "^3.7.0",
|
package/oclif.lock
CHANGED
|
@@ -1443,12 +1443,12 @@
|
|
|
1443
1443
|
resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
|
|
1444
1444
|
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
|
|
1445
1445
|
|
|
1446
|
-
"@salesforce/agents
|
|
1447
|
-
version "0.14.
|
|
1448
|
-
resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-0.14.
|
|
1449
|
-
integrity sha512-
|
|
1446
|
+
"@salesforce/agents@^0.14.8":
|
|
1447
|
+
version "0.14.8"
|
|
1448
|
+
resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-0.14.8.tgz#f0da5f8981fede6761c7e6ac054af639c0831d9e"
|
|
1449
|
+
integrity sha512-YdgUZwvfUopbKtdoJQWmqV4HFbdA6AgxBMYlzgqVy7E7DBwwNgrEMrgxbENivhoQanbk6PaZQP9tvXvKv+DweQ==
|
|
1450
1450
|
dependencies:
|
|
1451
|
-
"@salesforce/core" "^8.
|
|
1451
|
+
"@salesforce/core" "^8.10.0"
|
|
1452
1452
|
"@salesforce/kit" "^3.2.3"
|
|
1453
1453
|
"@salesforce/source-deploy-retrieve" "^12.19.3"
|
|
1454
1454
|
fast-xml-parser "^4.5.3"
|
|
@@ -1471,10 +1471,10 @@
|
|
|
1471
1471
|
strip-ansi "6.0.1"
|
|
1472
1472
|
ts-retry-promise "^0.8.1"
|
|
1473
1473
|
|
|
1474
|
-
"@salesforce/core@^8.5.1", "@salesforce/core@^8.8.0", "@salesforce/core@^8.8.2", "@salesforce/core@^8.8.5", "@salesforce/core@^8.8.7", "@salesforce/core@^8.9.1":
|
|
1475
|
-
version "8.
|
|
1476
|
-
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.
|
|
1477
|
-
integrity sha512-
|
|
1474
|
+
"@salesforce/core@^8.10.0", "@salesforce/core@^8.5.1", "@salesforce/core@^8.8.0", "@salesforce/core@^8.8.2", "@salesforce/core@^8.8.5", "@salesforce/core@^8.8.7", "@salesforce/core@^8.9.1":
|
|
1475
|
+
version "8.10.0"
|
|
1476
|
+
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.10.0.tgz#017fe618b1dd086298d1133a6ed0f509d56ea495"
|
|
1477
|
+
integrity sha512-gStIzB8wPjjwyKZCK8eSfwkLiv9h9qzP64b51U5THBskEjm6Sw6ZyWqZmCzA85FEZ/IM/n1nh4e3R9JoG6Z6mA==
|
|
1478
1478
|
dependencies:
|
|
1479
1479
|
"@jsforce/jsforce-node" "^3.7.0"
|
|
1480
1480
|
"@salesforce/kit" "^3.2.2"
|
package/oclif.manifest.json
CHANGED
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"agent:preview": {
|
|
106
106
|
"aliases": [],
|
|
107
107
|
"args": {},
|
|
108
|
-
"description": "Use this command to have a natural language conversation with an active agent in your org, as if you were an actual user. The interface is simple: in the \"Start typing...\" prompt, enter a statement, question, or command; when you're done, enter Return. Your utterance is posted on the right along with a timestamp. The agent then responds on the left. To exit the conversation, hit ESC or Control+C.\n\nThis command is useful to test if the agent responds to your utterances as you expect. For example, you can test that the agent uses a particular topic when asked a question, and then whether it invokes the correct action associated with that topic. This command is the CLI-equivalent of the Conversation Preview panel in your org's Agent Builder UI.\n\nWhen the session concludes, the command asks if you want to save the API responses and chat transcripts. By default, the files are saved to the \"./temp/agent-preview\" directory. Specify a new default directory by setting the environment variable \"SF_AGENT_PREVIEW_OUTPUT_DIR\" to the directory. Or you can pass the directory to the --output-dir flag.\n\nFind the agent's API name in its main details page in your org's Agent page in Setup.\n\nBefore you use this command, you must complete these steps:\n
|
|
108
|
+
"description": "Use this command to have a natural language conversation with an active agent in your org, as if you were an actual user. The interface is simple: in the \"Start typing...\" prompt, enter a statement, question, or command; when you're done, enter Return. Your utterance is posted on the right along with a timestamp. The agent then responds on the left. To exit the conversation, hit ESC or Control+C.\n\nThis command is useful to test if the agent responds to your utterances as you expect. For example, you can test that the agent uses a particular topic when asked a question, and then whether it invokes the correct action associated with that topic. This command is the CLI-equivalent of the Conversation Preview panel in your org's Agent Builder UI.\n\nWhen the session concludes, the command asks if you want to save the API responses and chat transcripts. By default, the files are saved to the \"./temp/agent-preview\" directory. Specify a new default directory by setting the environment variable \"SF_AGENT_PREVIEW_OUTPUT_DIR\" to the directory. Or you can pass the directory to the --output-dir flag.\n\nFind the agent's API name in its main details page in your org's Agent page in Setup.\n\nBefore you use this command, you must complete these steps:\n-----------------------------------------------------------\n\n1. Create a connected app in your org as described in the \"Create a Connected App\" section here: https://developer.salesforce.com/docs/einstein/genai/guide/agent-api-get-started.html#create-a-connected-app. Do these four additional steps:\n\n a. When specifying the connected app's Callback URL, add this second callback URL on a new line: \"http://localhost:1717/OauthRedirect\".\n\n b. When adding the scopes to the connected app, add \"Manage user data via Web browsers (web)\".\n\n c. Ensure that the \"Require Secret for Web Server Flow\" option is not selected.\n\n d. Make note of the user that you specified as the \"Run As\" user when updating the Client Credentials Flow section.\n\n2. Add the connected app to your agent as described in the \"Add Connected App to Agent\" section here: https://developer.salesforce.com/docs/einstein/genai/guide/agent-api-get-started.html#add-connected-app-to-agent.\n\n3. Copy the consumer key from your connected app as described in the \"Obtain Credentials\" section here: https://developer.salesforce.com/docs/einstein/genai/guide/agent-api-get-started.html#obtain-credentials.\n\n4. Set the \"SFDX_AUTH_SCOPES\" environment variable to \"refresh_token sfap_api chatbot_api web api\". This step ensures that you get the specific OAuth scopes required by this command.\n\n5. Using the username of the user you specified as the \"Run As\" user above, authorize your org using the web server flow, as described in this document: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_web_flow.htm.\n\n IMPORTANT: You must use the \"--client-id <CONNECTED-APP-CONSUMER-KEY>\" flag of \"org login web\", where CONNECTED-APP-CONSUMER-KEY is the consumer key you previously copied. This step ensures that the \"org login web\" command uses your custom connected app, and not the default CLI connected app.\n\n Press Enter to skip sharing the client secret.\n\n6. When you run this command to interact with an agent, specify the username you authorized in the preceding step with the --connected-app-user (-a) flag.",
|
|
109
109
|
"examples": [
|
|
110
110
|
"Interact with an agent with API name \"Resort_Manager\" in the org with alias \"my-org\". Connect to your agent using the alias \"my-agent-user\"; this alias must point to the username who is authorized using the Web server flow:\n<%= config.bin %> <%= command.id %> --api-name \"Resort_Manager\" --target-org my-org --connected-app-user my-agent-user",
|
|
111
111
|
"Same as the preceding example, but this time save the conversation transcripts to the \"./transcripts/my-preview\" directory rather than the default \"./temp/agent-preview\":\n<%= config.bin %> <%= command.id %> --api-name \"Resort_Manager\" --target-org my-org --connected-app-user my-agent-user --output-dir \"transcripts/my-preview\""
|
|
@@ -1112,5 +1112,5 @@
|
|
|
1112
1112
|
]
|
|
1113
1113
|
}
|
|
1114
1114
|
},
|
|
1115
|
-
"version": "1.20.12
|
|
1115
|
+
"version": "1.20.12"
|
|
1116
1116
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/plugin-agent",
|
|
3
3
|
"description": "Commands to interact with Salesforce agents",
|
|
4
|
-
"version": "1.20.12
|
|
4
|
+
"version": "1.20.12",
|
|
5
5
|
"author": "Salesforce",
|
|
6
6
|
"bugs": "https://github.com/forcedotcom/cli/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"@inquirer/prompts": "^7.2.0",
|
|
10
10
|
"@oclif/core": "^4",
|
|
11
11
|
"@oclif/multi-stage-output": "^0.7.12",
|
|
12
|
-
"@salesforce/agents": "
|
|
12
|
+
"@salesforce/agents": "^0.14.8",
|
|
13
13
|
"@salesforce/core": "^8.9.1",
|
|
14
14
|
"@salesforce/kit": "^3.2.3",
|
|
15
15
|
"@salesforce/sf-plugins-core": "^12.2.0",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"exports": "./lib/index.js",
|
|
230
230
|
"type": "module",
|
|
231
231
|
"sfdx": {
|
|
232
|
-
"publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-agent/1.20.12
|
|
233
|
-
"signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-agent/1.20.12
|
|
232
|
+
"publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-agent/1.20.12.crt",
|
|
233
|
+
"signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-agent/1.20.12.sig"
|
|
234
234
|
}
|
|
235
235
|
}
|