@salesforce/plugin-agent 1.23.5 → 1.23.7
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 +10 -10
- package/lib/commands/agent/generate/test-spec.d.ts +61 -0
- package/lib/commands/agent/generate/test-spec.js +141 -25
- package/lib/commands/agent/generate/test-spec.js.map +1 -1
- package/npm-shrinkwrap.json +1345 -1064
- package/oclif.lock +1280 -1193
- package/oclif.manifest.json +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -130,7 +130,7 @@ EXAMPLES
|
|
|
130
130
|
$ sf agent create --name "Resort Manager" --spec specs/resortManagerAgent.yaml --preview
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
133
|
+
_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/create.ts)_
|
|
134
134
|
|
|
135
135
|
## `sf agent generate agent-spec`
|
|
136
136
|
|
|
@@ -235,7 +235,7 @@ EXAMPLES
|
|
|
235
235
|
$ sf agent generate agent-spec --tone formal --agent-user resortmanager@myorg.com
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
-
_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
238
|
+
_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/generate/agent-spec.ts)_
|
|
239
239
|
|
|
240
240
|
## `sf agent generate template`
|
|
241
241
|
|
|
@@ -283,7 +283,7 @@ EXAMPLES
|
|
|
283
283
|
force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml --agent-version 1
|
|
284
284
|
```
|
|
285
285
|
|
|
286
|
-
_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
286
|
+
_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/generate/template.ts)_
|
|
287
287
|
|
|
288
288
|
## `sf agent generate test-spec`
|
|
289
289
|
|
|
@@ -341,7 +341,7 @@ EXAMPLES
|
|
|
341
341
|
force-app//main/default/aiEvaluationDefinitions/Resort_Manager_Tests.aiEvaluationDefinition-meta.xml
|
|
342
342
|
```
|
|
343
343
|
|
|
344
|
-
_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
344
|
+
_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/generate/test-spec.ts)_
|
|
345
345
|
|
|
346
346
|
## `sf agent preview`
|
|
347
347
|
|
|
@@ -404,7 +404,7 @@ EXAMPLES
|
|
|
404
404
|
transcripts/my-preview
|
|
405
405
|
```
|
|
406
406
|
|
|
407
|
-
_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
407
|
+
_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/preview.ts)_
|
|
408
408
|
|
|
409
409
|
## `sf agent test create`
|
|
410
410
|
|
|
@@ -459,7 +459,7 @@ EXAMPLES
|
|
|
459
459
|
$ sf agent test create --spec specs/Resort_Manager-testSpec.yaml --api-name Resort_Manager_Test --preview
|
|
460
460
|
```
|
|
461
461
|
|
|
462
|
-
_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
462
|
+
_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/test/create.ts)_
|
|
463
463
|
|
|
464
464
|
## `sf agent test list`
|
|
465
465
|
|
|
@@ -494,7 +494,7 @@ EXAMPLES
|
|
|
494
494
|
$ sf agent test list --target-org my-org
|
|
495
495
|
```
|
|
496
496
|
|
|
497
|
-
_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
497
|
+
_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/test/list.ts)_
|
|
498
498
|
|
|
499
499
|
## `sf agent test results`
|
|
500
500
|
|
|
@@ -550,7 +550,7 @@ FLAG DESCRIPTIONS
|
|
|
550
550
|
test results aren't written.
|
|
551
551
|
```
|
|
552
552
|
|
|
553
|
-
_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
553
|
+
_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/test/results.ts)_
|
|
554
554
|
|
|
555
555
|
## `sf agent test resume`
|
|
556
556
|
|
|
@@ -613,7 +613,7 @@ FLAG DESCRIPTIONS
|
|
|
613
613
|
test results aren't written.
|
|
614
614
|
```
|
|
615
615
|
|
|
616
|
-
_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
616
|
+
_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/test/resume.ts)_
|
|
617
617
|
|
|
618
618
|
## `sf agent test run`
|
|
619
619
|
|
|
@@ -677,6 +677,6 @@ FLAG DESCRIPTIONS
|
|
|
677
677
|
test results aren't written.
|
|
678
678
|
```
|
|
679
679
|
|
|
680
|
-
_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.
|
|
680
|
+
_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.23.7/src/commands/agent/test/run.ts)_
|
|
681
681
|
|
|
682
682
|
<!-- commandsstop -->
|
|
@@ -1,4 +1,64 @@
|
|
|
1
1
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { ComponentSet } from '@salesforce/source-deploy-retrieve';
|
|
3
|
+
type TestCase = {
|
|
4
|
+
utterance: string;
|
|
5
|
+
expectedActions: string[];
|
|
6
|
+
expectedTopic: string;
|
|
7
|
+
expectedOutcome: string;
|
|
8
|
+
customEvaluations?: Array<{
|
|
9
|
+
label: string;
|
|
10
|
+
name: string;
|
|
11
|
+
parameters: Array<{
|
|
12
|
+
name: 'operator';
|
|
13
|
+
value: string;
|
|
14
|
+
isReference: false;
|
|
15
|
+
} | {
|
|
16
|
+
name: 'actual';
|
|
17
|
+
value: string;
|
|
18
|
+
isReference: true;
|
|
19
|
+
} | {
|
|
20
|
+
name: 'expected';
|
|
21
|
+
value: string;
|
|
22
|
+
isReference: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Creates a custom evaluation object with the provided parameters
|
|
28
|
+
*
|
|
29
|
+
* @param label - Descriptive label for the evaluation
|
|
30
|
+
* @param jsonPath - JSONPath for the actual value
|
|
31
|
+
* @param operator - Comparison operator
|
|
32
|
+
* @param expectedValue - Expected value to compare against
|
|
33
|
+
* @returns Custom evaluation object in the expected format
|
|
34
|
+
*/
|
|
35
|
+
export declare function createCustomEvaluation(label: string, jsonPath: string, operator: string, expectedValue: string): NonNullable<TestCase['customEvaluations']>[0];
|
|
36
|
+
export declare function promptForCustomEvaluations(): Promise<NonNullable<TestCase['customEvaluations']>>;
|
|
37
|
+
export declare function getMetadataFilePaths(cs: ComponentSet, type: string): Record<string, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves GenAIPlugins and GenAiFunctions from a Bot's GenAiPlannerBundle
|
|
40
|
+
*
|
|
41
|
+
* We have to get the bot version and planner for the selected bot so that we can get
|
|
42
|
+
* the actions (GenAiFunctions) and topics (GenAiPlugins) that can be selected for the
|
|
43
|
+
* test cases.
|
|
44
|
+
*
|
|
45
|
+
* The BotVersion tells us which GenAiPlannerBundle to use, and the GenAiPlannerBundle
|
|
46
|
+
* tells us which GenAiPlugins and GenAiFunctions are available. More GenAiFunctions
|
|
47
|
+
* might be available in the GenAiPlugin, so we read those later when the user
|
|
48
|
+
* has selected a GenAiPlugin/topic - inside of `promptForTestCase`.
|
|
49
|
+
*
|
|
50
|
+
* @param subjectName - The name of the Bot to analyze
|
|
51
|
+
* @param cs - ComponentSet containing Bot, GenAiPlannerBundle, and GenAiPlugin components
|
|
52
|
+
*
|
|
53
|
+
* @returns Object containing:
|
|
54
|
+
* - genAiPlugins: Record of plugin names to their file paths
|
|
55
|
+
* - genAiFunctions: Array of function names
|
|
56
|
+
*/
|
|
57
|
+
export declare function getPluginsAndFunctions(subjectName: string, cs: ComponentSet): Promise<{
|
|
58
|
+
genAiPlugins: Record<string, string>;
|
|
59
|
+
genAiFunctions: string[];
|
|
60
|
+
}>;
|
|
61
|
+
export declare function ensureYamlExtension(filePath: string): string;
|
|
2
62
|
export default class AgentGenerateTestSpec extends SfCommand<void> {
|
|
3
63
|
static readonly summary: string;
|
|
4
64
|
static readonly description: string;
|
|
@@ -11,3 +71,4 @@ export default class AgentGenerateTestSpec extends SfCommand<void> {
|
|
|
11
71
|
};
|
|
12
72
|
run(): Promise<void>;
|
|
13
73
|
}
|
|
74
|
+
export {};
|
|
@@ -4,25 +4,21 @@
|
|
|
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
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
8
|
import { join, parse } from 'node:path';
|
|
9
9
|
import { existsSync } from 'node:fs';
|
|
10
10
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
11
|
-
import { Messages, SfProject } from '@salesforce/core';
|
|
11
|
+
import { Messages, SfError, SfProject } from '@salesforce/core';
|
|
12
12
|
import { AgentTest } from '@salesforce/agents';
|
|
13
13
|
import { select, input, confirm, checkbox } from '@inquirer/prompts';
|
|
14
14
|
import { XMLParser } from 'fast-xml-parser';
|
|
15
15
|
import { ComponentSetBuilder } from '@salesforce/source-deploy-retrieve';
|
|
16
16
|
import { warn } from '@oclif/core/errors';
|
|
17
|
+
import { ensureArray } from '@salesforce/kit';
|
|
17
18
|
import { theme } from '../../../inquirer-theme.js';
|
|
18
19
|
import yesNoOrCancel from '../../../yes-no-cancel.js';
|
|
19
20
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
20
21
|
const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.generate.test-spec');
|
|
21
|
-
function castArray(value) {
|
|
22
|
-
if (!value)
|
|
23
|
-
return [];
|
|
24
|
-
return Array.isArray(value) ? value : [value];
|
|
25
|
-
}
|
|
26
22
|
/**
|
|
27
23
|
* Prompts the user for test case information through interactive prompts.
|
|
28
24
|
*
|
|
@@ -33,6 +29,7 @@ function castArray(value) {
|
|
|
33
29
|
* - expectedTopic: The expected topic for classification
|
|
34
30
|
* - expectedActions: Array of expected action names
|
|
35
31
|
* - expectedOutcome: Expected outcome string
|
|
32
|
+
* - customEvaluations: Optional array of custom evaluation JSONpaths, names, and required information for metadata
|
|
36
33
|
*
|
|
37
34
|
* @remarks
|
|
38
35
|
* This function guides users through creating a test case by:
|
|
@@ -40,6 +37,7 @@ function castArray(value) {
|
|
|
40
37
|
* 2. Selecting an expected topic (from GenAiPlugins specified in the Bot's GenAiPlannerBundle)
|
|
41
38
|
* 3. Choosing expected actions (from GenAiFunctions in the GenAiPlannerBundle or GenAiPlugin)
|
|
42
39
|
* 4. Defining an expected outcome
|
|
40
|
+
* 5. Optional array of custom evaluation JSONpaths, names, and required information for metadata
|
|
43
41
|
*/
|
|
44
42
|
async function promptForTestCase(genAiPlugins, genAiFunctions) {
|
|
45
43
|
const utterance = await input({
|
|
@@ -57,10 +55,10 @@ async function promptForTestCase(genAiPlugins, genAiFunctions) {
|
|
|
57
55
|
// the actions from the plugin are read from the GenAiPlugin file
|
|
58
56
|
let actions = [];
|
|
59
57
|
if (genAiPlugins[expectedTopic]) {
|
|
60
|
-
const genAiPluginXml = await readFile(genAiPlugins[expectedTopic], 'utf-8');
|
|
58
|
+
const genAiPluginXml = await fs.promises.readFile(genAiPlugins[expectedTopic], 'utf-8');
|
|
61
59
|
const parser = new XMLParser();
|
|
62
60
|
const parsed = parser.parse(genAiPluginXml);
|
|
63
|
-
actions =
|
|
61
|
+
actions = ensureArray(parsed.GenAiPlugin.genAiFunctions ?? []).map((f) => f.functionName);
|
|
64
62
|
}
|
|
65
63
|
const expectedActions = (await checkbox({
|
|
66
64
|
message: 'Expected action(s)',
|
|
@@ -91,14 +89,103 @@ async function promptForTestCase(genAiPlugins, genAiFunctions) {
|
|
|
91
89
|
},
|
|
92
90
|
theme,
|
|
93
91
|
});
|
|
92
|
+
const customEvaluations = await promptForCustomEvaluations();
|
|
94
93
|
return {
|
|
95
94
|
utterance,
|
|
96
95
|
expectedTopic,
|
|
97
96
|
expectedActions,
|
|
98
97
|
expectedOutcome,
|
|
98
|
+
customEvaluations,
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Creates a custom evaluation object with the provided parameters
|
|
103
|
+
*
|
|
104
|
+
* @param label - Descriptive label for the evaluation
|
|
105
|
+
* @param jsonPath - JSONPath for the actual value
|
|
106
|
+
* @param operator - Comparison operator
|
|
107
|
+
* @param expectedValue - Expected value to compare against
|
|
108
|
+
* @returns Custom evaluation object in the expected format
|
|
109
|
+
*/
|
|
110
|
+
export function createCustomEvaluation(label, jsonPath, operator, expectedValue) {
|
|
111
|
+
return {
|
|
112
|
+
label,
|
|
113
|
+
name: !isNaN(Number(expectedValue)) && !isNaN(parseFloat(expectedValue)) ? 'numeric_comparison' : 'string_comparison',
|
|
114
|
+
parameters: [
|
|
115
|
+
{ name: 'operator', value: operator, isReference: false },
|
|
116
|
+
{ name: 'actual', value: jsonPath, isReference: true },
|
|
117
|
+
{ name: 'expected', value: expectedValue, isReference: false },
|
|
118
|
+
],
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export async function promptForCustomEvaluations() {
|
|
122
|
+
const customEvaluations = [];
|
|
123
|
+
let wantsCustomEvaluation = await confirm({
|
|
124
|
+
message: 'Do you want to add a custom evaluation',
|
|
125
|
+
default: false,
|
|
126
|
+
theme,
|
|
127
|
+
});
|
|
128
|
+
// we can have multiple custom evaluations, prompt until the user is done
|
|
129
|
+
while (wantsCustomEvaluation) {
|
|
130
|
+
// eslint-disable-next-line no-await-in-loop
|
|
131
|
+
const label = await input({
|
|
132
|
+
message: 'Custom evaluation label (descriptive name)',
|
|
133
|
+
validate: (d) => {
|
|
134
|
+
if (!d.length) {
|
|
135
|
+
return 'Label cannot be empty';
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
},
|
|
139
|
+
theme,
|
|
140
|
+
});
|
|
141
|
+
// eslint-disable-next-line no-await-in-loop
|
|
142
|
+
const jsonPath = await input({
|
|
143
|
+
message: 'Custom evaluation JSONPath (starts with $)',
|
|
144
|
+
validate: (d) => {
|
|
145
|
+
if (!d.length) {
|
|
146
|
+
return 'JSONPath cannot be empty';
|
|
147
|
+
}
|
|
148
|
+
if (!d.startsWith('$')) {
|
|
149
|
+
return 'JSONPath must start with $';
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
152
|
+
},
|
|
153
|
+
theme,
|
|
154
|
+
});
|
|
155
|
+
// eslint-disable-next-line no-await-in-loop
|
|
156
|
+
const operator = await select({
|
|
157
|
+
message: 'Comparison operator',
|
|
158
|
+
choices: [
|
|
159
|
+
{ name: 'Equals ', value: 'equals' },
|
|
160
|
+
{ name: 'Greater than or equals (>=)', value: 'greater_than_or_equal' },
|
|
161
|
+
{ name: 'Greater than (>)', value: 'greater_than' },
|
|
162
|
+
{ name: 'Less than (<)', value: 'less_than' },
|
|
163
|
+
{ name: 'Less than or equals (<=)', value: 'less_than_or_equal' },
|
|
164
|
+
],
|
|
165
|
+
theme,
|
|
166
|
+
});
|
|
167
|
+
// eslint-disable-next-line no-await-in-loop
|
|
168
|
+
const expectedValue = await input({
|
|
169
|
+
message: 'Expected value',
|
|
170
|
+
validate: (d) => {
|
|
171
|
+
if (!d.length) {
|
|
172
|
+
return 'Expected value cannot be empty';
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
175
|
+
},
|
|
176
|
+
theme,
|
|
177
|
+
});
|
|
178
|
+
customEvaluations.push(createCustomEvaluation(label, jsonPath, operator, expectedValue));
|
|
179
|
+
// eslint-disable-next-line no-await-in-loop
|
|
180
|
+
wantsCustomEvaluation = await confirm({
|
|
181
|
+
message: 'Do you want to add another custom evaluation',
|
|
182
|
+
default: false,
|
|
183
|
+
theme,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return customEvaluations;
|
|
187
|
+
}
|
|
188
|
+
export function getMetadataFilePaths(cs, type) {
|
|
102
189
|
return [...cs.filter((component) => component.type.name === type && component.fullName !== '*')].reduce((acc, component) => ({
|
|
103
190
|
...acc,
|
|
104
191
|
[component.fullName]: cs.getComponentFilenamesByNameAndType({
|
|
@@ -126,25 +213,54 @@ function getMetadataFilePaths(cs, type) {
|
|
|
126
213
|
* - genAiPlugins: Record of plugin names to their file paths
|
|
127
214
|
* - genAiFunctions: Array of function names
|
|
128
215
|
*/
|
|
129
|
-
async function getPluginsAndFunctions(subjectName, cs) {
|
|
216
|
+
export async function getPluginsAndFunctions(subjectName, cs) {
|
|
130
217
|
const botVersions = getMetadataFilePaths(cs, 'Bot');
|
|
131
|
-
|
|
218
|
+
let genAiFunctions = [];
|
|
219
|
+
let genAiPlugins = {};
|
|
132
220
|
const parser = new XMLParser();
|
|
133
|
-
const botVersionXml = await readFile(botVersions[subjectName], 'utf-8');
|
|
221
|
+
const botVersionXml = await fs.promises.readFile(botVersions[subjectName], 'utf-8');
|
|
134
222
|
const parsedBotVersion = parser.parse(botVersionXml);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
223
|
+
try {
|
|
224
|
+
// if the users still have genAiPlanner, not the bundle, we can work with that
|
|
225
|
+
const genAiPlanners = getMetadataFilePaths(cs, 'GenAiPlanner');
|
|
226
|
+
const plannerXml = await fs.promises.readFile(genAiPlanners[parsedBotVersion.BotVersion.conversationDefinitionPlanners.genAiPlannerName ?? subjectName], 'utf-8');
|
|
227
|
+
const parsedPlanner = parser.parse(plannerXml);
|
|
228
|
+
genAiFunctions = ensureArray(parsedPlanner.GenAiPlanner.genAiFunctions).map(({ genAiFunctionName }) => genAiFunctionName);
|
|
229
|
+
genAiPlugins = ensureArray(parsedPlanner.GenAiPlanner.genAiPlugins).reduce((acc, { genAiPluginName }) => ({
|
|
230
|
+
...acc,
|
|
231
|
+
[genAiPluginName]: cs.getComponentFilenamesByNameAndType({
|
|
232
|
+
fullName: genAiPluginName,
|
|
233
|
+
type: 'GenAiPlugin',
|
|
234
|
+
})[0],
|
|
235
|
+
}), {});
|
|
236
|
+
}
|
|
237
|
+
catch (e) {
|
|
238
|
+
// do nothing, we were trying to read the old genAiPlanner
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
if (genAiFunctions.length === 0 && Object.keys(genAiPlugins).length === 0) {
|
|
242
|
+
// if we've already found functions and plugins from the genAiPlanner, don't try to read the bundle
|
|
243
|
+
const genAiPlannerBundles = getMetadataFilePaths(cs, 'GenAiPlannerBundle');
|
|
244
|
+
const plannerBundleXml = await fs.promises.readFile(genAiPlannerBundles[parsedBotVersion.BotVersion.conversationDefinitionPlanners.genAiPlannerName ?? subjectName], 'utf-8');
|
|
245
|
+
const parsedPlannerBundle = parser.parse(plannerBundleXml);
|
|
246
|
+
genAiFunctions = ensureArray(parsedPlannerBundle.GenAiPlannerBundle.genAiPlugins)
|
|
247
|
+
.filter((f) => 'genAiCustomizedPlugin' in f)
|
|
248
|
+
.map(({ genAiCustomizedPlugin }) => genAiCustomizedPlugin.genAiFunctions.find((plugin) => plugin.functionName !== '').functionName);
|
|
249
|
+
genAiPlugins = ensureArray(parsedPlannerBundle.GenAiPlannerBundle.genAiPlugins).reduce((acc, { genAiPluginName }) => ({
|
|
250
|
+
...acc,
|
|
251
|
+
[genAiPluginName]: cs.getComponentFilenamesByNameAndType({
|
|
252
|
+
fullName: genAiPluginName,
|
|
253
|
+
type: 'GenAiPlugin',
|
|
254
|
+
})[0],
|
|
255
|
+
}), {});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch (e) {
|
|
259
|
+
throw new SfError(`Error parsing GenAiPlannerBundle: ${parsedBotVersion.BotVersion.conversationDefinitionPlanners.genAiPlannerName ?? subjectName}`);
|
|
260
|
+
}
|
|
145
261
|
return { genAiPlugins, genAiFunctions };
|
|
146
262
|
}
|
|
147
|
-
function ensureYamlExtension(filePath) {
|
|
263
|
+
export function ensureYamlExtension(filePath) {
|
|
148
264
|
const parsedPath = parse(filePath);
|
|
149
265
|
if (parsedPath.ext === '.yaml' || parsedPath.ext === '.yml')
|
|
150
266
|
return filePath;
|
|
@@ -219,7 +335,7 @@ export default class AgentGenerateTestSpec extends SfCommand {
|
|
|
219
335
|
const directoryPaths = (await SfProject.resolve().then((project) => project.getPackageDirectories())).map((dir) => dir.fullPath);
|
|
220
336
|
const cs = await ComponentSetBuilder.build({
|
|
221
337
|
metadata: {
|
|
222
|
-
metadataEntries: ['GenAiPlanner', 'GenAiPlugin', 'Bot'],
|
|
338
|
+
metadataEntries: ['GenAiPlanner', 'GenAiPlannerBundle', 'GenAiPlugin', 'Bot'],
|
|
223
339
|
directoryPaths,
|
|
224
340
|
},
|
|
225
341
|
});
|
|
@@ -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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"}
|