@salesforce/agents 0.9.5-preview.1 → 0.9.6

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.
@@ -3,7 +3,7 @@ import { Duration } from '@salesforce/kit';
3
3
  import { DeployResult, FileProperties } from '@salesforce/source-deploy-retrieve';
4
4
  export type TestStatus = 'NEW' | 'IN_PROGRESS' | 'COMPLETED' | 'ERROR' | 'TERMINATED';
5
5
  export type AgentTestStartResponse = {
6
- aiEvaluationId: string;
6
+ runId: string;
7
7
  status: TestStatus;
8
8
  };
9
9
  export type AgentTestStatusResponse = {
@@ -38,6 +38,7 @@ export type TestCaseResult = {
38
38
  errorCode?: string;
39
39
  errorMessage?: string;
40
40
  }>;
41
+ testNumber: number;
41
42
  };
42
43
  export type AgentTestResultsResponse = {
43
44
  status: TestStatus;
@@ -45,10 +46,7 @@ export type AgentTestResultsResponse = {
45
46
  endTime?: string;
46
47
  errorMessage?: string;
47
48
  subjectName: string;
48
- testSet: {
49
- name: string;
50
- testCases: TestCaseResult[];
51
- };
49
+ testCases: TestCaseResult[];
52
50
  };
53
51
  export type AvailableDefinition = Omit<FileProperties, 'manageableState' | 'namespacePrefix'>;
54
52
  export type TestCase = {
@@ -150,7 +148,8 @@ export declare class AgentTester {
150
148
  deployResult?: DeployResult;
151
149
  }>;
152
150
  }
153
- export declare function convertTestResultsToFormat(results: AgentTestResultsResponse, format: 'human' | 'json' | 'junit' | 'tap'): Promise<string>;
151
+ export declare function convertTestResultsToFormat(results: AgentTestResultsResponse, format: 'json' | 'junit' | 'tap'): Promise<string>;
152
+ export declare function humanFriendlyName(name: string): string;
154
153
  /**
155
154
  * Generate a test spec file from a TestSpec object
156
155
  */
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.AgentTester = exports.AgentTestCreateLifecycleStages = void 0;
7
4
  exports.convertTestResultsToFormat = convertTestResultsToFormat;
5
+ exports.humanFriendlyName = humanFriendlyName;
8
6
  exports.generateTestSpec = generateTestSpec;
9
7
  /*
10
8
  * Copyright (c) 2024, salesforce.com, inc.
@@ -16,7 +14,6 @@ const promises_1 = require("node:fs/promises");
16
14
  const node_path_1 = require("node:path");
17
15
  const core_1 = require("@salesforce/core");
18
16
  const kit_1 = require("@salesforce/kit");
19
- const ansis_1 = __importDefault(require("ansis"));
20
17
  const source_deploy_retrieve_1 = require("@salesforce/source-deploy-retrieve");
21
18
  const yaml_1 = require("yaml");
22
19
  const fast_xml_parser_1 = require("fast-xml-parser");
@@ -83,9 +80,9 @@ class AgentTester {
83
80
  const statusResponse = await this.status(jobId);
84
81
  if (statusResponse.status.toLowerCase() !== 'new') {
85
82
  const resultsResponse = await this.results(jobId);
86
- const totalTestCases = resultsResponse.testSet.testCases.length;
87
- const passingTestCases = resultsResponse.testSet.testCases.filter((tc) => tc.status.toLowerCase() === 'completed' && tc.testResults.every((r) => r.result === 'PASS')).length;
88
- const failingTestCases = resultsResponse.testSet.testCases.filter((tc) => ['error', 'completed'].includes(tc.status.toLowerCase()) &&
83
+ const totalTestCases = resultsResponse.testCases.length;
84
+ const passingTestCases = resultsResponse.testCases.filter((tc) => tc.status.toLowerCase() === 'completed' && tc.testResults.every((r) => r.result === 'PASS')).length;
85
+ const failingTestCases = resultsResponse.testCases.filter((tc) => ['error', 'completed'].includes(tc.status.toLowerCase()) &&
89
86
  tc.testResults.some((r) => r.result === 'FAILURE')).length;
90
87
  if (resultsResponse.status.toLowerCase() === 'completed') {
91
88
  await lifecycle.emit('AGENT_TEST_POLLING_EVENT', {
@@ -188,27 +185,28 @@ class AgentTester {
188
185
  },
189
186
  expectation: [
190
187
  {
191
- name: 'expectedTopic',
188
+ name: 'topic_sequence_match',
192
189
  expectedValue: tc.expectedTopic,
193
190
  },
194
191
  {
195
- name: 'expectedActions',
192
+ name: 'action_sequence_match',
196
193
  expectedValue: `[${tc.expectedActions.map((v) => `"${v}"`).join(',')}]`,
197
194
  },
198
195
  {
199
- name: 'expectedOutcome',
196
+ name: 'bot_response_rating',
200
197
  expectedValue: tc.expectedOutcome,
201
198
  },
202
199
  ],
203
200
  })),
204
201
  },
205
202
  });
203
+ const finalXml = `<?xml version="1.0" encoding="UTF-8"?>\n${xml}`;
206
204
  await (0, promises_1.mkdir)(outputDir, { recursive: true });
207
- await (0, promises_1.writeFile)(definitionPath, `<?xml version="1.0" encoding="UTF-8"?>\n${xml}`);
205
+ await (0, promises_1.writeFile)(definitionPath, finalXml);
208
206
  if (preview)
209
207
  return {
210
208
  path: definitionPath,
211
- contents: xml,
209
+ contents: finalXml,
212
210
  };
213
211
  const cs = await source_deploy_retrieve_1.ComponentSetBuilder.build({ sourcepath: [definitionPath] });
214
212
  const deploy = await cs.deploy({ usernameOrConnection: this.connection });
@@ -227,55 +225,12 @@ class AgentTester {
227
225
  if (!result.response.success) {
228
226
  throw new core_1.SfError(result.response.errorMessage ?? `Unable to deploy ${result.response.id}`);
229
227
  }
230
- return { path: definitionPath, contents: xml, deployResult: result };
228
+ return { path: definitionPath, contents: finalXml, deployResult: result };
231
229
  }
232
230
  }
233
231
  exports.AgentTester = AgentTester;
234
- function truncate(value, decimals = 2) {
235
- const remainder = value % 1;
236
- // truncate remainder to specified decimals
237
- const fractionalPart = remainder ? remainder.toString().split('.')[1].slice(0, decimals) : '0'.repeat(decimals);
238
- const wholeNumberPart = Math.floor(value).toString();
239
- return decimals ? `${wholeNumberPart}.${fractionalPart}` : wholeNumberPart;
240
- }
241
- function readableTime(time, decimalPlaces = 2) {
242
- if (time < 1000) {
243
- return '< 1s';
244
- }
245
- // if time < 1000ms, return time in ms
246
- if (time < 1000) {
247
- return `${time}ms`;
248
- }
249
- // if time < 60s, return time in seconds
250
- if (time < 60_000) {
251
- return `${truncate(time / 1000, decimalPlaces)}s`;
252
- }
253
- // if time < 60m, return time in minutes and seconds
254
- if (time < 3_600_000) {
255
- const minutes = Math.floor(time / 60_000);
256
- const seconds = truncate((time % 60_000) / 1000, decimalPlaces);
257
- return `${minutes}m ${seconds}s`;
258
- }
259
- // if time >= 60m, return time in hours and minutes
260
- const hours = Math.floor(time / 3_600_000);
261
- const minutes = Math.floor((time % 3_600_000) / 60_000);
262
- return `${hours}h ${minutes}m`;
263
- }
264
- function makeSimpleTable(data, title) {
265
- if (Object.keys(data).length === 0) {
266
- return '';
267
- }
268
- const longestKey = Object.keys(data).reduce((acc, key) => (key.length > acc ? key.length : acc), 0);
269
- const longestValue = Object.values(data).reduce((acc, value) => (value.length > acc ? value.length : acc), 0);
270
- const table = Object.entries(data)
271
- .map(([key, value]) => `${key.padEnd(longestKey)} ${value.padEnd(longestValue)}`)
272
- .join('\n');
273
- return `${title}\n${table}`;
274
- }
275
232
  async function convertTestResultsToFormat(results, format) {
276
233
  switch (format) {
277
- case 'human':
278
- return humanFormat(results);
279
234
  case 'json':
280
235
  return jsonFormat(results);
281
236
  case 'junit':
@@ -286,58 +241,24 @@ async function convertTestResultsToFormat(results, format) {
286
241
  throw new Error(`Unsupported format: ${format}`);
287
242
  }
288
243
  }
289
- async function humanFormat(details) {
290
- const { Ux } = await import('@salesforce/sf-plugins-core');
291
- const ux = new Ux();
292
- const tables = [];
293
- for (const testCase of details.testSet.testCases) {
294
- const number = details.testSet.testCases.indexOf(testCase) + 1;
295
- const table = ux.makeTable({
296
- title: `${ansis_1.default.bold(`Test Case #${number}`)}\n${ansis_1.default.dim('Utterance')}: ${testCase.inputs.utterance}`,
297
- overflow: 'wrap',
298
- columns: ['test', 'result', { key: 'expected', width: '40%' }, { key: 'actual', width: '40%' }],
299
- data: testCase.testResults.map((r) => ({
300
- test: r.name,
301
- result: r.result === 'PASS' ? ansis_1.default.green('Pass') : ansis_1.default.red('Fail'),
302
- expected: r.expectedValue,
303
- actual: r.actualValue,
304
- })),
305
- width: '100%',
306
- });
307
- tables.push(table);
308
- }
309
- const topicPassCount = details.testSet.testCases.reduce((acc, tc) => {
310
- const topic = tc.testResults.find((r) => r.name === 'topic_sequence_match');
311
- return topic?.result === 'PASS' ? acc + 1 : acc;
312
- }, 0);
313
- const topicPassPercent = (topicPassCount / details.testSet.testCases.length) * 100;
314
- const actionPassCount = details.testSet.testCases.reduce((acc, tc) => {
315
- const action = tc.testResults.find((r) => r.name === 'action_sequence_match');
316
- return action?.result === 'PASS' ? acc + 1 : acc;
317
- }, 0);
318
- const actionPassPercent = (actionPassCount / details.testSet.testCases.length) * 100;
319
- const outcomePassCount = details.testSet.testCases.reduce((acc, tc) => {
320
- const outcome = tc.testResults.find((r) => r.name === 'bot_response_rating');
321
- return outcome?.result === 'PASS' ? acc + 1 : acc;
322
- }, 0);
323
- const outcomePassPercent = (outcomePassCount / details.testSet.testCases.length) * 100;
324
- const results = {
325
- Status: details.status,
326
- Duration: details.endTime
327
- ? readableTime(new Date(details.endTime).getTime() - new Date(details.startTime).getTime())
328
- : 'Unknown',
329
- 'Topic Pass %': `${topicPassPercent.toFixed(2)}%`,
330
- 'Action Pass %': `${actionPassPercent.toFixed(2)}%`,
331
- 'Outcome Pass %': `${outcomePassPercent.toFixed(2)}%`,
244
+ /**
245
+ * Clean a string by replacing HTML entities with their respective characters. Implementation done by copilot.
246
+ *
247
+ * This is only required until W-17594913 is resolved by SF Eval
248
+ *
249
+ * @param str - The string to clean.
250
+ * @returns The cleaned string with all HTML entities replaced with their respective characters.
251
+ */
252
+ function decodeHtmlEntities(str) {
253
+ const entities = {
254
+ '&quot;': '"',
255
+ '&apos;': "'",
256
+ '&amp;': '&',
257
+ '&lt;': '<',
258
+ '&gt;': '>',
259
+ '&#39;': "'",
332
260
  };
333
- const resultsTable = makeSimpleTable(results, ansis_1.default.bold.blue('Test Results'));
334
- const failedTestCases = details.testSet.testCases.filter((tc) => tc.status.toLowerCase() === 'error');
335
- const failedTestCasesObj = Object.fromEntries(Object.entries(failedTestCases).map(([, tc]) => [
336
- `Test Case #${failedTestCases.indexOf(tc) + 1}`,
337
- tc.testResults.filter((r) => r.result === 'FAILURE').join(', '),
338
- ]));
339
- const failedTestCasesTable = makeSimpleTable(failedTestCasesObj, ansis_1.default.red.bold('Failed Test Cases'));
340
- return tables.join('\n') + `\n${resultsTable}\n\n${failedTestCasesTable}\n`;
261
+ return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => entities[entity] || entity);
341
262
  }
342
263
  async function jsonFormat(results) {
343
264
  return Promise.resolve(JSON.stringify(results, null, 2));
@@ -348,9 +269,9 @@ async function junitFormat(results) {
348
269
  attributeNamePrefix: '$',
349
270
  ignoreAttributes: false,
350
271
  });
351
- const testCount = results.testSet.testCases.length;
352
- const failureCount = results.testSet.testCases.filter((tc) => ['error', 'completed'].includes(tc.status.toLowerCase()) && tc.testResults.some((r) => r.result === 'FAILURE')).length;
353
- const time = results.testSet.testCases.reduce((acc, tc) => {
272
+ const testCount = results.testCases.length;
273
+ const failureCount = results.testCases.filter((tc) => ['error', 'completed'].includes(tc.status.toLowerCase()) && tc.testResults.some((r) => r.result === 'FAILURE')).length;
274
+ const time = results.testCases.reduce((acc, tc) => {
354
275
  if (tc.endTime && tc.startTime) {
355
276
  return acc + new Date(tc.endTime).getTime() - new Date(tc.startTime).getTime();
356
277
  }
@@ -367,12 +288,12 @@ async function junitFormat(results) {
367
288
  { $name: 'start-time', $value: results.startTime },
368
289
  { $name: 'end-time', $value: results.endTime },
369
290
  ],
370
- testsuite: results.testSet.testCases.map((testCase) => {
291
+ testsuite: results.testCases.map((testCase) => {
371
292
  const testCaseTime = testCase.endTime
372
293
  ? new Date(testCase.endTime).getTime() - new Date(testCase.startTime).getTime()
373
294
  : 0;
374
295
  return {
375
- $name: `${results.testSet.name}.${results.testSet.testCases.indexOf(testCase) + 1}`,
296
+ $name: testCase.testNumber,
376
297
  $time: testCaseTime,
377
298
  $assertions: testCase.testResults.length,
378
299
  failure: testCase.testResults
@@ -388,20 +309,32 @@ async function junitFormat(results) {
388
309
  });
389
310
  return Promise.resolve(`<?xml version="1.0" encoding="UTF-8"?>\n${suites}`.trim());
390
311
  }
312
+ function humanFriendlyName(name) {
313
+ switch (name) {
314
+ case 'topic_sequence_match':
315
+ return 'Topic';
316
+ case 'action_sequence_match':
317
+ return 'Action';
318
+ case 'bot_response_rating':
319
+ return 'Outcome';
320
+ default:
321
+ return name;
322
+ }
323
+ }
391
324
  async function tapFormat(results) {
392
325
  const lines = [];
393
326
  let expectationCount = 0;
394
- for (const testCase of results.testSet.testCases) {
327
+ for (const testCase of results.testCases) {
395
328
  for (const result of testCase.testResults) {
396
329
  const status = result.result === 'PASS' ? 'ok' : 'not ok';
397
330
  expectationCount++;
398
- lines.push(`${status} ${expectationCount} ${results.testSet.name}.${results.testSet.testCases.indexOf(testCase) + 1}`);
331
+ lines.push(`${status} ${expectationCount} ${testCase.testNumber}.${result.name}`);
399
332
  if (status === 'not ok') {
400
333
  lines.push(' ---');
401
334
  lines.push(` message: ${result.errorMessage ?? 'Unknown error'}`);
402
335
  lines.push(` expectation: ${result.name}`);
403
- lines.push(` actual: ${result.actualValue}`);
404
- lines.push(` expected: ${result.expectedValue}`);
336
+ lines.push(` actual: ${decodeHtmlEntities(result.actualValue)}`);
337
+ lines.push(` expected: ${decodeHtmlEntities(result.expectedValue)}`);
405
338
  lines.push(' ...');
406
339
  }
407
340
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentTester.js","sourceRoot":"","sources":["../src/agentTester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentTester.js","sourceRoot":"","sources":["../src/agentTester.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { type AgentCreateConfig, type AgentCreateConfigV2, type AgentCreateResponse, type AgentCreateResponseV2, type AgentJobSpec, type AgentJobSpecV2, type AgentJobSpecCreateConfig, type AgentJobSpecCreateConfigV2, type AgentJobSpecCreateResponse, type DraftAgentTopics, type DraftAgentTopicsBody, type DraftAgentTopicsResponse, SfAgent, } from './types';
2
2
  export { Agent, AgentCreateLifecycleStages, AgentCreateLifecycleStagesV2, generateAgentApiName } from './agent';
3
- export { AgentTester, convertTestResultsToFormat, generateTestSpec, AgentTestCreateLifecycleStages, type AvailableDefinition, type AgentTestResultsResponse, type AgentTestStartResponse, type AgentTestStatusResponse, type TestCaseResult, type TestStatus, } from './agentTester';
4
- export { AgentPreview, type AgentPreviewMessageLinks, type AgentPreviewMessage, type AgentPreviewStartResponse, type AgentPreviewSendResponse, type AgentPreviewEndResponse, } from './agentPreview';
3
+ export { AgentTester, convertTestResultsToFormat, generateTestSpec, AgentTestCreateLifecycleStages, humanFriendlyName, type AvailableDefinition, type AgentTestResultsResponse, type AgentTestStartResponse, type AgentTestStatusResponse, type TestCaseResult, type TestStatus, } from './agentTester';
package/lib/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AgentPreview = exports.AgentTestCreateLifecycleStages = exports.generateTestSpec = exports.convertTestResultsToFormat = exports.AgentTester = exports.generateAgentApiName = exports.AgentCreateLifecycleStagesV2 = exports.AgentCreateLifecycleStages = exports.Agent = void 0;
9
+ exports.humanFriendlyName = exports.AgentTestCreateLifecycleStages = exports.generateTestSpec = exports.convertTestResultsToFormat = exports.AgentTester = exports.generateAgentApiName = exports.AgentCreateLifecycleStagesV2 = exports.AgentCreateLifecycleStages = exports.Agent = void 0;
10
10
  var agent_1 = require("./agent");
11
11
  Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
12
12
  Object.defineProperty(exports, "AgentCreateLifecycleStages", { enumerable: true, get: function () { return agent_1.AgentCreateLifecycleStages; } });
@@ -17,6 +17,5 @@ Object.defineProperty(exports, "AgentTester", { enumerable: true, get: function
17
17
  Object.defineProperty(exports, "convertTestResultsToFormat", { enumerable: true, get: function () { return agentTester_1.convertTestResultsToFormat; } });
18
18
  Object.defineProperty(exports, "generateTestSpec", { enumerable: true, get: function () { return agentTester_1.generateTestSpec; } });
19
19
  Object.defineProperty(exports, "AgentTestCreateLifecycleStages", { enumerable: true, get: function () { return agentTester_1.AgentTestCreateLifecycleStages; } });
20
- var agentPreview_1 = require("./agentPreview");
21
- Object.defineProperty(exports, "AgentPreview", { enumerable: true, get: function () { return agentPreview_1.AgentPreview; } });
20
+ Object.defineProperty(exports, "humanFriendlyName", { enumerable: true, get: function () { return agentTester_1.humanFriendlyName; } });
22
21
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiBH,iCAAgH;AAAvG,8FAAA,KAAK,OAAA;AAAE,mHAAA,0BAA0B,OAAA;AAAE,qHAAA,4BAA4B,OAAA;AAAE,6GAAA,oBAAoB,OAAA;AAC9F,6CAWuB;AAVrB,0GAAA,WAAW,OAAA;AACX,yHAAA,0BAA0B,OAAA;AAC1B,+GAAA,gBAAgB,OAAA;AAChB,6HAAA,8BAA8B,OAAA;AAQhC,+CAOwB;AANtB,4GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiBH,iCAAgH;AAAvG,8FAAA,KAAK,OAAA;AAAE,mHAAA,0BAA0B,OAAA;AAAE,qHAAA,4BAA4B,OAAA;AAAE,6GAAA,oBAAoB,OAAA;AAC9F,6CAYuB;AAXrB,0GAAA,WAAW,OAAA;AACX,yHAAA,0BAA0B,OAAA;AAC1B,+GAAA,gBAAgB,OAAA;AAChB,6HAAA,8BAA8B,OAAA;AAC9B,gHAAA,iBAAiB,OAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@salesforce/agents",
3
3
  "description": "Client side APIs for working with Salesforce agents",
4
- "version": "0.9.5-preview.1",
4
+ "version": "0.9.6",
5
5
  "license": "BSD-3-Clause",
6
6
  "author": "Salesforce",
7
7
  "main": "lib/index",
@@ -13,11 +13,8 @@
13
13
  "dependencies": {
14
14
  "@salesforce/core": "^8.8.2",
15
15
  "@salesforce/kit": "^3.2.3",
16
- "@salesforce/sf-plugins-core": "^12.1.3",
17
16
  "@salesforce/source-deploy-retrieve": "^12.14.1",
18
- "ansis": "^3.10.0",
19
17
  "fast-xml-parser": "^4.5.1",
20
- "got": "^11.8.6",
21
18
  "nock": "^13.5.6",
22
19
  "yaml": "^2.7.0"
23
20
  },
@@ -1,61 +0,0 @@
1
- import { Connection } from '@salesforce/core';
2
- type ApiStatus = {
3
- status: 'UP' | 'DOWN';
4
- };
5
- type Href = {
6
- href: string;
7
- };
8
- export type AgentPreviewMessageLinks = {
9
- self: Href | null;
10
- messages: Href | null;
11
- session: Href | null;
12
- end: Href | null;
13
- };
14
- export type AgentPreviewMessage = {
15
- type: string;
16
- id: string;
17
- feedbackId: string;
18
- planId: string;
19
- isContentSafe: boolean;
20
- message: string;
21
- result: {
22
- type: string;
23
- property: string;
24
- value: any;
25
- };
26
- citedReferences: {
27
- type: string;
28
- value: string;
29
- };
30
- };
31
- export type AgentPreviewStartResponse = {
32
- sessionId: string;
33
- _links: AgentPreviewMessageLinks;
34
- messages: AgentPreviewMessage[];
35
- };
36
- export type AgentPreviewSendResponse = {
37
- messages: AgentPreviewMessage[];
38
- _links: AgentPreviewMessageLinks;
39
- };
40
- export type AgentPreviewEndResponse = {
41
- messages: {
42
- type: string;
43
- id: string;
44
- reason: string;
45
- feedbackId: string;
46
- };
47
- _links: AgentPreviewMessageLinks;
48
- };
49
- type EndReason = 'UserRequest' | 'Transfer' | 'Expiration' | 'Error' | 'Other';
50
- export declare class AgentPreview {
51
- private got;
52
- private headers;
53
- private instanceUrl;
54
- private tempApiBase;
55
- constructor(connection: Connection);
56
- start(botId: string): Promise<AgentPreviewStartResponse>;
57
- send(sessionId: string, message: string): Promise<AgentPreviewSendResponse>;
58
- end(sessionId: string, reason: EndReason): Promise<AgentPreviewEndResponse>;
59
- status(): Promise<ApiStatus>;
60
- }
61
- export {};
@@ -1,71 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2024, salesforce.com, inc.
4
- * All rights reserved.
5
- * Licensed under the BSD 3-Clause license.
6
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AgentPreview = void 0;
10
- const request_preview_1 = require("./request-preview");
11
- class AgentPreview {
12
- got;
13
- headers;
14
- instanceUrl;
15
- tempApiBase = process.env.AFDX_TEMP_AGENT_API_BASE;
16
- constructor(connection) {
17
- this.got = new request_preview_1.RequestPreview();
18
- const auth = process.env.AFDX_TEMP_AGENT_API_KEY;
19
- const env = process.env.AFDX_TEMP_AGENT_ENV;
20
- this.instanceUrl = connection.instanceUrl;
21
- this.headers = {
22
- 'x-sfdc-tenant-id': `core/${env}/${connection.getAuthInfoFields().orgId}`,
23
- 'x-salesforce-region': process.env.AFDX_TEMP_AGENT_REGION,
24
- Accept: 'application/json',
25
- 'Content-Type': 'application/json',
26
- Authorization: `API_KEY ${auth}`,
27
- };
28
- }
29
- async start(botId) {
30
- const url = `${this.tempApiBase}/einstein/ai-agent/v1/agents/${botId}/sessions`;
31
- const body = {
32
- // TODO: this needs to generate a unique guid
33
- externalSessionKey: '44736288-030b-4080-b477-975a60f00a12',
34
- instanceConfig: {
35
- endpoint: `${this.instanceUrl}/`,
36
- },
37
- streamingCapabilities: {
38
- chunkTypes: ['Text'],
39
- },
40
- variables: [],
41
- };
42
- return this.got.request('POST', url, body, this.headers);
43
- }
44
- async send(sessionId, message) {
45
- const url = `${this.tempApiBase}/einstein/ai-agent/v1/sessions/${sessionId}/messages`;
46
- const body = {
47
- message: {
48
- sequenceId: Date.now(),
49
- type: 'Text',
50
- text: message,
51
- },
52
- variables: [],
53
- };
54
- return this.got.request('POST', url, body, this.headers);
55
- }
56
- async end(sessionId, reason) {
57
- const url = `${this.tempApiBase}/einstein/ai-agent/v1/sessions/${sessionId}`;
58
- return this.got.request('DELETE', url, undefined, {
59
- ...this.headers,
60
- 'x-session-end-reason': reason,
61
- });
62
- }
63
- // Get the status of the Agent API (UP | DOWN)
64
- async status() {
65
- const base = 'https://test.api.salesforce.com';
66
- const url = `${base}/einstein/ai-agent/v1/status`;
67
- return this.got.request('GET', url, undefined, this.headers);
68
- }
69
- }
70
- exports.AgentPreview = AgentPreview;
71
- //# sourceMappingURL=agentPreview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentPreview.js","sourceRoot":"","sources":["../src/agentPreview.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,uDAAmD;AAyDnD,MAAa,YAAY;IACf,GAAG,CAAiB;IACpB,OAAO,CAAC;IACR,WAAW,CAAS;IACpB,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAkC,CAAC;IAErE,YAAmB,UAAsB;QACvC,IAAI,CAAC,GAAG,GAAG,IAAI,gCAAc,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAiC,CAAC;QAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAA6B,CAAC;QAEtD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAE1C,IAAI,CAAC,OAAO,GAAG;YACb,kBAAkB,EAAE,QAAQ,GAAG,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,KAAe,EAAE;YACnF,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAgC;YACnE,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,WAAW,IAAI,EAAE;SACjC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,gCAAgC,KAAK,WAAW,CAAC;QAEhF,MAAM,IAAI,GAAG;YACX,6CAA6C;YAC7C,kBAAkB,EAAE,sCAAsC;YAC1D,cAAc,EAAE;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG;aACjC;YACD,qBAAqB,EAAE;gBACrB,UAAU,EAAE,CAAC,MAAM,CAAC;aACrB;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAA4B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,OAAe;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,kCAAkC,SAAS,WAAW,CAAC;QAEtF,MAAM,IAAI,GAAG;YACX,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAA2B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,SAAiB,EAAE,MAAiB;QACnD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,kCAAkC,SAAS,EAAE,CAAC;QAE7E,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAA0B,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE;YACzE,GAAG,IAAI,CAAC,OAAO;YACf,sBAAsB,EAAE,MAAM;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,8CAA8C;IACvC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,iCAAiC,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,IAAI,8BAA8B,CAAC;QAElD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAY,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;CACF;AAvED,oCAuEC"}
@@ -1,5 +0,0 @@
1
- export declare class RequestPreview {
2
- private logger;
3
- constructor();
4
- request<Response>(method: 'GET' | 'POST' | 'DELETE', url: string, body: Record<string, unknown> | undefined, headers?: Record<string, string>): Promise<Response>;
5
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2024, salesforce.com, inc.
4
- * All rights reserved.
5
- * Licensed under the BSD 3-Clause license.
6
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RequestPreview = void 0;
13
- const core_1 = require("@salesforce/core");
14
- const got_1 = __importDefault(require("got"));
15
- class RequestPreview {
16
- logger;
17
- constructor() {
18
- this.logger = core_1.Logger.childFromRoot(this.constructor.name);
19
- }
20
- async request(method, url, body, headers) {
21
- this.logger.debug(`Making ${method} request to ${url}`);
22
- switch (method) {
23
- case 'GET':
24
- return got_1.default.get(url, { headers }).json();
25
- case 'POST':
26
- if (!body) {
27
- throw core_1.SfError.create({
28
- name: 'InvalidBody',
29
- message: 'POST requests must include a body',
30
- });
31
- }
32
- return got_1.default.post(url, { headers, json: body }).json();
33
- case 'DELETE':
34
- return got_1.default.delete(url, { headers }).json();
35
- }
36
- }
37
- }
38
- exports.RequestPreview = RequestPreview;
39
- //# sourceMappingURL=request-preview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-preview.js","sourceRoot":"","sources":["../src/request-preview.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,2CAAmD;AACnD,8CAAsB;AAEtB,MAAa,cAAc;IACjB,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,aAAM,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,MAAiC,EACjC,GAAW,EACX,IAAyC,EACzC,OAAgC;QAEhC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC;QAExD,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,KAAK;gBACR,OAAO,aAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,cAAO,CAAC,MAAM,CAAC;wBACnB,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,mCAAmC;qBAC7C,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,aAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,KAAK,QAAQ;gBACX,OAAO,aAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AA9BD,wCA8BC"}