@salesforce/agents 0.19.8 → 0.20.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/lib/agent.d.ts +14 -78
  2. package/lib/agent.js +74 -302
  3. package/lib/agent.js.map +1 -1
  4. package/lib/agentInteractionBase.d.ts +86 -0
  5. package/lib/agentInteractionBase.js +184 -0
  6. package/lib/agentInteractionBase.js.map +1 -0
  7. package/lib/agentPublisher.d.ts +16 -2
  8. package/lib/agentPublisher.js +42 -6
  9. package/lib/agentPublisher.js.map +1 -1
  10. package/lib/agentTest.js +1 -1
  11. package/lib/agentTestResults.js +1 -1
  12. package/lib/agentTester.js +1 -1
  13. package/lib/apexUtils.d.ts +1 -0
  14. package/lib/apexUtils.js +11 -1
  15. package/lib/apexUtils.js.map +1 -1
  16. package/lib/index.d.ts +4 -5
  17. package/lib/index.js +8 -10
  18. package/lib/index.js.map +1 -1
  19. package/lib/maybe-mock.js +1 -1
  20. package/lib/productionAgent.d.ts +51 -0
  21. package/lib/productionAgent.js +272 -0
  22. package/lib/productionAgent.js.map +1 -0
  23. package/lib/scriptAgent.d.ts +63 -0
  24. package/lib/scriptAgent.js +445 -0
  25. package/lib/scriptAgent.js.map +1 -0
  26. package/lib/types.d.ts +22 -8
  27. package/lib/types.js +1 -1
  28. package/lib/types.js.map +1 -1
  29. package/lib/utils.d.ts +35 -4
  30. package/lib/utils.js +64 -13
  31. package/lib/utils.js.map +1 -1
  32. package/package.json +1 -1
  33. package/lib/agentPreview.d.ts +0 -70
  34. package/lib/agentPreview.js +0 -247
  35. package/lib/agentPreview.js.map +0 -1
  36. package/lib/agentPreviewBase.d.ts +0 -51
  37. package/lib/agentPreviewBase.js +0 -55
  38. package/lib/agentPreviewBase.js.map +0 -1
  39. package/lib/agentSimulate.d.ts +0 -78
  40. package/lib/agentSimulate.js +0 -286
  41. package/lib/agentSimulate.js.map +0 -1
  42. package/lib/agentTrace.d.ts +0 -23
  43. package/lib/agentTrace.js +0 -47
  44. package/lib/agentTrace.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ import { type BotMetadata, type BotVersionMetadata, PlannerResponse, ProductionAgentOptions } from './types';
2
+ import { AgentInteractionBase, type AgentPreviewInterface } from './agentInteractionBase';
3
+ export declare class ProductionAgent extends AgentInteractionBase {
4
+ private options;
5
+ preview: AgentPreviewInterface;
6
+ private botMetadata;
7
+ private id;
8
+ private apiName;
9
+ private apiBase;
10
+ constructor(options: ProductionAgentOptions);
11
+ getBotMetadata(): Promise<BotMetadata>;
12
+ /**
13
+ * Returns the latest bot version metadata.
14
+ *
15
+ * @returns the latest bot version metadata
16
+ */
17
+ getLatestBotVersionMetadata(): Promise<BotVersionMetadata>;
18
+ getTrace(planId: string): Promise<PlannerResponse | undefined>;
19
+ /**
20
+ * Returns the ID for this agent.
21
+ *
22
+ * @returns The ID of the agent (The `Bot` ID).
23
+ */
24
+ getId(): Promise<string>;
25
+ /**
26
+ * Activates the agent.
27
+ *
28
+ * @returns void
29
+ */
30
+ activate(): Promise<void>;
31
+ /**
32
+ * Deactivates the agent.
33
+ *
34
+ * @returns void
35
+ */
36
+ deactivate(): Promise<void>;
37
+ protected getAgentIdForStorage(): string;
38
+ protected canApexDebug(): boolean;
39
+ protected handleApexDebuggingSetup(): Promise<void>;
40
+ protected getSendMessageUrl(): string;
41
+ private setAgentStatus;
42
+ private startPreview;
43
+ /**
44
+ * Ends an interactive session with the agent.
45
+ *
46
+ * @param sessionId A session ID provided by first calling `agentPreview.start()`.
47
+ * @param reason A reason why the interactive session was ended.
48
+ * @returns `AgentPreviewEndResponse`
49
+ */
50
+ private endSession;
51
+ }
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProductionAgent = void 0;
4
+ /*
5
+ * Copyright 2026, Salesforce, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ const node_crypto_1 = require("node:crypto");
20
+ const core_1 = require("@salesforce/core");
21
+ const kit_1 = require("@salesforce/kit");
22
+ const maybe_mock_1 = require("./maybe-mock");
23
+ const utils_1 = require("./utils");
24
+ const apexUtils_1 = require("./apexUtils");
25
+ const agentInteractionBase_1 = require("./agentInteractionBase");
26
+ ;
27
+ const messages = new core_1.Messages('@salesforce/agents', 'agents', new Map([["invalidAgentSpecConfig", "Missing one or more of the required agent spec arguments: type, role, companyName, companyDescription"], ["missingAgentName", "The \"agentName\" configuration property is required when saving an agent."], ["agentRetrievalError", "Unable to retrieve newly created Agent metadata. Due to: %s"], ["agentRetrievalErrorActions", "Retrieve the agent metadata using the \"project retrieve start\" command."], ["missingAgentNameOrId", "The \"nameOrId\" agent option is required when creating an Agent instance."], ["agentIsDeleted", "The %s agent has been deleted and its activation state can't be changed."], ["agentActivationError", "Changing the agent's activation status was unsuccessful due to %s."]]));
28
+ class ProductionAgent extends agentInteractionBase_1.AgentInteractionBase {
29
+ options;
30
+ preview;
31
+ botMetadata;
32
+ id;
33
+ apiName;
34
+ apiBase = `https://${kit_1.env.getBoolean('SF_TEST_API') ? 'test.' : ''}api.salesforce.com/einstein/ai-agent/v1`;
35
+ constructor(options) {
36
+ super(options.connection);
37
+ this.options = options;
38
+ if (!options.apiNameOrId) {
39
+ throw messages.createError('missingAgentNameOrId');
40
+ }
41
+ this.preview = {
42
+ start: (apexDebugging) => this.startPreview(apexDebugging),
43
+ send: (message) => this.sendMessage(message),
44
+ getAllTraces: () => this.getAllTracesFromDisc(),
45
+ end: (reason) => this.endSession(reason),
46
+ saveSession: (outputDir) => this.saveSessionToDisc(outputDir),
47
+ setApexDebugging: (apexDebugging) => this.setApexDebugging(apexDebugging),
48
+ };
49
+ if (options.apiNameOrId.startsWith('0Xx') && [15, 18].includes(options.apiNameOrId.length)) {
50
+ this.id = options.apiNameOrId;
51
+ }
52
+ else {
53
+ this.apiName = options.apiNameOrId;
54
+ }
55
+ }
56
+ async getBotMetadata() {
57
+ if (!this.botMetadata) {
58
+ const whereClause = this.id ? `Id = '${this.id}'` : `DeveloperName = '${this.apiName}'`;
59
+ this.botMetadata = await this.connection.singleRecordQuery(`SELECT FIELDS(ALL), (SELECT FIELDS(ALL) FROM BotVersions LIMIT 10) FROM BotDefinition WHERE ${whereClause} LIMIT 1`);
60
+ this.id = this.botMetadata.Id;
61
+ this.apiName = this.botMetadata.DeveloperName;
62
+ // Set the display name from MasterLabel
63
+ this.name = this.botMetadata.MasterLabel;
64
+ }
65
+ return this.botMetadata;
66
+ }
67
+ /**
68
+ * Returns the latest bot version metadata.
69
+ *
70
+ * @returns the latest bot version metadata
71
+ */
72
+ async getLatestBotVersionMetadata() {
73
+ if (!this.botMetadata) {
74
+ this.botMetadata = await this.getBotMetadata();
75
+ }
76
+ const botVersions = this.botMetadata.BotVersions.records;
77
+ return botVersions[botVersions.length - 1];
78
+ }
79
+ // eslint-disable-next-line @typescript-eslint/require-await,class-methods-use-this,@typescript-eslint/no-unused-vars
80
+ async getTrace(planId) {
81
+ // return this.connection.request<PlannerResponse>({
82
+ // method: 'GET',
83
+ // url: `${this.connection.getConnectionOptions().instanceUrl!}:9443/proxy/worker/internal/sessions/${this
84
+ // .sessionId!}/plans/${planId}`,
85
+ // headers: {
86
+ // 'x-client-name': 'afdx',
87
+ // },
88
+ // });
89
+ return undefined;
90
+ }
91
+ /**
92
+ * Returns the ID for this agent.
93
+ *
94
+ * @returns The ID of the agent (The `Bot` ID).
95
+ */
96
+ async getId() {
97
+ if (!this.id) {
98
+ await this.getBotMetadata();
99
+ }
100
+ return this.id; // getBotMetadata() ensures this.id is not undefined
101
+ }
102
+ /**
103
+ * Activates the agent.
104
+ *
105
+ * @returns void
106
+ */
107
+ async activate() {
108
+ return this.setAgentStatus('Active');
109
+ }
110
+ /**
111
+ * Deactivates the agent.
112
+ *
113
+ * @returns void
114
+ */
115
+ async deactivate() {
116
+ return this.setAgentStatus('Inactive');
117
+ }
118
+ getAgentIdForStorage() {
119
+ if (!this.id) {
120
+ throw core_1.SfError.create({ name: 'noId', message: 'Agent ID not found. Call .getBotMetadata() first.' });
121
+ }
122
+ return this.id;
123
+ }
124
+ // eslint-disable-next-line class-methods-use-this
125
+ canApexDebug() {
126
+ return true;
127
+ }
128
+ async handleApexDebuggingSetup() {
129
+ const botMetadata = await this.getBotMetadata();
130
+ if (botMetadata.BotUserId) {
131
+ const traceFlag = await (0, apexUtils_1.findTraceFlag)(this.connection, botMetadata.BotUserId);
132
+ if (!traceFlag) {
133
+ await (0, apexUtils_1.createTraceFlag)(this.connection, botMetadata.BotUserId);
134
+ }
135
+ }
136
+ }
137
+ getSendMessageUrl() {
138
+ if (!this.sessionId) {
139
+ throw core_1.SfError.create({ name: 'noSessionId', message: 'Session not started' });
140
+ }
141
+ return `${this.apiBase}/sessions/${this.sessionId}/messages`;
142
+ }
143
+ async setAgentStatus(desiredState) {
144
+ const botMetadata = await this.getBotMetadata();
145
+ const botVersionMetadata = await this.getLatestBotVersionMetadata();
146
+ if (botMetadata.IsDeleted) {
147
+ throw messages.createError('agentIsDeleted', [botMetadata.DeveloperName]);
148
+ }
149
+ if (botVersionMetadata.Status === desiredState) {
150
+ return;
151
+ }
152
+ const url = `/connect/bot-versions/${botVersionMetadata.Id}/activation`;
153
+ const maybeMock = new maybe_mock_1.MaybeMock(this.connection);
154
+ const response = await maybeMock.request('POST', url, { status: desiredState });
155
+ if (response.success) {
156
+ this.botMetadata.BotVersions.records[0].Status = response.isActivated ? 'Active' : 'Inactive';
157
+ }
158
+ else {
159
+ throw messages.createError('agentActivationError', [response.messages?.toString() ?? 'unknown']);
160
+ }
161
+ }
162
+ async startPreview(apexDebugging) {
163
+ if (!this.id) {
164
+ await this.getId();
165
+ }
166
+ const url = `${this.apiBase}/agents/${this.id}/sessions`;
167
+ // Use the provided apexDebugging parameter if given, otherwise keep the previously set one
168
+ if (apexDebugging !== undefined) {
169
+ this.apexDebugging = apexDebugging;
170
+ }
171
+ const body = {
172
+ externalSessionKey: (0, node_crypto_1.randomUUID)(),
173
+ instanceConfig: {
174
+ endpoint: this.options.connection.instanceUrl,
175
+ },
176
+ streamingCapabilities: {
177
+ chunkTypes: ['Text'],
178
+ },
179
+ bypassUser: true,
180
+ };
181
+ try {
182
+ const response = await this.connection.request({
183
+ method: 'POST',
184
+ url,
185
+ body: JSON.stringify(body),
186
+ headers: {
187
+ 'x-client-name': 'afdx',
188
+ },
189
+ });
190
+ this.sessionId = response.sessionId;
191
+ // Initialize session directory and write initial data
192
+ // Session directory structure:
193
+ // .sfdx/agents/<agentId>/sessions/<sessionId>/
194
+ // ├── transcript.jsonl # All transcript entries (one per line)
195
+ // ├── traces/ # Individual trace files
196
+ // │ ├── <planId1>.json
197
+ // │ └── <planId2>.json
198
+ // └── metadata.json # Session metadata (start time, end time, planIds, etc.)
199
+ const agentId = this.id;
200
+ this.sessionDir = await (0, utils_1.getSessionDir)(agentId, response.sessionId);
201
+ await (0, utils_1.appendTranscriptEntryToSession)({
202
+ timestamp: new Date().toISOString(),
203
+ agentId,
204
+ sessionId: response.sessionId,
205
+ role: 'agent',
206
+ text: response.messages.map((m) => m.message).join('\n'),
207
+ raw: response.messages,
208
+ }, this.sessionDir);
209
+ // Write initial metadata
210
+ await (0, utils_1.writeMetadataToSession)(this.sessionDir, {
211
+ sessionId: response.sessionId,
212
+ agentId,
213
+ startTime: new Date().toISOString(),
214
+ apexDebugging: this.apexDebugging,
215
+ planIds: [],
216
+ });
217
+ return response;
218
+ }
219
+ catch (err) {
220
+ throw core_1.SfError.wrap(err);
221
+ }
222
+ }
223
+ /**
224
+ * Ends an interactive session with the agent.
225
+ *
226
+ * @param sessionId A session ID provided by first calling `agentPreview.start()`.
227
+ * @param reason A reason why the interactive session was ended.
228
+ * @returns `AgentPreviewEndResponse`
229
+ */
230
+ async endSession(reason) {
231
+ if (!this.sessionId) {
232
+ throw core_1.SfError.create({ name: 'noSessionId', message: 'please call .start() first' });
233
+ }
234
+ if (!this.id) {
235
+ throw core_1.SfError.create({ name: 'noId', message: 'please call .getId() first' });
236
+ }
237
+ const url = `${this.apiBase}/v1.1/sessions/${this.sessionId}`;
238
+ try {
239
+ // https://developer.salesforce.com/docs/einstein/genai/guide/agent-api-examples.html#end-session
240
+ const response = await this.connection.request({
241
+ method: 'DELETE',
242
+ url,
243
+ headers: {
244
+ 'x-session-end-reason': reason,
245
+ },
246
+ });
247
+ // Write end entry immediately
248
+ if (this.sessionDir) {
249
+ await (0, utils_1.appendTranscriptEntryToSession)({
250
+ timestamp: new Date().toISOString(),
251
+ agentId: this.id,
252
+ sessionId: this.sessionId,
253
+ role: 'agent',
254
+ reason,
255
+ raw: response.messages,
256
+ }, this.sessionDir);
257
+ // Update metadata with end time
258
+ await (0, utils_1.updateMetadataEndTime)(this.sessionDir, new Date().toISOString(), this.planIds);
259
+ }
260
+ // Clear session data for next session
261
+ this.sessionId = undefined;
262
+ this.sessionDir = undefined;
263
+ this.planIds = new Set();
264
+ return response;
265
+ }
266
+ catch (err) {
267
+ throw core_1.SfError.wrap(err);
268
+ }
269
+ }
270
+ }
271
+ exports.ProductionAgent = ProductionAgent;
272
+ //# sourceMappingURL=productionAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productionAgent.js","sourceRoot":"","sources":["../src/productionAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { SfProject } from '@salesforce/core';
2
+ import { type AgentPreviewEndResponse, type AgentPreviewSendResponse, type CompileAgentScriptResponse, ExtendedAgentJobSpec, PlannerResponse, PublishAgent, ScriptAgentOptions } from './types';
3
+ import { AgentInteractionBase, type AgentPreviewInterface } from './agentInteractionBase';
4
+ export declare class ScriptAgent extends AgentInteractionBase {
5
+ private options;
6
+ preview: AgentPreviewInterface & {
7
+ setMockMode: (mockMode: 'Mock' | 'Live Test') => void;
8
+ };
9
+ private mockMode;
10
+ private agentScriptContent;
11
+ private metaContent;
12
+ private agentJson;
13
+ private apiBase;
14
+ constructor(options: ScriptAgentOptions);
15
+ /**
16
+ * Creates an AiAuthoringBundle directory, .script file, and -meta.xml file
17
+ *
18
+ * @returns Promise<void>
19
+ * @beta
20
+ * @param options {
21
+ * project: SfProject;
22
+ * bundleApiName: string;
23
+ * outputDir?: string;
24
+ * agentSpec?: ExtendedAgentJobSpec;
25
+ *}
26
+ */
27
+ static createAuthoringBundle(options: {
28
+ project: SfProject;
29
+ bundleApiName: string;
30
+ outputDir?: string;
31
+ agentSpec?: ExtendedAgentJobSpec;
32
+ }): Promise<void>;
33
+ refreshContent(): Promise<void>;
34
+ getTrace(planId: string): Promise<PlannerResponse>;
35
+ /**
36
+ * Compiles AgentScript returning agent JSON when successful, otherwise the compile errors are returned.
37
+ *
38
+ * @returns Promise<CompileAgentScriptResponse> The raw API response
39
+ * @beta
40
+ */
41
+ compile(): Promise<CompileAgentScriptResponse>;
42
+ /**
43
+ * Publish an AgentJson representation to the org
44
+ *
45
+ * @beta
46
+ * @returns {Promise<PublishAgentJsonResponse>} The publish response
47
+ */
48
+ publish(): Promise<PublishAgent>;
49
+ /**
50
+ * Ending is not required
51
+ * this will save all of the transcripts to disc
52
+ *
53
+ * @returns `AgentPreviewEndResponse`
54
+ */
55
+ endSession(): Promise<AgentPreviewEndResponse>;
56
+ protected getAgentIdForStorage(): string;
57
+ protected canApexDebug(): boolean;
58
+ protected getSendMessageUrl(): string;
59
+ protected handleApexDebuggingSetup(): Promise<void>;
60
+ protected sendMessage(message: string): Promise<AgentPreviewSendResponse>;
61
+ private setMockMode;
62
+ private startPreview;
63
+ }