From af07c242b57b3265dc686e19e421715f4ac84684 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 3 Mar 2026 09:11:06 -0700 Subject: [PATCH 01/25] fix: add --version flag to agent activate/deactivate --- src/commands/agent/activate.ts | 15 +++++++++------ src/commands/agent/deactivate.ts | 12 +++++++----- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/commands/agent/activate.ts b/src/commands/agent/activate.ts index 30d68706..d0b949d6 100644 --- a/src/commands/agent/activate.ts +++ b/src/commands/agent/activate.ts @@ -17,13 +17,16 @@ import { SfCommand, Flags } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; import { getAgentForActivation } from '../../agentActivation.js'; +export type AgentActivateResult = { success: boolean; version: number }; + Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.activate'); -export default class AgentActivate extends SfCommand { +export default class AgentActivate extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); + public static readonly enableJsonFlag = true; public static readonly flags = { 'target-org': Flags.requiredOrg(), @@ -32,9 +35,10 @@ export default class AgentActivate extends SfCommand { summary: messages.getMessage('flags.api-name.summary'), char: 'n', }), + version: Flags.integer({ summary: messages.getMessage('flags.version.summary') }), }; - public async run(): Promise { + public async run(): Promise { const { flags } = await this.parse(AgentActivate); const apiNameFlag = flags['api-name']; @@ -43,11 +47,10 @@ export default class AgentActivate extends SfCommand { if (!apiNameFlag && this.jsonEnabled()) { throw messages.createError('error.missingRequiredFlags', ['api-name']); } - const agent = await getAgentForActivation({ targetOrg, status: 'Active', apiNameFlag }); - await agent.activate(); - const agentName = (await agent.getBotMetadata()).DeveloperName; + const result = await agent.activate(flags.version); - this.log(`Agent ${agentName} activated.`); + this.log(`Agent ${result.DeveloperName} activated.`); + return { success: true, version: result.VersionNumber }; } } diff --git a/src/commands/agent/deactivate.ts b/src/commands/agent/deactivate.ts index 733764ee..6d55b540 100644 --- a/src/commands/agent/deactivate.ts +++ b/src/commands/agent/deactivate.ts @@ -16,11 +16,12 @@ import { SfCommand, Flags } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; import { getAgentForActivation } from '../../agentActivation.js'; +import { AgentActivateResult } from './activate.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.deactivate'); -export default class AgentDeactivate extends SfCommand { +export default class AgentDeactivate extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); @@ -32,9 +33,10 @@ export default class AgentDeactivate extends SfCommand { summary: messages.getMessage('flags.api-name.summary'), char: 'n', }), + version: Flags.integer({ summary: messages.getMessage('flags.version.summary') }), }; - public async run(): Promise { + public async run(): Promise { const { flags } = await this.parse(AgentDeactivate); const apiNameFlag = flags['api-name']; @@ -45,9 +47,9 @@ export default class AgentDeactivate extends SfCommand { } const agent = await getAgentForActivation({ targetOrg, status: 'Inactive', apiNameFlag }); - await agent.deactivate(); - const agentName = (await agent.getBotMetadata()).DeveloperName; + const result = await agent.deactivate(flags.version); - this.log(`Agent ${agentName} deactivated.`); + this.log(`Agent ${result.DeveloperName} deactivated.`); + return { success: true, version: result.VersionNumber }; } } From 4fe0098c24a9bce63ff10b37b740cd6a846936c5 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 3 Mar 2026 10:10:05 -0700 Subject: [PATCH 02/25] fix: deactivate only one version anywyays --- messages/agent.activate.md | 4 ++ src/agentActivation.ts | 68 ++++++++++++++++++++++++++++++-- src/commands/agent/activate.ts | 7 ++-- src/commands/agent/deactivate.ts | 5 +-- test/nuts/agent.activate.nut.ts | 40 +++++++++++++++++++ 5 files changed, 115 insertions(+), 9 deletions(-) diff --git a/messages/agent.activate.md b/messages/agent.activate.md index d370cff6..be4a68f7 100644 --- a/messages/agent.activate.md +++ b/messages/agent.activate.md @@ -22,6 +22,10 @@ You must know the agent's API name to activate it; you can either be prompted fo API name of the agent to activate. +# flags.version.summary + +Version number of the agent to activate. + # error.missingRequiredFlags Missing required flags: %s. diff --git a/src/agentActivation.ts b/src/agentActivation.ts index 07d9c110..24c9ecb7 100644 --- a/src/agentActivation.ts +++ b/src/agentActivation.ts @@ -15,7 +15,7 @@ */ import { Messages, Org, SfError, SfProject } from '@salesforce/core'; -import { Agent, type BotMetadata, ProductionAgent } from '@salesforce/agents'; +import { Agent, type BotMetadata, type BotVersionMetadata, ProductionAgent } from '@salesforce/agents'; import { select } from '@inquirer/prompts'; type Choice = { @@ -28,6 +28,11 @@ type AgentValue = { DeveloperName: string; }; +type VersionChoice = { + version: number; + status: string; +}; + Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.activation'); @@ -48,8 +53,10 @@ export const getAgentChoices = (agents: BotMetadata[], status: 'Active' | 'Inact agents.map((agent) => { let disabled: string | boolean = false; - const lastBotVersion = agent.BotVersions.records[agent.BotVersions.records.length - 1]; - if (lastBotVersion.Status === status) { + // For deactivate (status='Inactive'), check if any version is Active (can be deactivated) + // For activate (status='Active'), check if any version is Inactive (can be activated) + const hasAvailableVersion = agent.BotVersions.records.some((version) => version.Status !== status); + if (!hasAvailableVersion) { disabled = `(Already ${status})`; } if (agentIsUnsupported(agent.DeveloperName)) { @@ -66,6 +73,22 @@ export const getAgentChoices = (agents: BotMetadata[], status: 'Active' | 'Inact }; }); +export const getVersionChoices = ( + versions: BotVersionMetadata[], + status: 'Active' | 'Inactive' +): Array> => + versions.map((version) => { + const isTargetStatus = version.Status === status; + return { + name: `Version ${version.VersionNumber}`, + value: { + version: version.VersionNumber, + status: version.Status, + }, + disabled: isTargetStatus ? `(Already ${status})` : false, + }; + }); + export const getAgentForActivation = async (config: { targetOrg: Org; status: 'Active' | 'Inactive'; @@ -110,3 +133,42 @@ export const getAgentForActivation = async (config: { project: SfProject.getInstance(), }); }; + +export const getVersionForActivation = async (config: { + agent: ProductionAgent; + status: 'Active' | 'Inactive'; + versionFlag?: number; +}): Promise => { + const { agent, status, versionFlag } = config; + + // If version flag is provided, return it + if (versionFlag !== undefined) { + return versionFlag; + } + + // Get bot metadata to access versions + const botMetadata = await agent.getBotMetadata(); + const versions = botMetadata.BotVersions.records; + + // If there's only one version, return it + if (versions.length === 1) { + return versions[0].VersionNumber; + } + + // Get version choices and filter out disabled ones + const choices = getVersionChoices(versions, status); + const availableChoices = choices.filter((choice) => !choice.disabled); + + // If there's only one available choice, return it automatically + if (availableChoices.length === 1) { + return availableChoices[0].value.version; + } + + // Prompt user to select a version + const versionChoice = await select({ + message: 'Select a version', + choices, + }); + + return versionChoice.version; +}; diff --git a/src/commands/agent/activate.ts b/src/commands/agent/activate.ts index d0b949d6..4054e267 100644 --- a/src/commands/agent/activate.ts +++ b/src/commands/agent/activate.ts @@ -15,7 +15,7 @@ */ import { SfCommand, Flags } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; -import { getAgentForActivation } from '../../agentActivation.js'; +import { getAgentForActivation, getVersionForActivation } from '../../agentActivation.js'; export type AgentActivateResult = { success: boolean; version: number }; @@ -48,9 +48,10 @@ export default class AgentActivate extends SfCommand { throw messages.createError('error.missingRequiredFlags', ['api-name']); } const agent = await getAgentForActivation({ targetOrg, status: 'Active', apiNameFlag }); - const result = await agent.activate(flags.version); + const version = await getVersionForActivation({ agent, status: 'Active', versionFlag: flags.version }); + const result = await agent.activate(version); - this.log(`Agent ${result.DeveloperName} activated.`); + this.log(`Agent v${result.VersionNumber} activated.`); return { success: true, version: result.VersionNumber }; } } diff --git a/src/commands/agent/deactivate.ts b/src/commands/agent/deactivate.ts index 6d55b540..b66dbb0c 100644 --- a/src/commands/agent/deactivate.ts +++ b/src/commands/agent/deactivate.ts @@ -33,7 +33,6 @@ export default class AgentDeactivate extends SfCommand { summary: messages.getMessage('flags.api-name.summary'), char: 'n', }), - version: Flags.integer({ summary: messages.getMessage('flags.version.summary') }), }; public async run(): Promise { @@ -47,9 +46,9 @@ export default class AgentDeactivate extends SfCommand { } const agent = await getAgentForActivation({ targetOrg, status: 'Inactive', apiNameFlag }); - const result = await agent.deactivate(flags.version); + const result = await agent.deactivate(); - this.log(`Agent ${result.DeveloperName} deactivated.`); + this.log(`Agent v${result.VersionNumber} deactivated.`); return { success: true, version: result.VersionNumber }; } } diff --git a/test/nuts/agent.activate.nut.ts b/test/nuts/agent.activate.nut.ts index 8ed91121..d817ba7e 100644 --- a/test/nuts/agent.activate.nut.ts +++ b/test/nuts/agent.activate.nut.ts @@ -85,6 +85,26 @@ describe('agent activate/deactivate NUTs', function () { expect(finalStatus).to.equal('Active'); }); + it('should activate the agent with version flag', async () => { + // Ensure agent is inactive first + const initialStatus = await getBotStatus(); + if (initialStatus === 'Active') { + execCmd(`agent deactivate --api-name ${botApiName} --target-org ${username} --json`, { + ensureExitCode: 0, + }); + await sleep(5000); + } + + // Activate with version 1 + execCmd(`agent activate --api-name ${botApiName} --target-org ${username} --version 1 --json`, { + ensureExitCode: 0, + }); + + // Verify the BotVersion status is now 'Active' + const finalStatus = await getBotStatus(); + expect(finalStatus).to.equal('Active'); + }); + it('should deactivate the agent', async () => { // Verify the BotVersion status has 'Active' initial state const initialStatus = await getBotStatus(); @@ -98,4 +118,24 @@ describe('agent activate/deactivate NUTs', function () { const finalStatus = await getBotStatus(); expect(finalStatus).to.equal('Inactive'); }); + + it('should deactivate the agent (version automatically detected)', async () => { + // Ensure agent is active first + const initialStatus = await getBotStatus(); + if (initialStatus === 'Inactive') { + execCmd(`agent activate --api-name ${botApiName} --target-org ${username} --version 1 --json`, { + ensureExitCode: 0, + }); + await sleep(5000); + } + + // Deactivate (version is automatically detected) + execCmd(`agent deactivate --api-name ${botApiName} --target-org ${username} --json`, { + ensureExitCode: 0, + }); + + // Verify the BotVersion status is now 'Inactive' + const finalStatus = await getBotStatus(); + expect(finalStatus).to.equal('Inactive'); + }); }); From 240c90e93a723fe621cec34a3feb0bba0ad2e863 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 3 Mar 2026 10:18:03 -0700 Subject: [PATCH 03/25] chore: fix output --- src/commands/agent/activate.ts | 3 ++- src/commands/agent/deactivate.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/commands/agent/activate.ts b/src/commands/agent/activate.ts index 4054e267..cfd9b780 100644 --- a/src/commands/agent/activate.ts +++ b/src/commands/agent/activate.ts @@ -50,8 +50,9 @@ export default class AgentActivate extends SfCommand { const agent = await getAgentForActivation({ targetOrg, status: 'Active', apiNameFlag }); const version = await getVersionForActivation({ agent, status: 'Active', versionFlag: flags.version }); const result = await agent.activate(version); + const metadata = await agent.getBotMetadata(); - this.log(`Agent v${result.VersionNumber} activated.`); + this.log(`${metadata.DeveloperName} v${result.VersionNumber} activated.`); return { success: true, version: result.VersionNumber }; } } diff --git a/src/commands/agent/deactivate.ts b/src/commands/agent/deactivate.ts index b66dbb0c..9d230f6a 100644 --- a/src/commands/agent/deactivate.ts +++ b/src/commands/agent/deactivate.ts @@ -47,8 +47,9 @@ export default class AgentDeactivate extends SfCommand { const agent = await getAgentForActivation({ targetOrg, status: 'Inactive', apiNameFlag }); const result = await agent.deactivate(); + const metadata = await agent.getBotMetadata(); - this.log(`Agent v${result.VersionNumber} deactivated.`); + this.log(`${metadata.DeveloperName} v${result.VersionNumber} deactivated.`); return { success: true, version: result.VersionNumber }; } } From a6dd2a7109ffbecd46d618c77f70014c59fc4dc3 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 3 Mar 2026 10:48:33 -0700 Subject: [PATCH 04/25] fix: usability, errors, tests --- command-snapshot.json | 2 +- schemas/agent-activate.json | 19 +++ schemas/agent-deactivate.json | 19 +++ src/agentActivation.ts | 25 +++- src/commands/agent/activate.ts | 10 +- test/agentActivation.test.ts | 228 ++++++++++++++++++++++++++++++++ test/nuts/agent.activate.nut.ts | 33 +++++ 7 files changed, 328 insertions(+), 8 deletions(-) create mode 100644 schemas/agent-activate.json create mode 100644 schemas/agent-deactivate.json create mode 100644 test/agentActivation.test.ts diff --git a/command-snapshot.json b/command-snapshot.json index 547b53b6..76eda4ce 100644 --- a/command-snapshot.json +++ b/command-snapshot.json @@ -4,7 +4,7 @@ "command": "agent:activate", "flagAliases": [], "flagChars": ["n", "o"], - "flags": ["api-name", "api-version", "flags-dir", "json", "target-org"], + "flags": ["api-name", "api-version", "flags-dir", "json", "target-org", "version"], "plugin": "@salesforce/plugin-agent" }, { diff --git a/schemas/agent-activate.json b/schemas/agent-activate.json new file mode 100644 index 00000000..5827721b --- /dev/null +++ b/schemas/agent-activate.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/AgentActivateResult", + "definitions": { + "AgentActivateResult": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "required": ["success", "version"], + "additionalProperties": false + } + } +} diff --git a/schemas/agent-deactivate.json b/schemas/agent-deactivate.json new file mode 100644 index 00000000..5827721b --- /dev/null +++ b/schemas/agent-deactivate.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/AgentActivateResult", + "definitions": { + "AgentActivateResult": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "required": ["success", "version"], + "additionalProperties": false + } + } +} diff --git a/src/agentActivation.ts b/src/agentActivation.ts index 24c9ecb7..c824e23e 100644 --- a/src/agentActivation.ts +++ b/src/agentActivation.ts @@ -138,12 +138,13 @@ export const getVersionForActivation = async (config: { agent: ProductionAgent; status: 'Active' | 'Inactive'; versionFlag?: number; -}): Promise => { - const { agent, status, versionFlag } = config; + jsonEnabled?: boolean; +}): Promise<{ version: number | undefined; warning?: string }> => { + const { agent, status, versionFlag, jsonEnabled } = config; // If version flag is provided, return it if (versionFlag !== undefined) { - return versionFlag; + return { version: versionFlag }; } // Get bot metadata to access versions @@ -152,7 +153,7 @@ export const getVersionForActivation = async (config: { // If there's only one version, return it if (versions.length === 1) { - return versions[0].VersionNumber; + return { version: versions[0].VersionNumber }; } // Get version choices and filter out disabled ones @@ -161,7 +162,19 @@ export const getVersionForActivation = async (config: { // If there's only one available choice, return it automatically if (availableChoices.length === 1) { - return availableChoices[0].value.version; + return { version: availableChoices[0].value.version }; + } + + // If JSON mode is enabled, automatically select the latest available version + if (jsonEnabled) { + // Find the latest (highest version number) available version + const latestVersion = availableChoices.reduce((latest, choice) => + choice.value.version > latest.value.version ? choice : latest + ); + return { + version: latestVersion.value.version, + warning: `No version specified, automatically selected latest available version: ${latestVersion.value.version}`, + }; } // Prompt user to select a version @@ -170,5 +183,5 @@ export const getVersionForActivation = async (config: { choices, }); - return versionChoice.version; + return { version: versionChoice.version }; }; diff --git a/src/commands/agent/activate.ts b/src/commands/agent/activate.ts index cfd9b780..3d1b7035 100644 --- a/src/commands/agent/activate.ts +++ b/src/commands/agent/activate.ts @@ -48,11 +48,19 @@ export default class AgentActivate extends SfCommand { throw messages.createError('error.missingRequiredFlags', ['api-name']); } const agent = await getAgentForActivation({ targetOrg, status: 'Active', apiNameFlag }); - const version = await getVersionForActivation({ agent, status: 'Active', versionFlag: flags.version }); + const { version, warning } = await getVersionForActivation({ + agent, + status: 'Active', + versionFlag: flags.version, + jsonEnabled: this.jsonEnabled(), + }); const result = await agent.activate(version); const metadata = await agent.getBotMetadata(); this.log(`${metadata.DeveloperName} v${result.VersionNumber} activated.`); + if (warning) { + this.warn(warning); + } return { success: true, version: result.VersionNumber }; } } diff --git a/test/agentActivation.test.ts b/test/agentActivation.test.ts new file mode 100644 index 00000000..05b470cf --- /dev/null +++ b/test/agentActivation.test.ts @@ -0,0 +1,228 @@ +/* + * Copyright 2026, Salesforce, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { expect } from 'chai'; +import { type BotMetadata, type BotVersionMetadata } from '@salesforce/agents'; +import { getAgentChoices, getVersionChoices } from '../src/agentActivation.js'; + +describe('agentActivation', () => { + describe('getVersionChoices', () => { + it('should mark versions with target status as disabled', () => { + const versions: BotVersionMetadata[] = [ + { + Id: 'v1', + Status: 'Active', + VersionNumber: 1, + DeveloperName: 'Test_v1', + } as BotVersionMetadata, + { + Id: 'v2', + Status: 'Inactive', + VersionNumber: 2, + DeveloperName: 'Test_v2', + } as BotVersionMetadata, + { + Id: 'v3', + Status: 'Inactive', + VersionNumber: 3, + DeveloperName: 'Test_v3', + } as BotVersionMetadata, + ]; + + const choices = getVersionChoices(versions, 'Inactive'); + + expect(choices).to.have.lengthOf(3); + expect(choices[0].disabled).to.equal(false); // Version 1 is Active, can be deactivated + expect(choices[1].disabled).to.equal('(Already Inactive)'); // Version 2 is already Inactive + expect(choices[2].disabled).to.equal('(Already Inactive)'); // Version 3 is already Inactive + }); + + it('should include version numbers in choices', () => { + const versions: BotVersionMetadata[] = [ + { + Id: 'v1', + Status: 'Active', + VersionNumber: 5, + DeveloperName: 'Test_v5', + } as BotVersionMetadata, + ]; + + const choices = getVersionChoices(versions, 'Active'); + + expect(choices[0].name).to.equal('Version 5'); + expect(choices[0].value.version).to.equal(5); + expect(choices[0].value.status).to.equal('Active'); + }); + + it('should mark active versions as available for deactivation', () => { + const versions: BotVersionMetadata[] = [ + { + Id: 'v1', + Status: 'Active', + VersionNumber: 1, + DeveloperName: 'Test_v1', + } as BotVersionMetadata, + { + Id: 'v2', + Status: 'Active', + VersionNumber: 2, + DeveloperName: 'Test_v2', + } as BotVersionMetadata, + ]; + + const choices = getVersionChoices(versions, 'Inactive'); + + expect(choices[0].disabled).to.equal(false); + expect(choices[1].disabled).to.equal(false); + }); + }); + + describe('getAgentChoices', () => { + it('should enable agent when ANY version is available for activation', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Test_Agent', + BotVersions: { + records: [ + { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, // Can be activated + { Status: 'Inactive', VersionNumber: 3 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Active'); + + expect(choices).to.have.lengthOf(1); + expect(choices[0].disabled).to.equal(false); // Has inactive versions that can be activated + expect(choices[0].value.DeveloperName).to.equal('Test_Agent'); + }); + + it('should enable agent when ANY version is available for deactivation', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Test_Agent', + BotVersions: { + records: [ + { Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Active', VersionNumber: 2 } as BotVersionMetadata, // Can be deactivated + { Status: 'Inactive', VersionNumber: 3 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Inactive'); + + expect(choices).to.have.lengthOf(1); + expect(choices[0].disabled).to.equal(false); // Has active version that can be deactivated + }); + + it('should disable agent when ALL versions are already in target state', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Test_Agent', + BotVersions: { + records: [ + { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Active', VersionNumber: 2 } as BotVersionMetadata, + { Status: 'Active', VersionNumber: 3 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Active'); + + expect(choices).to.have.lengthOf(1); + expect(choices[0].disabled).to.equal('(Already Active)'); // All versions are already active + }); + + it('should disable agent when ALL versions are inactive for deactivation', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Test_Agent', + BotVersions: { + records: [ + { Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Inactive'); + + expect(choices).to.have.lengthOf(1); + expect(choices[0].disabled).to.equal('(Already Inactive)'); // All versions are already inactive + }); + + it('should disable unsupported agents', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Copilot_for_Salesforce', + BotVersions: { + records: [{ Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Active'); + + expect(choices).to.have.lengthOf(1); + expect(choices[0].disabled).to.equal('(Not Supported)'); + }); + + it('should handle multiple agents with mixed states', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Agent_All_Active', + BotVersions: { + records: [ + { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Active', VersionNumber: 2 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + { + Id: 'agent2', + DeveloperName: 'Agent_Mixed', + BotVersions: { + records: [ + { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Active'); + + expect(choices).to.have.lengthOf(2); + expect(choices[0].value.DeveloperName).to.equal('Agent_All_Active'); + expect(choices[0].disabled).to.equal('(Already Active)'); + expect(choices[1].value.DeveloperName).to.equal('Agent_Mixed'); + expect(choices[1].disabled).to.equal(false); + }); + }); +}); diff --git a/test/nuts/agent.activate.nut.ts b/test/nuts/agent.activate.nut.ts index d817ba7e..6d18a86d 100644 --- a/test/nuts/agent.activate.nut.ts +++ b/test/nuts/agent.activate.nut.ts @@ -105,6 +105,39 @@ describe('agent activate/deactivate NUTs', function () { expect(finalStatus).to.equal('Active'); }); + it('should auto-select latest version in JSON mode without version flag', async () => { + // Ensure agent is inactive first + const initialStatus = await getBotStatus(); + if (initialStatus === 'Active') { + execCmd(`agent deactivate --api-name ${botApiName} --target-org ${username} --json`, { + ensureExitCode: 0, + }); + await sleep(5000); + } + + // Activate with --json but no --version flag + const result = execCmd<{ version: number; success: boolean }>( + `agent activate --api-name ${botApiName} --target-org ${username} --json`, + { + ensureExitCode: 0, + } + ); + + // Parse the JSON result + const jsonResult = result.jsonOutput!.result; + expect(jsonResult?.success).to.equal(true); + expect(jsonResult?.version).to.be.a('number'); + + // Verify the warning was included in the output + expect(result.shellOutput.stderr).to.include( + 'No version specified, automatically selected latest available version' + ); + + // Verify the BotVersion status is now 'Active' + const finalStatus = await getBotStatus(); + expect(finalStatus).to.equal('Active'); + }); + it('should deactivate the agent', async () => { // Verify the BotVersion status has 'Active' initial state const initialStatus = await getBotStatus(); From 6b057c0a785a82570098c103fc48bd4b38c1e153 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 3 Mar 2026 11:26:48 -0700 Subject: [PATCH 05/25] chore: filter deleted versions --- src/agentActivation.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/agentActivation.ts b/src/agentActivation.ts index c824e23e..f45d9d98 100644 --- a/src/agentActivation.ts +++ b/src/agentActivation.ts @@ -149,7 +149,8 @@ export const getVersionForActivation = async (config: { // Get bot metadata to access versions const botMetadata = await agent.getBotMetadata(); - const versions = botMetadata.BotVersions.records; + // Filter out deleted versions as a defensive measure + const versions = botMetadata.BotVersions.records.filter((v) => !v.IsDeleted); // If there's only one version, return it if (versions.length === 1) { From c165ee9f9bbf72c737ee9949bc93983d5e28e86c Mon Sep 17 00:00:00 2001 From: Juliet Shackell <63259011+jshackell-sfdc@users.noreply.github.com> Date: Tue, 3 Mar 2026 10:49:21 -0800 Subject: [PATCH 06/25] fix: edit --- messages/agent.activate.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/messages/agent.activate.md b/messages/agent.activate.md index be4a68f7..d03814e8 100644 --- a/messages/agent.activate.md +++ b/messages/agent.activate.md @@ -4,27 +4,29 @@ Activate an agent in an org. # description -Activating an agent makes it immediately available to your users. An agent must be active before you can preview it with the "agent preview" CLI command or VS Code. +Activating an agent makes it immediately available to your users. A published agent must be active before you can preview it with the "agent preview" CLI command or VS Code. Agents can have multiple versions; only one version can be active at a time. -You must know the agent's API name to activate it; you can either be prompted for it or you can specify it with the --api-name flag. Find the agent's API name in its Agent Details page of your org's Agentforce Studio UI in Setup. +If you run the command without the --api-name or --version flags, the command provides a list of agent API names and versions for you to choose from. Use the flags to specify the exact agent and version without being prompted. If you use the --json flag and not --version, then the latest agent version is automatically activated. + +The value of the --version flag is always a number, corresponding to the "vX" part of the "BotVersion" metadata in your project. For example, if you have a force-app/main/default/bots/My_Agent/v4.botVersion-meta.xml file in your project, then you activate this version with the "--version 4" flag. # examples -- Activate an agent in your default target org by being prompted: +- Activate an agent in your default target org by being prompted for both its API name and version: <%= config.bin %> <%= command.id %> -- Activate an agent with API name Resort_Manager in the org with alias "my-org": +- Activate version 2 of an agent with API name Resort_Manager in the org with alias "my-org": - <%= config.bin %> <%= command.id %> --api-name Resort_Manager --target-org my-org + <%= config.bin %> <%= command.id %> --api-name Resort_Manager --version 2 --target-org my-org # flags.api-name.summary -API name of the agent to activate. +API name of the agent to activate; if not specified, the command provides a list that you choose from. # flags.version.summary -Version number of the agent to activate. +Version number of the agent to activate; if not specified, the command provides a list that you choose from. # error.missingRequiredFlags From 8edf77fded4442d6e66a9d423c480779a2f0c893 Mon Sep 17 00:00:00 2001 From: Juliet Shackell <63259011+jshackell-sfdc@users.noreply.github.com> Date: Tue, 3 Mar 2026 10:52:29 -0800 Subject: [PATCH 07/25] Update agent.deactivate.md --- messages/agent.deactivate.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/messages/agent.deactivate.md b/messages/agent.deactivate.md index 7303405e..06f39755 100644 --- a/messages/agent.deactivate.md +++ b/messages/agent.deactivate.md @@ -6,7 +6,7 @@ Deactivate an agent in an org. Deactivating an agent makes it unavailable to your users. To make changes to an agent, such as adding or removing topics or actions, you must deactivate it. You can't preview an agent with the "agent preview" CLI command or VS Code if it's deactivated. -You must know the agent's API name to deactivate it; you can either be prompted for it or you can specify it with the --api-name flag. Find the agent's API name in its Agent Details page of your org's Agentforce Studio UI in Setup. +If you run the command without the --api-name flag, the command provides a list of agent API names for you to choose from. Use the flag to specify the exact agent without being prompted. # examples @@ -20,7 +20,7 @@ You must know the agent's API name to deactivate it; you can either be prompted # flags.api-name.summary -API name of the agent to deactivate. +API name of the agent to deactivate; if not specified, the command provides a list that you choose from. # error.missingRequiredFlags From 6a2c5ccc05295c1f6ec1a186f8f523d78c2ce040 Mon Sep 17 00:00:00 2001 From: Steve Hetzel Date: Sat, 7 Mar 2026 17:32:14 -0700 Subject: [PATCH 08/25] chore: add a skill for reviewing plugin-agent PRs --- .cursor/skills/agent-pr-review/SKILL.md | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .cursor/skills/agent-pr-review/SKILL.md diff --git a/.cursor/skills/agent-pr-review/SKILL.md b/.cursor/skills/agent-pr-review/SKILL.md new file mode 100644 index 00000000..7df5013f --- /dev/null +++ b/.cursor/skills/agent-pr-review/SKILL.md @@ -0,0 +1,37 @@ +--- +name: agent-pr-review +description: Review pull requests in plugin-agent using GitHub CLI. Use for "review PR", "code review", or "gh pr view". +--- + +# Agent PR Review (plugin-agent) + +## Required + +- `gh` CLI required (no git-only fallback) + +## Working directory + +- repo root (parent of this `.cursor`) + +## Commands + +- `gh pr view --json title,number,body,files,commits,additions,deletions,changedFiles,baseRefName,headRefName,author,labels` +- `gh pr diff ` + +## Review checklist + +- correctness, security, regressions +- error handling, edge cases +- tests cover changes or note gaps +- input validation, API misuse +- command messages have entries in messages dir +- errors not swallowed; rethrown errors set original as cause +- suggest code reuse +- suggest output improvements for agent use (esp. `--json`) + +## Output format + +- Findings first, severity order (Critical → High → Medium → Low) +- cite files/snippets +- Questions/Assumptions if needed +- Summary last, brief From 3d42f669e773aa2f8bee1080d6a8b7363ebe775a Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Mon, 9 Mar 2026 08:24:18 -0600 Subject: [PATCH 09/25] chore: enable json flag on deactivate --- src/commands/agent/deactivate.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/commands/agent/deactivate.ts b/src/commands/agent/deactivate.ts index 9d230f6a..c39019d8 100644 --- a/src/commands/agent/deactivate.ts +++ b/src/commands/agent/deactivate.ts @@ -25,6 +25,7 @@ export default class AgentDeactivate extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); + public static enableJsonFlag = true; public static readonly flags = { 'target-org': Flags.requiredOrg(), From 610c1e93be3e64c89f6f7b91b71ecf9176bacc91 Mon Sep 17 00:00:00 2001 From: Jaganpro Date: Mon, 9 Mar 2026 14:36:27 -0400 Subject: [PATCH 10/25] feat(run-eval): whitelist state/setupSessionContext, translate contextVariables, preserve outputs - Whitelist `state`, `setupSessionContext`, and `context_variables` in evalNormalizer's VALID_AGENT_FIELDS for agent.create_session so the normalizer no longer strips fields needed for auth bypass and session context injection. - Translate YAML TestSpec `contextVariables` into `context_variables` on the agent.create_session step in yamlSpecTranslator, enabling YAML specs to inject context variables without raw JSON payloads. - Include `outputs[]` array in RunEvalResult's --json output so CI pipelines retain agent responses, topic routing, and planner state for debugging. --- src/commands/agent/test/run-eval.ts | 5 +-- src/evalNormalizer.ts | 12 ++++++- src/yamlSpecTranslator.ts | 12 +++++-- test/evalNormalizer.test.ts | 54 +++++++++++++++++++++++++++++ test/yamlSpecTranslator.test.ts | 45 ++++++++++++++++++++++++ 5 files changed, 123 insertions(+), 5 deletions(-) diff --git a/src/commands/agent/test/run-eval.ts b/src/commands/agent/test/run-eval.ts index 0c176f47..f364c434 100644 --- a/src/commands/agent/test/run-eval.ts +++ b/src/commands/agent/test/run-eval.ts @@ -26,7 +26,7 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.test.run-eval'); export type RunEvalResult = { - tests: Array<{ id: string; status: string; evaluations: unknown[] }>; + tests: Array<{ id: string; status: string; evaluations: unknown[]; outputs: unknown[] }>; summary: { passed: number; failed: number; scored: number; errors: number }; }; @@ -122,7 +122,7 @@ function buildResultSummary(mergedResponse: EvalApiResponse): { testSummaries: RunEvalResult['tests']; } { const summary = { passed: 0, failed: 0, scored: 0, errors: 0 }; - const testSummaries: Array<{ id: string; status: string; evaluations: unknown[] }> = []; + const testSummaries: Array<{ id: string; status: string; evaluations: unknown[]; outputs: unknown[] }> = []; for (const testResult of mergedResponse.results ?? []) { const tr = testResult as Record; @@ -143,6 +143,7 @@ function buildResultSummary(mergedResponse: EvalApiResponse): { id: testId, status: failed > 0 || testErrors.length > 0 ? 'failed' : 'passed', evaluations: evalResults, + outputs: (tr.outputs as unknown[]) ?? [], }); } diff --git a/src/evalNormalizer.ts b/src/evalNormalizer.ts index 7d2a1921..f9901cd1 100644 --- a/src/evalNormalizer.ts +++ b/src/evalNormalizer.ts @@ -73,7 +73,17 @@ const ASSERTION_VALID_FIELDS = new Set([ ]); const VALID_AGENT_FIELDS: Record> = { - 'agent.create_session': new Set(['type', 'id', 'agent_id', 'agent_version_id', 'use_agent_api', 'planner_id']), + 'agent.create_session': new Set([ + 'type', + 'id', + 'agent_id', + 'agent_version_id', + 'use_agent_api', + 'planner_id', + 'state', + 'setupSessionContext', + 'context_variables', + ]), 'agent.send_message': new Set(['type', 'id', 'session_id', 'utterance']), 'agent.get_state': new Set(['type', 'id', 'session_id']), }; diff --git a/src/yamlSpecTranslator.ts b/src/yamlSpecTranslator.ts index 6c3fb862..efbbdf84 100644 --- a/src/yamlSpecTranslator.ts +++ b/src/yamlSpecTranslator.ts @@ -101,11 +101,19 @@ export function translateTestCase(testCase: TestCase, index: number, specName?: const steps: EvalStep[] = []; // 1. agent.create_session - steps.push({ + const createSessionStep: EvalStep = { type: 'agent.create_session', id: 'cs', use_agent_api: true, - }); + }; + + if (testCase.contextVariables && testCase.contextVariables.length > 0) { + createSessionStep.context_variables = Object.fromEntries( + testCase.contextVariables.map((cv) => [cv.name, cv.value]) + ); + } + + steps.push(createSessionStep); // 2. Conversation history — only user messages become send_message steps let historyIdx = 0; diff --git a/test/evalNormalizer.test.ts b/test/evalNormalizer.test.ts index 7c15e352..3ddab444 100644 --- a/test/evalNormalizer.test.ts +++ b/test/evalNormalizer.test.ts @@ -337,6 +337,60 @@ describe('evalNormalizer', () => { expect(result[0]).to.have.property('generated_output', 'test'); }); + it('should preserve state field on agent.create_session', () => { + const steps: EvalStep[] = [ + { + type: 'agent.create_session', + id: 's1', + planner_id: 'p1', + state: { + state: { + plannerType: 'Atlas', + sessionContext: {}, + conversationHistory: [], + lastExecution: {}, + }, + }, + }, + ]; + const result = stripUnrecognizedFields(steps); + expect(result[0]).to.have.property('state'); + expect((result[0] as Record).state).to.deep.equal(steps[0].state); + }); + + it('should preserve setupSessionContext on agent.create_session', () => { + const steps: EvalStep[] = [ + { + type: 'agent.create_session', + id: 's1', + planner_id: 'p1', + setupSessionContext: { tags: { botId: '0Xx123', botVersionId: '0X9456' } }, + }, + ]; + const result = stripUnrecognizedFields(steps); + expect(result[0]).to.have.property('setupSessionContext'); + expect((result[0] as Record).setupSessionContext).to.deep.equal({ + tags: { botId: '0Xx123', botVersionId: '0X9456' }, + }); + }); + + it('should preserve context_variables on agent.create_session', () => { + const steps: EvalStep[] = [ + { + type: 'agent.create_session', + id: 's1', + use_agent_api: true, + context_variables: { RoutableId: '0Mw123', CaseId: '500456' }, + }, + ]; + const result = stripUnrecognizedFields(steps); + expect(result[0]).to.have.property('context_variables'); + expect((result[0] as Record).context_variables).to.deep.equal({ + RoutableId: '0Mw123', + CaseId: '500456', + }); + }); + it('should not strip fields from unknown types', () => { const steps: EvalStep[] = [{ type: 'evaluator.future_type', id: 'e1', custom_field: 'keep' }]; const result = stripUnrecognizedFields(steps); diff --git a/test/yamlSpecTranslator.test.ts b/test/yamlSpecTranslator.test.ts index 8b2776f0..612f22ef 100644 --- a/test/yamlSpecTranslator.test.ts +++ b/test/yamlSpecTranslator.test.ts @@ -622,6 +622,51 @@ testCases: [] expect(result.id).to.equal('My_Spec_case_2'); }); + it('injects context_variables when contextVariables present', () => { + const tc: TestCase = { + utterance: 'Help with my camera', + expectedTopic: 'Product_Help', + expectedActions: undefined, + expectedOutcome: undefined, + contextVariables: [ + { name: 'RoutableId', value: '0Mw123' }, + { name: 'CaseId', value: '500456' }, + ], + }; + const result = translateTestCase(tc, 0); + const cs = result.steps.find((s) => s.type === 'agent.create_session'); + expect(cs).to.have.property('context_variables'); + expect((cs as Record).context_variables).to.deep.equal({ + RoutableId: '0Mw123', + CaseId: '500456', + }); + }); + + it('does not add context_variables when contextVariables absent', () => { + const tc: TestCase = { + utterance: 'Hello', + expectedTopic: undefined, + expectedActions: undefined, + expectedOutcome: undefined, + }; + const result = translateTestCase(tc, 0); + const cs = result.steps.find((s) => s.type === 'agent.create_session'); + expect(cs).to.not.have.property('context_variables'); + }); + + it('does not add context_variables when contextVariables is empty', () => { + const tc: TestCase = { + utterance: 'Hello', + expectedTopic: undefined, + expectedActions: undefined, + expectedOutcome: undefined, + contextVariables: [], + }; + const result = translateTestCase(tc, 0); + const cs = result.steps.find((s) => s.type === 'agent.create_session'); + expect(cs).to.not.have.property('context_variables'); + }); + it('sets use_agent_api true on create_session', () => { const tc: TestCase = { utterance: 'Hello', From bb452518e93c7f63b76a2574f6cbce843ff05d53 Mon Sep 17 00:00:00 2001 From: Jaganpro Date: Mon, 9 Mar 2026 14:42:42 -0400 Subject: [PATCH 11/25] chore: regenerate JSON schemas after RunEvalResult type change --- schemas/agent-test-run__eval.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/schemas/agent-test-run__eval.json b/schemas/agent-test-run__eval.json index 351919a2..f4094406 100644 --- a/schemas/agent-test-run__eval.json +++ b/schemas/agent-test-run__eval.json @@ -19,9 +19,13 @@ "evaluations": { "type": "array", "items": {} + }, + "outputs": { + "type": "array", + "items": {} } }, - "required": ["id", "status", "evaluations"], + "required": ["id", "status", "evaluations", "outputs"], "additionalProperties": false } }, From 2f27bedb7aae05ca2254f2b18f63c8d4d073dc26 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Mon, 9 Mar 2026 13:45:37 -0600 Subject: [PATCH 12/25] feat: add comprehensive contextVariables validation, tests, and documentation - Add duplicate contextVariable name validation with descriptive error messages - Add missing test coverage for outputs field in NUT tests - Add integration test for contextVariables in YAML specs - Create example YAML file demonstrating contextVariables usage - Update documentation for contextVariables feature in both YAML and JSON formats - Fix stdin documentation to reflect allowStdin behavior (no need for '-' value) - Add unit test for contextVariables translation to context_variables format - Document use cases for contextual testing (CaseId, RoutableId, etc.) --- messages/agent.generate.test-spec.md | 2 + messages/agent.test.run-eval.md | 14 ++++--- src/yamlSpecTranslator.ts | 11 ++++++ .../specs/eval-with-context.yaml | 21 ++++++++++ test/nuts/agent.test.run-eval.nut.ts | 15 +++++++ test/yamlSpecTranslator.test.ts | 39 +++++++++++++++++++ 6 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 test/mock-projects/agent-generate-template/specs/eval-with-context.yaml diff --git a/messages/agent.generate.test-spec.md b/messages/agent.generate.test-spec.md index abbcc96c..effb107c 100644 --- a/messages/agent.generate.test-spec.md +++ b/messages/agent.generate.test-spec.md @@ -15,6 +15,8 @@ To generate a specific agent test case, this command prompts you for this inform - (Optional) Custom evaluation: Test an agent's response for specific strings or numbers. - (Optional) Conversation history: Boilerplate for additional context you can add to the test in the form of a conversation history. +You can manually add contextVariables to test cases in the generated YAML file to inject contextual data (such as CaseId or RoutableId) into agent sessions. This is useful for testing agent behavior with different contextual information. + When your test spec is ready, you then run the "agent test create" command to actually create the test in your org and synchronize the metadata with your DX project. The metadata type for an agent test is AiEvaluationDefinition. If you have an existing AiEvaluationDefinition metadata XML file in your DX project, you can generate its equivalent YAML test spec file with the --from-definition flag. diff --git a/messages/agent.test.run-eval.md b/messages/agent.test.run-eval.md index 356e2f98..304ab4bd 100644 --- a/messages/agent.test.run-eval.md +++ b/messages/agent.test.run-eval.md @@ -6,15 +6,15 @@ Run evaluation tests against an Agentforce agent. Execute rich evaluation tests against an Agentforce agent using the Einstein Evaluation API. Supports both YAML test specs (same format as `sf agent generate test-spec`) and JSON payloads. -When you provide a YAML test spec, the command automatically translates test cases into Evaluation API calls and infers the agent name from the spec's `subjectName` field. This means you can use the same test spec with both `sf agent test run` and `sf agent test run-eval`. +When you provide a YAML test spec, the command automatically translates test cases into Evaluation API calls and infers the agent name from the spec's `subjectName` field. This means you can use the same test spec with both `sf agent test run` and `sf agent test run-eval`. YAML test specs also support contextVariables, which allow you to inject contextual data (such as CaseId or RoutableId) into agent sessions for testing with different contexts. -When you provide a JSON payload, it's sent directly to the API with optional normalization. The normalizer auto-corrects common field name mistakes, converts shorthand references to JSONPath, and injects defaults. Use `--no-normalize` to disable this auto-normalization. +When you provide a JSON payload, it's sent directly to the API with optional normalization. The normalizer auto-corrects common field name mistakes, converts shorthand references to JSONPath, and injects defaults. Use `--no-normalize` to disable this auto-normalization. JSON payloads can also include context_variables on agent.create_session steps for the same contextual testing capabilities. Supports 8+ evaluator types, including topic routing assertions, action invocation checks, string/numeric assertions, semantic similarity scoring, and LLM-based quality ratings. # flags.spec.summary -Path to test spec file (YAML or JSON). Use `-` for stdin. +Path to test spec file (YAML or JSON). Supports reading from stdin when piping content. # flags.api-name.summary @@ -54,9 +54,13 @@ Disable auto-normalization of field names and shorthand references. <%= config.bin %> <%= command.id %> --spec tests/my-agent-testSpec.yaml --target-org my-org --result-format junit -- Pipe JSON payload from stdin: +- Run tests with contextVariables to inject contextual data into agent sessions (add contextVariables to test cases in your YAML spec): - $ echo '{"tests":[...]}' | <%= config.bin %> <%= command.id %> --spec - --target-org my-org + <%= config.bin %> <%= command.id %> --spec tests/agent-with-context.yaml --target-org my-org + +- Pipe JSON payload from stdin (--spec flag is automatically populated from stdin): + + $ echo '{"tests":[...]}' | <%= config.bin %> <%= command.id %> --spec --target-org my-org # info.batchProgress diff --git a/src/yamlSpecTranslator.ts b/src/yamlSpecTranslator.ts index efbbdf84..b19015f2 100644 --- a/src/yamlSpecTranslator.ts +++ b/src/yamlSpecTranslator.ts @@ -108,6 +108,17 @@ export function translateTestCase(testCase: TestCase, index: number, specName?: }; if (testCase.contextVariables && testCase.contextVariables.length > 0) { + // Validate for duplicate names + const names = testCase.contextVariables.map((cv) => cv.name); + const duplicates = names.filter((name, idx) => names.indexOf(name) !== idx); + if (duplicates.length > 0) { + throw new Error( + `Duplicate contextVariable names found in test case ${index}: ${[...new Set(duplicates)].join( + ', ' + )}. Each contextVariable name must be unique.` + ); + } + createSessionStep.context_variables = Object.fromEntries( testCase.contextVariables.map((cv) => [cv.name, cv.value]) ); diff --git a/test/mock-projects/agent-generate-template/specs/eval-with-context.yaml b/test/mock-projects/agent-generate-template/specs/eval-with-context.yaml new file mode 100644 index 00000000..c2d28d42 --- /dev/null +++ b/test/mock-projects/agent-generate-template/specs/eval-with-context.yaml @@ -0,0 +1,21 @@ +name: Agent_Context_Test +description: Test agent with contextVariables +subjectType: AGENT +subjectName: Local_Info_Agent +testCases: + - utterance: 'What is the weather?' + expectedTopic: Weather_and_Temperature_Information + expectedActions: [] + expectedOutcome: 'The agent should provide weather information' + contextVariables: + - name: CaseId + value: '500ABC123' + - name: RoutableId + value: '0MwXYZ456' + - utterance: 'Tell me about the temperature' + expectedTopic: Weather_and_Temperature_Information + expectedActions: [] + expectedOutcome: 'The agent should provide temperature information' + contextVariables: + - name: UserId + value: '005DEF789' diff --git a/test/nuts/agent.test.run-eval.nut.ts b/test/nuts/agent.test.run-eval.nut.ts index 1af21425..e21d4b30 100644 --- a/test/nuts/agent.test.run-eval.nut.ts +++ b/test/nuts/agent.test.run-eval.nut.ts @@ -29,6 +29,7 @@ describe('agent test run-eval', function () { const mockProjectDir = join(process.cwd(), 'test', 'mock-projects', 'agent-generate-template', 'specs'); const jsonPayloadPath = join(mockProjectDir, 'eval-payload.json'); const yamlSpecPath = join(mockProjectDir, 'eval-test-spec.yaml'); + const yamlWithContextPath = join(mockProjectDir, 'eval-with-context.yaml'); before(async function () { this.timeout(30 * 60 * 1000); // 30 minutes for setup @@ -84,6 +85,18 @@ describe('agent test run-eval', function () { expect(output?.result).to.be.ok; expect(output?.result.tests).to.be.an('array'); }); + + it('should handle YAML spec with contextVariables', async () => { + const command = `agent test run-eval --spec ${yamlWithContextPath} --target-org ${getUsername()} --json`; + // Don't enforce exit code 0 since the command exits with 1 if tests fail + const output = execCmd(command).jsonOutput; + + // Verify the command succeeds with contextVariables + expect(output?.result).to.be.ok; + expect(output?.result.tests).to.be.an('array'); + expect(output?.result.tests.length).to.be.greaterThan(0); + expect(output?.result.summary).to.be.ok; + }); }); describe('run-eval with flags', () => { @@ -179,6 +192,8 @@ describe('agent test run-eval', function () { expect(firstTest).to.have.property('status'); expect(firstTest).to.have.property('evaluations'); expect(firstTest?.evaluations).to.be.an('array'); + expect(firstTest).to.have.property('outputs'); + expect(firstTest?.outputs).to.be.an('array'); }); it('should include summary with all metrics', async () => { diff --git a/test/yamlSpecTranslator.test.ts b/test/yamlSpecTranslator.test.ts index 612f22ef..40914c67 100644 --- a/test/yamlSpecTranslator.test.ts +++ b/test/yamlSpecTranslator.test.ts @@ -667,6 +667,45 @@ testCases: [] expect(cs).to.not.have.property('context_variables'); }); + it('throws error when contextVariables has duplicate names', () => { + const tc: TestCase = { + utterance: 'Hello', + expectedTopic: undefined, + expectedActions: undefined, + expectedOutcome: undefined, + contextVariables: [ + { name: 'CaseId', value: '500123' }, + { name: 'RoutableId', value: '0Mw456' }, + { name: 'CaseId', value: '500789' }, + ], + }; + expect(() => translateTestCase(tc, 0)).to.throw(/Duplicate contextVariable names found in test case 0: CaseId/); + }); + + it('translates contextVariables to context_variables object format', () => { + const tc: TestCase = { + utterance: 'Test with context', + expectedTopic: 'Test_Topic', + expectedActions: undefined, + expectedOutcome: undefined, + contextVariables: [ + { name: 'CaseId', value: '500ABC' }, + { name: 'RoutableId', value: '0MwXYZ' }, + { name: 'UserId', value: '005DEF' }, + ], + }; + const result = translateTestCase(tc, 0); + const cs = result.steps.find((s) => s.type === 'agent.create_session') as Record; + + expect(cs).to.have.property('context_variables'); + const contextVars = cs.context_variables as Record; + expect(contextVars).to.deep.equal({ + CaseId: '500ABC', + RoutableId: '0MwXYZ', + UserId: '005DEF', + }); + }); + it('sets use_agent_api true on create_session', () => { const tc: TestCase = { utterance: 'Hello', From a746474618f2eab2626f410cab7a99f110ec0cae Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Mon, 9 Mar 2026 20:17:53 +0000 Subject: [PATCH 13/25] chore(release): 1.32.0 [skip ci] --- CHANGELOG.md | 7 +++++++ README.md | 42 +++++++++++++++++++++++------------------- package.json | 2 +- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4541613..19f097e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [1.32.0](https://github.com/salesforcecli/plugin-agent/compare/1.31.3...1.32.0) (2026-03-09) + +### Features + +- add comprehensive contextVariables validation, tests, and documentation ([2f27bed](https://github.com/salesforcecli/plugin-agent/commit/2f27bedb7aae05ca2254f2b18f63c8d4d073dc26)) +- **run-eval:** whitelist state/setupSessionContext, translate contextVariables, preserve outputs ([610c1e9](https://github.com/salesforcecli/plugin-agent/commit/610c1e93be3e64c89f6f7b91b71ecf9176bacc91)) + ## [1.31.3](https://github.com/salesforcecli/plugin-agent/compare/1.31.2...1.31.3) (2026-03-08) ### Bug Fixes diff --git a/README.md b/README.md index cf327bb7..aebd1dc7 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ EXAMPLES $ sf agent activate --api-name Resort_Manager --target-org my-org ``` -_See code: [src/commands/agent/activate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/activate.ts)_ +_See code: [src/commands/agent/activate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/activate.ts)_ ## `sf agent create` @@ -183,7 +183,7 @@ EXAMPLES $ sf agent create --name "Resort Manager" --spec specs/resortManagerAgent.yaml --preview ``` -_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/create.ts)_ +_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/create.ts)_ ## `sf agent deactivate` @@ -223,7 +223,7 @@ EXAMPLES $ sf agent deactivate --api-name Resort_Manager --target-org my-org ``` -_See code: [src/commands/agent/deactivate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/deactivate.ts)_ +_See code: [src/commands/agent/deactivate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/deactivate.ts)_ ## `sf agent generate agent-spec` @@ -330,7 +330,7 @@ EXAMPLES $ sf agent generate agent-spec --tone formal --agent-user resortmanager@myorg.com ``` -_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/generate/agent-spec.ts)_ +_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/agent-spec.ts)_ ## `sf agent generate authoring-bundle` @@ -407,7 +407,7 @@ EXAMPLES other-package-dir/main/default --target-org my-dev-org ``` -_See code: [src/commands/agent/generate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/generate/authoring-bundle.ts)_ +_See code: [src/commands/agent/generate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/authoring-bundle.ts)_ ## `sf agent generate template` @@ -455,7 +455,7 @@ EXAMPLES force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml --agent-version 1 ``` -_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/generate/template.ts)_ +_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/template.ts)_ ## `sf agent generate test-spec` @@ -494,6 +494,10 @@ DESCRIPTION - (Optional) Conversation history: Boilerplate for additional context you can add to the test in the form of a conversation history. + You can manually add contextVariables to test cases in the generated YAML file to inject contextual data (such as + CaseId or RoutableId) into agent sessions. This is useful for testing agent behavior with different contextual + information. + When your test spec is ready, you then run the "agent test create" command to actually create the test in your org and synchronize the metadata with your DX project. The metadata type for an agent test is AiEvaluationDefinition. @@ -516,7 +520,7 @@ EXAMPLES force-app//main/default/aiEvaluationDefinitions/Resort_Manager_Tests.aiEvaluationDefinition-meta.xml ``` -_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/generate/test-spec.ts)_ +_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/test-spec.ts)_ ## `sf agent preview` @@ -589,7 +593,7 @@ EXAMPLES $ sf agent preview --use-live-actions --apex-debug --output-dir transcripts/my-preview ``` -_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/preview.ts)_ +_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview.ts)_ ## `sf agent preview end` @@ -644,7 +648,7 @@ EXAMPLES $ sf agent preview end --authoring-bundle My_Local_Agent ``` -_See code: [src/commands/agent/preview/end.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/preview/end.ts)_ +_See code: [src/commands/agent/preview/end.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/end.ts)_ ## `sf agent preview send` @@ -702,7 +706,7 @@ EXAMPLES $ sf agent preview send --utterance "what can you help me with?" --authoring-bundle My_Local_Agent ``` -_See code: [src/commands/agent/preview/send.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/preview/send.ts)_ +_See code: [src/commands/agent/preview/send.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/send.ts)_ ## `sf agent preview sessions` @@ -735,7 +739,7 @@ EXAMPLES $ sf agent preview sessions ``` -_See code: [src/commands/agent/preview/sessions.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/preview/sessions.ts)_ +_See code: [src/commands/agent/preview/sessions.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/sessions.ts)_ ## `sf agent preview start` @@ -792,7 +796,7 @@ EXAMPLES $ sf agent preview start --api-name My_Published_Agent ``` -_See code: [src/commands/agent/preview/start.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/preview/start.ts)_ +_See code: [src/commands/agent/preview/start.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/start.ts)_ ## `sf agent publish authoring-bundle` @@ -841,7 +845,7 @@ EXAMPLES $ sf agent publish authoring-bundle --api-name MyAuthoringbundle --target-org my-dev-org ``` -_See code: [src/commands/agent/publish/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/publish/authoring-bundle.ts)_ +_See code: [src/commands/agent/publish/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/publish/authoring-bundle.ts)_ ## `sf agent test create` @@ -896,7 +900,7 @@ EXAMPLES $ sf agent test create --spec specs/Resort_Manager-testSpec.yaml --api-name Resort_Manager_Test --preview ``` -_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/test/create.ts)_ +_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/create.ts)_ ## `sf agent test list` @@ -931,7 +935,7 @@ EXAMPLES $ sf agent test list --target-org my-org ``` -_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/test/list.ts)_ +_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/list.ts)_ ## `sf agent test results` @@ -997,7 +1001,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/test/results.ts)_ +_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/results.ts)_ ## `sf agent test resume` @@ -1070,7 +1074,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/test/resume.ts)_ +_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/resume.ts)_ ## `sf agent test run` @@ -1144,7 +1148,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/test/run.ts)_ +_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/run.ts)_ ## `sf agent validate authoring-bundle` @@ -1191,6 +1195,6 @@ EXAMPLES $ sf agent validate authoring-bundle --api-name MyAuthoringBundle --target-org my-dev-org ``` -_See code: [src/commands/agent/validate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.31.3/src/commands/agent/validate/authoring-bundle.ts)_ +_See code: [src/commands/agent/validate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/validate/authoring-bundle.ts)_ diff --git a/package.json b/package.json index d7db6847..e297b722 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/plugin-agent", "description": "Commands to interact with Salesforce agents", - "version": "1.31.3", + "version": "1.32.0", "author": "Salesforce", "bugs": "https://github.com/forcedotcom/cli/issues", "enableO11y": true, From 77cd59097110f8d51ddb919df7ee7d993b0b7174 Mon Sep 17 00:00:00 2001 From: Esteban Romero Date: Mon, 9 Mar 2026 17:52:27 -0300 Subject: [PATCH 14/25] fix: update local asset references to global assets --- messages/agent.generate.template.md | 17 +- src/commands/agent/generate/template.ts | 118 +- yarn.lock | 2023 +++++++++++------------ 3 files changed, 1062 insertions(+), 1096 deletions(-) diff --git a/messages/agent.generate.template.md b/messages/agent.generate.template.md index 0ba805fa..0e65ffc9 100644 --- a/messages/agent.generate.template.md +++ b/messages/agent.generate.template.md @@ -1,5 +1,6 @@ # summary +WARNING: This command works with only legacy agents, which are agents that don't use Agent Script as their blueprint. You can't currently generate an agent template from an Agent Script agent. Generate an agent template from an existing agent in your DX project so you can then package the template in a managed package. # description @@ -8,7 +9,7 @@ At a high-level, agents are defined by the Bot, BotVersion, and GenAiPlannerBund Use the --agent-file flag to specify the relative or full pathname of the Bot metadata file, such as force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml. A single Bot can have multiple BotVersions, so use the --agent-version flag to specify the version. The corresponding BotVersion file must exist locally. For example, if you specify "--agent-version 4", then the file force-app/main/default/bots/My_Awesome_Agent/v4.botVersion-meta.xml must exist. -The new BotTemplate file is generated in the "botTemplates" directory in your local package directory, and has the name _v_Template.botTemplate-meta.xml, such as force-app/main/default/botTemplates/My_Awesome_Agent_v4_Template.botTemplate-meta.xml. The command displays the full pathname of the generated files when it completes. +The new BotTemplate file is generated in the "botTemplates" directory in your local package directory, and has the name \_v\_Template.botTemplate-meta.xml, such as force-app/main/default/botTemplates/My_Awesome_Agent_v4_Template.botTemplate-meta.xml. The command displays the full pathname of the generated files when it completes. # examples @@ -43,3 +44,17 @@ No label found in Agent (Bot) file: %s. # error.no-ml-domain No botMlDomain found in Agent (Bot) file: %s. + +# error.local-topics-without-source + +The local topic (genAiPlugin) you're trying to include in the agent template doesn't have a reference to a global topic. All topics in the agent template must be global assets defined in the Agent Asset Library in the source org that contains the agent that the template is based on. +%s. + +# error.local-actions-without-source + +The local action (genAiFunction) you're trying to include in the agent template doesn't have a reference to a global action. All actions in the agent template must be global assets defined in the Agent Asset Library in the source org that contains the agent that the template is based on. +%s. + +# error.nga-agent-not-supported + +This command works with only legacy agents, which are agents that don't use Agent Script as their blueprint. You can't currently generate an agent template from an Agent Script agent. diff --git a/src/commands/agent/generate/template.ts b/src/commands/agent/generate/template.ts index bf55cb74..dd82456a 100644 --- a/src/commands/agent/generate/template.ts +++ b/src/commands/agent/generate/template.ts @@ -23,14 +23,22 @@ import type { Bot, BotVersion, BotTemplate, - GenAiPlanner, + GenAiPlannerBundle, BotDialogGroup, ConversationDefinitionGoal, ConversationVariable, + GenAiFunction, + GenAiPlugin, + GenAiPlannerFunctionDef, } from '@salesforce/types/metadata'; export type GenAiPlannerBundleExt = { - GenAiPlannerBundle: GenAiPlanner & { botTemplate?: string }; + GenAiPlannerBundle: GenAiPlannerBundle & { + botTemplate?: string; + localActionLinks?: GenAiPlannerFunctionDef[]; + localTopicLinks: GenAiPlannerFunctionDef[]; + localTopics: GenAiPlugin[]; + }; }; export type BotTemplateExt = { @@ -113,6 +121,9 @@ export default class AgentGenerateTemplate extends SfCommand(join(botDir, `${botName}.bot-meta.xml`), parser); + if (botJson.Bot.agentDSLEnabled) { + throw new SfError(messages.getMessage('error.nga-agent-not-supported')); + } const botVersionJson = xmlToJson(join(botDir, `v${botVersion}.botVersion-meta.xml`), parser); const genAiPlannerBundleMetaJson = xmlToJson( join(genAiPlannerBundleDir, botName, `${botName}.genAiPlannerBundle`), @@ -122,6 +133,8 @@ export default class AgentGenerateTemplate extends SfCommand(filename: string, json: T, builder: XMLBuilder): void => { throw new SfError(`Failed save to file: ${filename}`); } }; + +/** + * Extracts local topics and actions from the GenAiPlannerBundle and validates that each has a `source` reference to its global counterpart. + * Throws if any local topic or action is missing `source`. + * + * @param genAiPlannerBundleMetaJson - The GenAiPlannerBundle metadata to read from + * @returns { localTopics, localActions } - The local topics and the flattened local actions from all plugins + */ +const getLocalAssets = ( + genAiPlannerBundleMetaJson: GenAiPlannerBundleExt +): { localTopics: GenAiPlugin[]; localActions: GenAiFunction[] } => { + const localTopics = genAiPlannerBundleMetaJson.GenAiPlannerBundle.localTopics; + const localTopicsWithoutSource = localTopics.filter((topic) => !topic.source); + if (localTopicsWithoutSource.length > 0) { + throw new SfError( + messages.getMessage('error.local-topics-without-source', [ + localTopicsWithoutSource.map((topic) => topic.developerName).join(', '), + ]) + ); + } + const localActions = localTopics.flatMap((plugin) => + Array.isArray(plugin.localActions) ? plugin.localActions : plugin.localActions ? [plugin.localActions] : [] + ); + const localActionsWithoutSource = localActions.filter((action) => !action.source); + if (localActionsWithoutSource.length > 0) { + throw new SfError( + messages.getMessage('error.local-actions-without-source', [ + localActionsWithoutSource.map((action) => action.developerName ?? action.fullName).join(', '), + ]) + ); + } + return { localTopics, localActions }; +}; + +/** + * Uses localTopics' elements to identify global assets, then updates topic links (genAiPlugins), action links (genAiFunctions), attributeMappings, ruleExpressionAssignments and ruleExpressions. + * Replaces localTopicLinks with genAiPlugins and localActionLinks with genAiFunctions in the output. + */ +const replaceReferencesToGlobalAssets = ( + genAiPlannerBundleMetaJson: GenAiPlannerBundleExt, + localTopics: GenAiPlugin[], + localActions: GenAiFunction[] +): void => { + const plannerBundle: GenAiPlannerBundleExt['GenAiPlannerBundle'] = genAiPlannerBundleMetaJson.GenAiPlannerBundle; + + // replace localTopicLinks with global genAiPlugins + plannerBundle.genAiPlugins = localTopics.map((topic) => ({ + genAiPluginName: topic.source!, + })); + plannerBundle.localTopicLinks = []; + + // replace localActionLinks with global genAiFunctions + plannerBundle.genAiFunctions = localActions.map((action) => ({ + genAiFunctionName: action.source!, + })); + plannerBundle.localActionLinks = []; + + // replace references in attributeMappings and ruleExpressionAssignments + const localToGlobalAssets = buildLocalToGlobalAssetMap(localTopics); + for (const mapping of plannerBundle.attributeMappings ?? []) { + mapping.attributeName = replaceLocalRefsWithGlobal(mapping.attributeName, localToGlobalAssets); + } + for (const assignment of plannerBundle.ruleExpressionAssignments ?? []) { + assignment.targetName = replaceLocalRefsWithGlobal(assignment.targetName, localToGlobalAssets); + } + + // delete local assets from the GenAiPlannerBundle + plannerBundle.localTopics = []; +}; + +/** + * Builds a map from local asset names to their global (source) asset names. + * + * @param localTopics - The local topics of the GenAiPlannerBundle + * @returns A map of local asset name → global asset name + */ +const buildLocalToGlobalAssetMap = (localTopics: GenAiPlugin[]): Map => { + const map = new Map(); + for (const topic of localTopics) { + map.set(topic.fullName!, topic.source!); + const actions = Array.isArray(topic.localActions) + ? topic.localActions + : topic.localActions + ? [topic.localActions] + : []; + for (const action of actions) { + map.set(action.fullName!, action.source!); + } + } + return map; +}; + +/** + * Replaces dot-separated local refs with global names. Each segment is replaced only when present in localToGlobalMap; + * segments not in localToGlobalMap (e.g. namespace, attribute path) are kept as-is. Used for attributeName, targetName, expression. + */ +const replaceLocalRefsWithGlobal = (value: string, localToGlobalMap: Map): string => + value + .split('.') + .map((segment) => localToGlobalMap.get(segment) ?? segment) + .join('.'); diff --git a/yarn.lock b/yarn.lock index b68fdb58..fd8d7989 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,579 +78,525 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-cloudfront@^3.990.0": - version "3.995.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudfront/-/client-cloudfront-3.995.0.tgz#23988798493a55ea9a01b5167e93b571eb3dc5ad" - integrity sha512-hTyUaVs0hKPSlQyreyxmj6g9sPRs9XWNzDCozYfU5rbAcqS1E0AVTFAjbgNvKIOEbY5iL4UuiIFdFG7m5z9SAQ== +"@aws-sdk/client-cloudfront@3.1004.0": + version "3.1004.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1004.0.tgz#e1558fa937c97ebb15c818be487485ed37a7d919" + integrity sha512-CIGnyfPRa4gkY7I32MBiMJTsQxJFEaMXTedf7uU7TiUemLz4IHrGXx+3BLDbdxwL6dVfBfvC2POSFzrbgA2t4g== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/credential-provider-node" "^3.972.10" - "@aws-sdk/middleware-host-header" "^3.972.3" - "@aws-sdk/middleware-logger" "^3.972.3" - "@aws-sdk/middleware-recursion-detection" "^3.972.3" - "@aws-sdk/middleware-user-agent" "^3.972.11" - "@aws-sdk/region-config-resolver" "^3.972.3" - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-endpoints" "3.995.0" - "@aws-sdk/util-user-agent-browser" "^3.972.3" - "@aws-sdk/util-user-agent-node" "^3.972.10" - "@smithy/config-resolver" "^4.4.6" - "@smithy/core" "^3.23.2" - "@smithy/fetch-http-handler" "^5.3.9" - "@smithy/hash-node" "^4.2.8" - "@smithy/invalid-dependency" "^4.2.8" - "@smithy/middleware-content-length" "^4.2.8" - "@smithy/middleware-endpoint" "^4.4.16" - "@smithy/middleware-retry" "^4.4.33" - "@smithy/middleware-serde" "^4.2.9" - "@smithy/middleware-stack" "^4.2.8" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/node-http-handler" "^4.4.10" - "@smithy/protocol-http" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-body-length-browser" "^4.2.0" - "@smithy/util-body-length-node" "^4.2.1" - "@smithy/util-defaults-mode-browser" "^4.3.32" - "@smithy/util-defaults-mode-node" "^4.2.35" - "@smithy/util-endpoints" "^3.2.8" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-retry" "^4.2.8" - "@smithy/util-stream" "^4.5.12" - "@smithy/util-utf8" "^4.2.0" - "@smithy/util-waiter" "^4.2.8" + "@aws-sdk/core" "^3.973.18" + "@aws-sdk/credential-provider-node" "^3.972.18" + "@aws-sdk/middleware-host-header" "^3.972.7" + "@aws-sdk/middleware-logger" "^3.972.7" + "@aws-sdk/middleware-recursion-detection" "^3.972.7" + "@aws-sdk/middleware-user-agent" "^3.972.19" + "@aws-sdk/region-config-resolver" "^3.972.7" + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/util-endpoints" "^3.996.4" + "@aws-sdk/util-user-agent-browser" "^3.972.7" + "@aws-sdk/util-user-agent-node" "^3.973.4" + "@smithy/config-resolver" "^4.4.10" + "@smithy/core" "^3.23.8" + "@smithy/fetch-http-handler" "^5.3.13" + "@smithy/hash-node" "^4.2.11" + "@smithy/invalid-dependency" "^4.2.11" + "@smithy/middleware-content-length" "^4.2.11" + "@smithy/middleware-endpoint" "^4.4.22" + "@smithy/middleware-retry" "^4.4.39" + "@smithy/middleware-serde" "^4.2.12" + "@smithy/middleware-stack" "^4.2.11" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/node-http-handler" "^4.4.14" + "@smithy/protocol-http" "^5.3.11" + "@smithy/smithy-client" "^4.12.2" + "@smithy/types" "^4.13.0" + "@smithy/url-parser" "^4.2.11" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.38" + "@smithy/util-defaults-mode-node" "^4.2.41" + "@smithy/util-endpoints" "^3.3.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-retry" "^4.2.11" + "@smithy/util-stream" "^4.5.17" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.2.11" tslib "^2.6.2" -"@aws-sdk/client-s3@^3.995.0": - version "3.995.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.995.0.tgz#c37bfb4d2f1c74735bbb0951db520228429bc065" - integrity sha512-r+t8qrQ0m9zoovYOH+wilp/glFRB/E+blsDyWzq2C+9qmyhCAQwaxjLaHM8T/uluAmhtZQIYqOH9ILRnvWtRNw== +"@aws-sdk/client-s3@3.1004.0": + version "3.1004.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1004.0.tgz#e8cdb22b03f9f84dee96bab43cacc4af6adc70b2" + integrity sha512-m0zNfpsona9jQdX1cHtHArOiuvSGZPsgp/KRZS2YjJhKah96G2UN3UNGZQ6aVjXIQjCY6UanCJo0uW9Xf2U41w== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/credential-provider-node" "^3.972.10" - "@aws-sdk/middleware-bucket-endpoint" "^3.972.3" - "@aws-sdk/middleware-expect-continue" "^3.972.3" - "@aws-sdk/middleware-flexible-checksums" "^3.972.9" - "@aws-sdk/middleware-host-header" "^3.972.3" - "@aws-sdk/middleware-location-constraint" "^3.972.3" - "@aws-sdk/middleware-logger" "^3.972.3" - "@aws-sdk/middleware-recursion-detection" "^3.972.3" - "@aws-sdk/middleware-sdk-s3" "^3.972.11" - "@aws-sdk/middleware-ssec" "^3.972.3" - "@aws-sdk/middleware-user-agent" "^3.972.11" - "@aws-sdk/region-config-resolver" "^3.972.3" - "@aws-sdk/signature-v4-multi-region" "3.995.0" - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-endpoints" "3.995.0" - "@aws-sdk/util-user-agent-browser" "^3.972.3" - "@aws-sdk/util-user-agent-node" "^3.972.10" - "@smithy/config-resolver" "^4.4.6" - "@smithy/core" "^3.23.2" - "@smithy/eventstream-serde-browser" "^4.2.8" - "@smithy/eventstream-serde-config-resolver" "^4.3.8" - "@smithy/eventstream-serde-node" "^4.2.8" - "@smithy/fetch-http-handler" "^5.3.9" - "@smithy/hash-blob-browser" "^4.2.9" - "@smithy/hash-node" "^4.2.8" - "@smithy/hash-stream-node" "^4.2.8" - "@smithy/invalid-dependency" "^4.2.8" - "@smithy/md5-js" "^4.2.8" - "@smithy/middleware-content-length" "^4.2.8" - "@smithy/middleware-endpoint" "^4.4.16" - "@smithy/middleware-retry" "^4.4.33" - "@smithy/middleware-serde" "^4.2.9" - "@smithy/middleware-stack" "^4.2.8" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/node-http-handler" "^4.4.10" - "@smithy/protocol-http" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-body-length-browser" "^4.2.0" - "@smithy/util-body-length-node" "^4.2.1" - "@smithy/util-defaults-mode-browser" "^4.3.32" - "@smithy/util-defaults-mode-node" "^4.2.35" - "@smithy/util-endpoints" "^3.2.8" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-retry" "^4.2.8" - "@smithy/util-stream" "^4.5.12" - "@smithy/util-utf8" "^4.2.0" - "@smithy/util-waiter" "^4.2.8" + "@aws-sdk/core" "^3.973.18" + "@aws-sdk/credential-provider-node" "^3.972.18" + "@aws-sdk/middleware-bucket-endpoint" "^3.972.7" + "@aws-sdk/middleware-expect-continue" "^3.972.7" + "@aws-sdk/middleware-flexible-checksums" "^3.973.4" + "@aws-sdk/middleware-host-header" "^3.972.7" + "@aws-sdk/middleware-location-constraint" "^3.972.7" + "@aws-sdk/middleware-logger" "^3.972.7" + "@aws-sdk/middleware-recursion-detection" "^3.972.7" + "@aws-sdk/middleware-sdk-s3" "^3.972.18" + "@aws-sdk/middleware-ssec" "^3.972.7" + "@aws-sdk/middleware-user-agent" "^3.972.19" + "@aws-sdk/region-config-resolver" "^3.972.7" + "@aws-sdk/signature-v4-multi-region" "^3.996.6" + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/util-endpoints" "^3.996.4" + "@aws-sdk/util-user-agent-browser" "^3.972.7" + "@aws-sdk/util-user-agent-node" "^3.973.4" + "@smithy/config-resolver" "^4.4.10" + "@smithy/core" "^3.23.8" + "@smithy/eventstream-serde-browser" "^4.2.11" + "@smithy/eventstream-serde-config-resolver" "^4.3.11" + "@smithy/eventstream-serde-node" "^4.2.11" + "@smithy/fetch-http-handler" "^5.3.13" + "@smithy/hash-blob-browser" "^4.2.12" + "@smithy/hash-node" "^4.2.11" + "@smithy/hash-stream-node" "^4.2.11" + "@smithy/invalid-dependency" "^4.2.11" + "@smithy/md5-js" "^4.2.11" + "@smithy/middleware-content-length" "^4.2.11" + "@smithy/middleware-endpoint" "^4.4.22" + "@smithy/middleware-retry" "^4.4.39" + "@smithy/middleware-serde" "^4.2.12" + "@smithy/middleware-stack" "^4.2.11" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/node-http-handler" "^4.4.14" + "@smithy/protocol-http" "^5.3.11" + "@smithy/smithy-client" "^4.12.2" + "@smithy/types" "^4.13.0" + "@smithy/url-parser" "^4.2.11" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.38" + "@smithy/util-defaults-mode-node" "^4.2.41" + "@smithy/util-endpoints" "^3.3.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-retry" "^4.2.11" + "@smithy/util-stream" "^4.5.17" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.2.11" tslib "^2.6.2" -"@aws-sdk/client-sso@3.993.0": - version "3.993.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.993.0.tgz#6948256598d84eb4b5ee953a8a1be1ed375aafef" - integrity sha512-VLUN+wIeNX24fg12SCbzTUBnBENlL014yMKZvRhPkcn4wHR6LKgNrjsG3fZ03Xs0XoKaGtNFi1VVrq666sGBoQ== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/middleware-host-header" "^3.972.3" - "@aws-sdk/middleware-logger" "^3.972.3" - "@aws-sdk/middleware-recursion-detection" "^3.972.3" - "@aws-sdk/middleware-user-agent" "^3.972.11" - "@aws-sdk/region-config-resolver" "^3.972.3" - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-endpoints" "3.993.0" - "@aws-sdk/util-user-agent-browser" "^3.972.3" - "@aws-sdk/util-user-agent-node" "^3.972.9" - "@smithy/config-resolver" "^4.4.6" - "@smithy/core" "^3.23.2" - "@smithy/fetch-http-handler" "^5.3.9" - "@smithy/hash-node" "^4.2.8" - "@smithy/invalid-dependency" "^4.2.8" - "@smithy/middleware-content-length" "^4.2.8" - "@smithy/middleware-endpoint" "^4.4.16" - "@smithy/middleware-retry" "^4.4.33" - "@smithy/middleware-serde" "^4.2.9" - "@smithy/middleware-stack" "^4.2.8" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/node-http-handler" "^4.4.10" - "@smithy/protocol-http" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-body-length-browser" "^4.2.0" - "@smithy/util-body-length-node" "^4.2.1" - "@smithy/util-defaults-mode-browser" "^4.3.32" - "@smithy/util-defaults-mode-node" "^4.2.35" - "@smithy/util-endpoints" "^3.2.8" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-retry" "^4.2.8" - "@smithy/util-utf8" "^4.2.0" - tslib "^2.6.2" - -"@aws-sdk/core@^3.973.11": - version "3.973.11" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.973.11.tgz#3aaf1493dc1d1793a348c84fe302e59a198996c1" - integrity sha512-wdQ8vrvHkKIV7yNUKXyjPWKCdYEUrZTHJ8Ojd5uJxXp9vqPCkUR1dpi1NtOLcrDgueJH7MUH5lQZxshjFPSbDA== - dependencies: - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/xml-builder" "^3.972.5" - "@smithy/core" "^3.23.2" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/property-provider" "^4.2.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/signature-v4" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-utf8" "^4.2.0" +"@aws-sdk/core@^3.973.18", "@aws-sdk/core@^3.973.19": + version "3.973.19" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.973.19.tgz#ee67105ca00cdcd31d9921d338c2739442c8bc5b" + integrity sha512-56KePyOcZnKTWCd89oJS1G6j3HZ9Kc+bh/8+EbvtaCCXdP6T7O7NzCiPuHRhFLWnzXIaXX3CxAz0nI5My9spHQ== + dependencies: + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/xml-builder" "^3.972.10" + "@smithy/core" "^3.23.9" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/property-provider" "^4.2.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/signature-v4" "^5.3.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/crc64-nvme@3.972.0": - version "3.972.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.0.tgz#c5e6d14428c9fb4e6bb0646b73a0fa68e6007e24" - integrity sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw== +"@aws-sdk/crc64-nvme@^3.972.4": + version "3.972.4" + resolved "https://registry.yarnpkg.com/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.4.tgz#b99494c76064231aa66f70a5b1095624e7984700" + integrity sha512-HKZIZLbRyvzo/bXZU7Zmk6XqU+1C9DjI56xd02vwuDIxedxBEqP17t9ExhbP9QFeNq/a3l9GOcyirFXxmbDhmw== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.9.tgz#1290fb0aa49fb2a8d650e3f7886512add3ed97a1" - integrity sha512-ZptrOwQynfupubvcngLkbdIq/aXvl/czdpEG8XJ8mN8Nb19BR0jaK0bR+tfuMU36Ez9q4xv7GGkHFqEEP2hUUQ== +"@aws-sdk/credential-provider-env@^3.972.17": + version "3.972.17" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.17.tgz#5fe65959faac017cdbefa34be05f09490fc856ab" + integrity sha512-MBAMW6YELzE1SdkOniqr51mrjapQUv8JXSGxtwRjQV0mwVDutVsn22OPAUt4RcLRvdiHQmNBDEFP9iTeSVCOlA== dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/types" "^3.973.1" - "@smithy/property-provider" "^4.2.8" - "@smithy/types" "^4.12.0" + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/types" "^3.973.5" + "@smithy/property-provider" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@^3.972.11": - version "3.972.11" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.11.tgz#5af1e077aca5d6173c49eb63deaffc7f1184370a" - integrity sha512-hECWoOoH386bGr89NQc9vA/abkGf5TJrMREt+lhNcnSNmoBS04fK7vc3LrJBSQAUGGVj0Tz3f4dHB3w5veovig== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/types" "^3.973.1" - "@smithy/fetch-http-handler" "^5.3.9" - "@smithy/node-http-handler" "^4.4.10" - "@smithy/property-provider" "^4.2.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/util-stream" "^4.5.12" +"@aws-sdk/credential-provider-http@^3.972.19": + version "3.972.19" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.19.tgz#b9b0ee4a9388f3ed3013a1ec6b2bc269f04599e4" + integrity sha512-9EJROO8LXll5a7eUFqu48k6BChrtokbmgeMWmsH7lBb6lVbtjslUYz/ShLi+SHkYzTomiGBhmzTW7y+H4BxsnA== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/types" "^3.973.5" + "@smithy/fetch-http-handler" "^5.3.13" + "@smithy/node-http-handler" "^4.4.14" + "@smithy/property-provider" "^4.2.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" + "@smithy/util-stream" "^4.5.17" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.9.tgz#befbaefe54384bdb4c677d03127e627e733b35aa" - integrity sha512-zr1csEu9n4eDiHMTYJabX1mDGuGLgjgUnNckIivvk43DocJC9/f6DefFrnUPZXE+GHtbW50YuXb+JIxKykU74A== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/credential-provider-env" "^3.972.9" - "@aws-sdk/credential-provider-http" "^3.972.11" - "@aws-sdk/credential-provider-login" "^3.972.9" - "@aws-sdk/credential-provider-process" "^3.972.9" - "@aws-sdk/credential-provider-sso" "^3.972.9" - "@aws-sdk/credential-provider-web-identity" "^3.972.9" - "@aws-sdk/nested-clients" "3.993.0" - "@aws-sdk/types" "^3.973.1" - "@smithy/credential-provider-imds" "^4.2.8" - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" +"@aws-sdk/credential-provider-ini@^3.972.18": + version "3.972.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.18.tgz#ff3f3536e752f8c47300b48a07309f9c12438221" + integrity sha512-vthIAXJISZnj2576HeyLBj4WTeX+I7PwWeRkbOa0mVX39K13SCGxCgOFuKj2ytm9qTlLOmXe4cdEnroteFtJfw== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/credential-provider-env" "^3.972.17" + "@aws-sdk/credential-provider-http" "^3.972.19" + "@aws-sdk/credential-provider-login" "^3.972.18" + "@aws-sdk/credential-provider-process" "^3.972.17" + "@aws-sdk/credential-provider-sso" "^3.972.18" + "@aws-sdk/credential-provider-web-identity" "^3.972.18" + "@aws-sdk/nested-clients" "^3.996.8" + "@aws-sdk/types" "^3.973.5" + "@smithy/credential-provider-imds" "^4.2.11" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-login@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.9.tgz#ce71a9b2a42f4294fdc035adde8173fc99331bae" - integrity sha512-m4RIpVgZChv0vWS/HKChg1xLgZPpx8Z+ly9Fv7FwA8SOfuC6I3htcSaBz2Ch4bneRIiBUhwP4ziUo0UZgtJStQ== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/nested-clients" "3.993.0" - "@aws-sdk/types" "^3.973.1" - "@smithy/property-provider" "^4.2.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" +"@aws-sdk/credential-provider-login@^3.972.18": + version "3.972.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.18.tgz#f580aeca507c4d383eaecf3d5db858f230a5816b" + integrity sha512-kINzc5BBxdYBkPZ0/i1AMPMOk5b5QaFNbYMElVw5QTX13AKj6jcxnv/YNl9oW9mg+Y08ti19hh01HhyEAxsSJQ== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/nested-clients" "^3.996.8" + "@aws-sdk/types" "^3.973.5" + "@smithy/property-provider" "^4.2.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@^3.972.10": - version "3.972.10" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.10.tgz#577df01a8511ef6602b090e96832fc612bc81b03" - integrity sha512-70nCESlvnzjo4LjJ8By8MYIiBogkYPSXl3WmMZfH9RZcB/Nt9qVWbFpYj6Fk1vLa4Vk8qagFVeXgxdieMxG1QA== - dependencies: - "@aws-sdk/credential-provider-env" "^3.972.9" - "@aws-sdk/credential-provider-http" "^3.972.11" - "@aws-sdk/credential-provider-ini" "^3.972.9" - "@aws-sdk/credential-provider-process" "^3.972.9" - "@aws-sdk/credential-provider-sso" "^3.972.9" - "@aws-sdk/credential-provider-web-identity" "^3.972.9" - "@aws-sdk/types" "^3.973.1" - "@smithy/credential-provider-imds" "^4.2.8" - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" +"@aws-sdk/credential-provider-node@^3.972.18": + version "3.972.19" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.19.tgz#0135ea6827ccec78f8440ed4e33cfa8188080aab" + integrity sha512-yDWQ9dFTr+IMxwanFe7+tbN5++q8psZBjlUwOiCXn1EzANoBgtqBwcpYcHaMGtn0Wlfj4NuXdf2JaEx1lz5RaQ== + dependencies: + "@aws-sdk/credential-provider-env" "^3.972.17" + "@aws-sdk/credential-provider-http" "^3.972.19" + "@aws-sdk/credential-provider-ini" "^3.972.18" + "@aws-sdk/credential-provider-process" "^3.972.17" + "@aws-sdk/credential-provider-sso" "^3.972.18" + "@aws-sdk/credential-provider-web-identity" "^3.972.18" + "@aws-sdk/types" "^3.973.5" + "@smithy/credential-provider-imds" "^4.2.11" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.9.tgz#efe60d47e54b42ac4ce901810a96152371249744" - integrity sha512-gOWl0Fe2gETj5Bk151+LYKpeGi2lBDLNu+NMNpHRlIrKHdBmVun8/AalwMK8ci4uRfG5a3/+zvZBMpuen1SZ0A== +"@aws-sdk/credential-provider-process@^3.972.17": + version "3.972.17" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.17.tgz#c8ae4e2e1adb96b21d763c86a1c6562aa599145c" + integrity sha512-c8G8wT1axpJDgaP3xzcy+q8Y1fTi9A2eIQJvyhQ9xuXrUZhlCfXbC0vM9bM1CUXiZppFQ1p7g0tuUMvil/gCPg== dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/types" "^3.973.1" - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/types" "^3.973.5" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.9.tgz#d9c79aa26a6a90dc4f4b527546e5fb9cb5b845de" - integrity sha512-ey7S686foGTArvFhi3ifQXmgptKYvLSGE2250BAQceMSXZddz7sUSNERGJT2S7u5KIe/kgugxrt01hntXVln6w== - dependencies: - "@aws-sdk/client-sso" "3.993.0" - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/token-providers" "3.993.0" - "@aws-sdk/types" "^3.973.1" - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" +"@aws-sdk/credential-provider-sso@^3.972.18": + version "3.972.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.18.tgz#0d00e49ffca3760895ec46ec54532b479a2745d7" + integrity sha512-YHYEfj5S2aqInRt5ub8nDOX8vAxgMvd84wm2Y3WVNfFa/53vOv9T7WOAqXI25qjj3uEcV46xxfqdDQk04h5XQA== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/nested-clients" "^3.996.8" + "@aws-sdk/token-providers" "3.1005.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.9.tgz#147c6daefdbb03f718daf86d1286558759510769" - integrity sha512-8LnfS76nHXoEc9aRRiMMpxZxJeDG0yusdyo3NvPhCgESmBUgpMa4luhGbClW5NoX/qRcGxxM6Z/esqANSNMTow== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/nested-clients" "3.993.0" - "@aws-sdk/types" "^3.973.1" - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" +"@aws-sdk/credential-provider-web-identity@^3.972.18": + version "3.972.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.18.tgz#0e44b8dea94a5a054549f319a130ac66aac4cc00" + integrity sha512-OqlEQpJ+J3T5B96qtC1zLLwkBloechP+fezKbCH0sbd2cCc0Ra55XpxWpk/hRj69xAOYtHvoC4orx6eTa4zU7g== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/nested-clients" "^3.996.8" + "@aws-sdk/types" "^3.973.5" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.3.tgz#158507d55505e5e7b5b8cdac9f037f6aa326f202" - integrity sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg== - dependencies: - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-arn-parser" "^3.972.2" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" - "@smithy/util-config-provider" "^4.2.0" +"@aws-sdk/middleware-bucket-endpoint@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.7.tgz#95c03e953c3f8e574e71fdff1ad79cba1eb25e80" + integrity sha512-goX+axlJ6PQlRnzE2bQisZ8wVrlm6dXJfBzMJhd8LhAIBan/w1Kl73fJnalM/S+18VnpzIHumyV6DtgmvqG5IA== + dependencies: + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-config-provider" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.3.tgz#c60bd81e81dde215b9f3f67e3c5448b608afd530" - integrity sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg== +"@aws-sdk/middleware-expect-continue@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.7.tgz#fa895e3f74025de3f4d894e7f0421f48eea5efbf" + integrity sha512-mvWqvm61bmZUKmmrtl2uWbokqpenY3Mc3Jf4nXB/Hse6gWxLPaCQThmhPBDzsPSV8/Odn8V6ovWt3pZ7vy4BFQ== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@^3.972.9": - version "3.972.9" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.972.9.tgz#37d2662dc00854fe121d5d090c855d40487bbfdc" - integrity sha512-E663+r/UQpvF3aJkD40p5ZANVQFsUcbE39jifMtN7wc0t1M0+2gJJp3i75R49aY9OiSX5lfVyPUNjN/BNRCCZA== +"@aws-sdk/middleware-flexible-checksums@^3.973.4": + version "3.973.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.973.5.tgz#9399699803cbdbc614cfe969eed6aaae3cbe246d" + integrity sha512-Dp3hqE5W6hG8HQ3Uh+AINx9wjjqYmFHbxede54sGj3akx/haIQrkp85lNdTdC+ouNUcSYNiuGkzmyDREfHX1Gg== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" "@aws-crypto/util" "5.2.0" - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/crc64-nvme" "3.972.0" - "@aws-sdk/types" "^3.973.1" - "@smithy/is-array-buffer" "^4.2.0" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-stream" "^4.5.12" - "@smithy/util-utf8" "^4.2.0" + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/crc64-nvme" "^3.972.4" + "@aws-sdk/types" "^3.973.5" + "@smithy/is-array-buffer" "^4.2.2" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-stream" "^4.5.17" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz#47c161dec62d89c66c89f4d17ff4434021e04af5" - integrity sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA== +"@aws-sdk/middleware-host-header@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.7.tgz#b18849cf807e0742fdf84db41c2258770bd1e452" + integrity sha512-aHQZgztBFEpDU1BB00VWCIIm85JjGjQW1OG9+98BdmaOpguJvzmXBGbnAiYcciCd+IS4e9BEq664lhzGnWJHgQ== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.3.tgz#b4f504f75baa19064b7457e5c6e3c8cecb4c32eb" - integrity sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g== +"@aws-sdk/middleware-location-constraint@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.7.tgz#5a54a1d7d37e53be6e748525eb35bba7164f99c4" + integrity sha512-vdK1LJfffBp87Lj0Bw3WdK1rJk9OLDYdQpqoKgmpIZPe+4+HawZ6THTbvjhJt4C4MNnRrHTKHQjkwBiIpDBoig== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-logger@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz#ef1afd4a0b70fe72cf5f7c817f82da9f35c7e836" - integrity sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA== +"@aws-sdk/middleware-logger@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.972.7.tgz#ffea4e2ff1e9d86047c564c982d64ade8017791e" + integrity sha512-LXhiWlWb26txCU1vcI9PneESSeRp/RYY/McuM4SpdrimQR5NgwaPb4VJCadVeuGWgh6QmqZ6rAKSoL1ob16W6w== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz#5b95dcecff76a0d2963bd954bdef87700d1b1c8c" - integrity sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q== +"@aws-sdk/middleware-recursion-detection@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.7.tgz#9d6376ee724c9b77d6518c51d0b2c8b18f1f72bf" + integrity sha512-l2VQdcBcYLzIzykCHtXlbpiVCZ94/xniLIkAj0jpnpjY4xlgZx7f56Ypn+uV1y3gG0tNVytJqo3K9bfMFee7SQ== dependencies: - "@aws-sdk/types" "^3.973.1" + "@aws-sdk/types" "^3.973.5" "@aws/lambda-invoke-store" "^0.2.2" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@^3.972.11": - version "3.972.11" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.11.tgz#db6fc30c5ff70ee9b0a616f7fe3802bccbf73777" - integrity sha512-Qr0T7ZQTRMOuR6ahxEoJR1thPVovfWrKB2a6KBGR+a8/ELrFodrgHwhq50n+5VMaGuLtGhHiISU3XGsZmtmVXQ== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-arn-parser" "^3.972.2" - "@smithy/core" "^3.23.2" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/signature-v4" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/util-config-provider" "^4.2.0" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-stream" "^4.5.12" - "@smithy/util-utf8" "^4.2.0" +"@aws-sdk/middleware-sdk-s3@^3.972.18", "@aws-sdk/middleware-sdk-s3@^3.972.19": + version "3.972.19" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.19.tgz#4f73dcfb0060cfbaddd0887baa5c211a01fba71a" + integrity sha512-/CtOHHVFg4ZuN6CnLnYkrqWgVEnbOBC4kNiKa+4fldJ9cioDt3dD/f5vpq0cWLOXwmGL2zgVrVxNhjxWpxNMkg== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/util-arn-parser" "^3.972.3" + "@smithy/core" "^3.23.9" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/signature-v4" "^5.3.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-stream" "^4.5.17" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/middleware-ssec@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.3.tgz#4f81d310fd91164e6e18ba3adab6bcf906920333" - integrity sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg== +"@aws-sdk/middleware-ssec@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.7.tgz#49fac7b5078f8f1e0936ff2eedbe68efe7fc05a4" + integrity sha512-G9clGVuAml7d8DYzY6DnRi7TIIDRvZ3YpqJPz/8wnWS5fYx/FNWNmkO6iJVlVkQg9BfeMzd+bVPtPJOvC4B+nQ== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@^3.972.11": - version "3.972.11" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.11.tgz#9723b323fd67ee4b96ff613877bb2fca4e3fc560" - integrity sha512-R8CvPsPHXwzIHCAza+bllY6PrctEk4lYq/SkHJz9NLoBHCcKQrbOcsfXxO6xmipSbUNIbNIUhH0lBsJGgsRdiw== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-endpoints" "3.993.0" - "@smithy/core" "^3.23.2" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" +"@aws-sdk/middleware-user-agent@^3.972.19", "@aws-sdk/middleware-user-agent@^3.972.20": + version "3.972.20" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.20.tgz#9c058871881b3c4adac27c28c7801bedbd530dac" + integrity sha512-3kNTLtpUdeahxtnJRnj/oIdLAUdzTfr9N40KtxNhtdrq+Q1RPMdCJINRXq37m4t5+r3H70wgC3opW46OzFcZYA== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/util-endpoints" "^3.996.4" + "@smithy/core" "^3.23.9" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-retry" "^4.2.11" tslib "^2.6.2" -"@aws-sdk/nested-clients@3.993.0": - version "3.993.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.993.0.tgz#9d93d9b3bf3f031d6addd9ee58cd90148f59362d" - integrity sha512-iOq86f2H67924kQUIPOAvlmMaOAvOLoDOIb66I2YqSUpMYB6ufiuJW3RlREgskxv86S5qKzMnfy/X6CqMjK6XQ== +"@aws-sdk/nested-clients@^3.996.8": + version "3.996.8" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.996.8.tgz#e984e73a4f0183c6a21ea098ae1ea3f06eba6822" + integrity sha512-6HlLm8ciMW8VzfB80kfIx16PBA9lOa9Dl+dmCBi78JDhvGlx3I7Rorwi5PpVRkL31RprXnYna3yBf6UKkD/PqA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/middleware-host-header" "^3.972.3" - "@aws-sdk/middleware-logger" "^3.972.3" - "@aws-sdk/middleware-recursion-detection" "^3.972.3" - "@aws-sdk/middleware-user-agent" "^3.972.11" - "@aws-sdk/region-config-resolver" "^3.972.3" - "@aws-sdk/types" "^3.973.1" - "@aws-sdk/util-endpoints" "3.993.0" - "@aws-sdk/util-user-agent-browser" "^3.972.3" - "@aws-sdk/util-user-agent-node" "^3.972.9" - "@smithy/config-resolver" "^4.4.6" - "@smithy/core" "^3.23.2" - "@smithy/fetch-http-handler" "^5.3.9" - "@smithy/hash-node" "^4.2.8" - "@smithy/invalid-dependency" "^4.2.8" - "@smithy/middleware-content-length" "^4.2.8" - "@smithy/middleware-endpoint" "^4.4.16" - "@smithy/middleware-retry" "^4.4.33" - "@smithy/middleware-serde" "^4.2.9" - "@smithy/middleware-stack" "^4.2.8" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/node-http-handler" "^4.4.10" - "@smithy/protocol-http" "^5.3.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-body-length-browser" "^4.2.0" - "@smithy/util-body-length-node" "^4.2.1" - "@smithy/util-defaults-mode-browser" "^4.3.32" - "@smithy/util-defaults-mode-node" "^4.2.35" - "@smithy/util-endpoints" "^3.2.8" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-retry" "^4.2.8" - "@smithy/util-utf8" "^4.2.0" + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/middleware-host-header" "^3.972.7" + "@aws-sdk/middleware-logger" "^3.972.7" + "@aws-sdk/middleware-recursion-detection" "^3.972.7" + "@aws-sdk/middleware-user-agent" "^3.972.20" + "@aws-sdk/region-config-resolver" "^3.972.7" + "@aws-sdk/types" "^3.973.5" + "@aws-sdk/util-endpoints" "^3.996.4" + "@aws-sdk/util-user-agent-browser" "^3.972.7" + "@aws-sdk/util-user-agent-node" "^3.973.5" + "@smithy/config-resolver" "^4.4.10" + "@smithy/core" "^3.23.9" + "@smithy/fetch-http-handler" "^5.3.13" + "@smithy/hash-node" "^4.2.11" + "@smithy/invalid-dependency" "^4.2.11" + "@smithy/middleware-content-length" "^4.2.11" + "@smithy/middleware-endpoint" "^4.4.23" + "@smithy/middleware-retry" "^4.4.40" + "@smithy/middleware-serde" "^4.2.12" + "@smithy/middleware-stack" "^4.2.11" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/node-http-handler" "^4.4.14" + "@smithy/protocol-http" "^5.3.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" + "@smithy/url-parser" "^4.2.11" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.39" + "@smithy/util-defaults-mode-node" "^4.2.42" + "@smithy/util-endpoints" "^3.3.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-retry" "^4.2.11" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz#25af64235ca6f4b6b21f85d4b3c0b432efc4ae04" - integrity sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow== +"@aws-sdk/region-config-resolver@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.7.tgz#36fd0eba2bfedeb57b843b3cd8266fb7668a7e85" + integrity sha512-/Ev/6AI8bvt4HAAptzSjThGUMjcWaX3GX8oERkB0F0F9x2dLSBdgFDiyrRz3i0u0ZFZFQ1b28is4QhyqXTUsVA== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/config-resolver" "^4.4.6" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/config-resolver" "^4.4.10" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.995.0": - version "3.995.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.995.0.tgz#f9be6582675363b040d59854cb1a86996f9b7e3d" - integrity sha512-9Qx5JcAucnxnomREPb2D6L8K8GLG0rknt3+VK/BU3qTUynAcV4W21DQ04Z2RKDw+DYpW88lsZpXbVetWST2WUg== +"@aws-sdk/signature-v4-multi-region@^3.996.6": + version "3.996.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.7.tgz#39de33bcddca0fbb48e6120430bf107a4234631b" + integrity sha512-mYhh7FY+7OOqjkYkd6+6GgJOsXK1xBWmuR+c5mxJPj2kr5TBNeZq+nUvE9kANWAux5UxDVrNOSiEM/wlHzC3Lg== dependencies: - "@aws-sdk/middleware-sdk-s3" "^3.972.11" - "@aws-sdk/types" "^3.973.1" - "@smithy/protocol-http" "^5.3.8" - "@smithy/signature-v4" "^5.3.8" - "@smithy/types" "^4.12.0" - tslib "^2.6.2" - -"@aws-sdk/token-providers@3.993.0": - version "3.993.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.993.0.tgz#4d52a67e7699acbea356a50504943ace883fe03c" - integrity sha512-+35g4c+8r7sB9Sjp1KPdM8qxGn6B/shBjJtEUN4e+Edw9UEQlZKIzioOGu3UAbyE0a/s450LdLZr4wbJChtmww== - dependencies: - "@aws-sdk/core" "^3.973.11" - "@aws-sdk/nested-clients" "3.993.0" - "@aws-sdk/types" "^3.973.1" - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" + "@aws-sdk/middleware-sdk-s3" "^3.972.19" + "@aws-sdk/types" "^3.973.5" + "@smithy/protocol-http" "^5.3.11" + "@smithy/signature-v4" "^5.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.973.1": - version "3.973.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.1.tgz#1b2992ec6c8380c3e74c9bd2c74703e9a807d6e0" - integrity sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg== - dependencies: - "@smithy/types" "^4.12.0" +"@aws-sdk/token-providers@3.1005.0": + version "3.1005.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1005.0.tgz#ac8e4f094bf9fb7c5a8d351544daf732d26af447" + integrity sha512-vMxd+ivKqSxU9bHx5vmAlFKDAkjGotFU56IOkDa5DaTu1WWwbcse0yFHEm9I537oVvodaiwMl3VBwgHfzQ2rvw== + dependencies: + "@aws-sdk/core" "^3.973.19" + "@aws-sdk/nested-clients" "^3.996.8" + "@aws-sdk/types" "^3.973.5" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/util-arn-parser@^3.972.2": - version "3.972.2" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz#ef18ba889e8ef35f083f1e962018bc0ce70acef3" - integrity sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg== +"@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.973.5": + version "3.973.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.5.tgz#0fc00f066dbaaa40c09f2b7efdd86781807b5c70" + integrity sha512-hl7BGwDCWsjH8NkZfx+HgS7H2LyM2lTMAI7ba9c8O0KqdBLTdNJivsHpqjg9rNlAlPyREb6DeDRXUl0s8uFdmQ== dependencies: + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.993.0": - version "3.993.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.993.0.tgz#60a11de23df02e76142a06dd20878b47255fee56" - integrity sha512-j6vioBeRZ4eHX4SWGvGPpwGg/xSOcK7f1GL0VM+rdf3ZFTIsUEhCFmD78B+5r2PgztcECSzEfvHQX01k8dPQPw== +"@aws-sdk/util-arn-parser@^3.972.3": + version "3.972.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz#ed989862bbb172ce16d9e1cd5790e5fe367219c2" + integrity sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-endpoints" "^3.2.8" tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.995.0": - version "3.995.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.995.0.tgz#9815ef48b79e56e05130928885126385835a120c" - integrity sha512-aym/pjB8SLbo9w2nmkrDdAAVKVlf7CM71B9mKhjDbJTzwpSFBPHqJIMdDyj0mLumKC0aIVDr1H6U+59m9GvMFw== +"@aws-sdk/util-endpoints@^3.996.4": + version "3.996.4" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.996.4.tgz#9fcfeccbd9d2a8217b66f711cf303883ec4442c0" + integrity sha512-Hek90FBmd4joCFj+Vc98KLJh73Zqj3s2W56gjAcTkrNLMDI5nIFkG9YpfcJiVI1YlE2Ne1uOQNe+IgQ/Vz2XRA== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-endpoints" "^3.2.8" + "@aws-sdk/types" "^3.973.5" + "@smithy/types" "^4.13.0" + "@smithy/url-parser" "^4.2.11" + "@smithy/util-endpoints" "^3.3.2" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": - version "3.965.4" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.965.4.tgz#f62d279e1905f6939b6dffb0f76ab925440f72bf" - integrity sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog== + version "3.965.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz#e30e6ff2aff6436209ed42c765dec2d2a48df7c0" + integrity sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ== dependencies: tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@^3.972.3": - version "3.972.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz#1363b388cb3af86c5322ef752c0cf8d7d25efa8a" - integrity sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw== +"@aws-sdk/util-user-agent-browser@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.7.tgz#0e7205db8d47760df014fffddcbf0ccfc350e84d" + integrity sha512-7SJVuvhKhMF/BkNS1n0QAJYgvEwYbK2QLKBrzDiwQGiTRU6Yf1f3nehTzm/l21xdAOtWSfp2uWSddPnP2ZtsVw== dependencies: - "@aws-sdk/types" "^3.973.1" - "@smithy/types" "^4.12.0" + "@aws-sdk/types" "^3.973.5" + "@smithy/types" "^4.13.0" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@^3.972.10", "@aws-sdk/util-user-agent-node@^3.972.9": - version "3.972.10" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.10.tgz#a449af988dba13db55ac37ab1844d942f522ab68" - integrity sha512-LVXzICPlsheET+sE6tkcS47Q5HkSTrANIlqL1iFxGAY/wRQ236DX/PCAK56qMh9QJoXAfXfoRW0B0Og4R+X7Nw== +"@aws-sdk/util-user-agent-node@^3.973.4", "@aws-sdk/util-user-agent-node@^3.973.5": + version "3.973.5" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.5.tgz#cbb11aae2d761e2cb3d3ad4be7b88f6d4726fb83" + integrity sha512-Dyy38O4GeMk7UQ48RupfHif//gqnOPbq/zlvRssc11E2mClT+aUfc3VS2yD8oLtzqO3RsqQ9I3gOBB4/+HjPOw== dependencies: - "@aws-sdk/middleware-user-agent" "^3.972.11" - "@aws-sdk/types" "^3.973.1" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/types" "^4.12.0" + "@aws-sdk/middleware-user-agent" "^3.972.20" + "@aws-sdk/types" "^3.973.5" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@aws-sdk/xml-builder@^3.972.5": - version "3.972.5" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.5.tgz#cde05cf1fa9021a8935e1e594fe8eacdce05f5a8" - integrity sha512-mCae5Ys6Qm1LDu0qdGwx2UQ63ONUe+FHw908fJzLDqFKTDBK4LDZUqKWm4OkTCNFq19bftjsBSESIGLD/s3/rA== +"@aws-sdk/xml-builder@^3.972.10": + version "3.972.10" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.10.tgz#d8a7171b70c8ee9354747f0ac7d368dd27d50e46" + integrity sha512-OnejAIVD+CxzyAUrVic7lG+3QRltyja9LoNqCE/1YVs8ichoTbJlVSaZ9iSMcnHLyzrSNtvaOGjSDRP+d/ouFA== dependencies: - "@smithy/types" "^4.12.0" - fast-xml-parser "5.3.6" + "@smithy/types" "^4.13.0" + fast-xml-parser "5.4.1" tslib "^2.6.2" "@aws/lambda-invoke-store@^0.2.2": @@ -993,17 +939,17 @@ dependencies: "@types/json-schema" "^7.0.15" -"@eslint/core@^1.0.1": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-1.1.0.tgz#51f5cd970e216fbdae6721ac84491f57f965836d" - integrity sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw== +"@eslint/core@^1.1.0", "@eslint/core@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-1.1.1.tgz#450f3d2be2d463ccd51119544092256b4e88df32" + integrity sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ== dependencies: "@types/json-schema" "^7.0.15" "@eslint/css-tree@^3.6.6": - version "3.6.8" - resolved "https://registry.yarnpkg.com/@eslint/css-tree/-/css-tree-3.6.8.tgz#8449d80a6e061bde514bd302a278a533d9716aba" - integrity sha512-s0f40zY7dlMp8i0Jf0u6l/aSswS0WRAgkhgETgiCJRcxIWb4S/Sp9uScKHWbkM3BnoFLbJbmOYk5AZUDFVxaLA== + version "3.6.9" + resolved "https://registry.yarnpkg.com/@eslint/css-tree/-/css-tree-3.6.9.tgz#d52d4c823893644f2e2910a035c9a77953d529f4" + integrity sha512-3D5/OHibNEGk+wKwNwMbz63NMf367EoR4mVNNpxddCHKEb2Nez7z62J2U6YjtErSsZDoY0CsccmoUpdEbkogNA== dependencies: mdn-data "2.23.0" source-map-js "^1.0.1" @@ -1038,12 +984,12 @@ integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@eslint/json@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@eslint/json/-/json-1.0.0.tgz#b9ec7ccaa2849a990fb0d128e2213a8f8e427be4" - integrity sha512-x0YjhxhUIG9yiS6KcB2SRmyzDM/eSac2IuhfLMyjAyxyCzH0gFjrHGPFahJlgiOt8dfaCpPDygcCmoCm9rzlyA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@eslint/json/-/json-1.0.1.tgz#3b4f7225e5ff8c3639ab0dc77eb2f451aa4ab8d8" + integrity sha512-bE2nGv8/U+uRvQEJWOgCsZCa65XsCBgxyyx/sXtTHVv0kqdauACLzyp7A1C3yNn7pRaWjIt5acxY+TAbSyIJXw== dependencies: - "@eslint/core" "^1.0.1" - "@eslint/plugin-kit" "^0.5.1" + "@eslint/core" "^1.1.0" + "@eslint/plugin-kit" "^0.6.0" "@humanwhocodes/momoa" "^3.3.10" natural-compare "^1.4.0" @@ -1055,12 +1001,12 @@ "@eslint/core" "^0.17.0" levn "^0.4.1" -"@eslint/plugin-kit@^0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.5.1.tgz#35b0ccf9a2f654501fbe4bfe2e798f2d1adacaeb" - integrity sha512-hZ2uC1jbf6JMSsF2ZklhRQqf6GLpYyux6DlzegnW/aFlpu6qJj5GO7ub7WOETCrEl6pl6DAX7RgTgj/fyG+6BQ== +"@eslint/plugin-kit@^0.6.0": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz#eb9e6689b56ce8bc1855bb33090e63f3fc115e8e" + integrity sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ== dependencies: - "@eslint/core" "^1.0.1" + "@eslint/core" "^1.1.1" levn "^0.4.1" "@humanwhocodes/config-array@^0.13.0": @@ -1395,9 +1341,9 @@ "@jridgewell/sourcemap-codec" "^1.4.14" "@jsforce/jsforce-node@^3.10.13": - version "3.10.13" - resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.10.13.tgz#d1e832178e2e74646c75b952e629ac5b8ceff7d0" - integrity sha512-Ft42/lp3WaVxijcX88Rb3yIxujk/u3LwL3913OTcB4WCpwjB9xTqP6jkVTKt2riXg+ZlNiS62SMpQeC3U1Efkw== + version "3.10.14" + resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.10.14.tgz#e6429626118a86247605f14b2466026f7180cff8" + integrity sha512-p8Ug1SypcAT7Q0zZA0+7fyBmgUpB/aXkde4Bxmu0S/O4p28CVwgYvKyFd9vswmHIhFabd/QqUCrlYuVhYdr2Ew== dependencies: "@sindresorhus/is" "^4" base64url "^3.0.1" @@ -1410,107 +1356,21 @@ node-fetch "^2.6.1" xml2js "^0.6.2" -"@jsonjoy.com/base64@17.67.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-17.67.0.tgz#7eeda3cb41138d77a90408fd2e42b2aba10576d7" - integrity sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw== - "@jsonjoy.com/base64@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== -"@jsonjoy.com/buffers@17.67.0", "@jsonjoy.com/buffers@^17.65.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz#5c58dbcdeea8824ce296bd1cfce006c2eb167b3d" - integrity sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw== - "@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== -"@jsonjoy.com/codegen@17.67.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz#3635fd8769d77e19b75dc5574bc9756019b2e591" - integrity sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q== - "@jsonjoy.com/codegen@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz#320728b4b7bef63abb60e7630351623899237411" - integrity sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw== - dependencies: - "@jsonjoy.com/fs-node-builtins" "4.56.10" - "@jsonjoy.com/fs-node-utils" "4.56.10" - thingies "^2.5.0" - -"@jsonjoy.com/fs-fsa@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz#02bac88c4968ddf2effbd7452861aaed60ba3557" - integrity sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q== - dependencies: - "@jsonjoy.com/fs-core" "4.56.10" - "@jsonjoy.com/fs-node-builtins" "4.56.10" - "@jsonjoy.com/fs-node-utils" "4.56.10" - thingies "^2.5.0" - -"@jsonjoy.com/fs-node-builtins@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz#a32a5bcb093f8b34a99aa8957e993a52ec316662" - integrity sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw== - -"@jsonjoy.com/fs-node-to-fsa@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz#33fc503e50d283ac5fc510e3accced7fccecf2f4" - integrity sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw== - dependencies: - "@jsonjoy.com/fs-fsa" "4.56.10" - "@jsonjoy.com/fs-node-builtins" "4.56.10" - "@jsonjoy.com/fs-node-utils" "4.56.10" - -"@jsonjoy.com/fs-node-utils@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz#788e95052aa99744f6e8e55b5098afc203df2b9e" - integrity sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg== - dependencies: - "@jsonjoy.com/fs-node-builtins" "4.56.10" - -"@jsonjoy.com/fs-node@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz#70b18bfaf14544a9820d2016e913dde12c6de991" - integrity sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q== - dependencies: - "@jsonjoy.com/fs-core" "4.56.10" - "@jsonjoy.com/fs-node-builtins" "4.56.10" - "@jsonjoy.com/fs-node-utils" "4.56.10" - "@jsonjoy.com/fs-print" "4.56.10" - "@jsonjoy.com/fs-snapshot" "4.56.10" - glob-to-regex.js "^1.0.0" - thingies "^2.5.0" - -"@jsonjoy.com/fs-print@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz#7c181b9aefcc1b268be0e6233bff26310c355335" - integrity sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw== - dependencies: - "@jsonjoy.com/fs-node-utils" "4.56.10" - tree-dump "^1.1.0" - -"@jsonjoy.com/fs-snapshot@4.56.10": - version "4.56.10" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz#05aadd2c0eaa855b13d6cb17d29b7c8cee239c8c" - integrity sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g== - dependencies: - "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.56.10" - "@jsonjoy.com/json-pack" "^17.65.0" - "@jsonjoy.com/util" "^17.65.0" - "@jsonjoy.com/json-pack@^1.11.0": version "1.21.0" resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" @@ -1525,27 +1385,6 @@ thingies "^2.5.0" tree-dump "^1.1.0" -"@jsonjoy.com/json-pack@^17.65.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz#8dd8ff65dd999c5d4d26df46c63915c7bdec093a" - integrity sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w== - dependencies: - "@jsonjoy.com/base64" "17.67.0" - "@jsonjoy.com/buffers" "17.67.0" - "@jsonjoy.com/codegen" "17.67.0" - "@jsonjoy.com/json-pointer" "17.67.0" - "@jsonjoy.com/util" "17.67.0" - hyperdyperid "^1.2.0" - thingies "^2.5.0" - tree-dump "^1.1.0" - -"@jsonjoy.com/json-pointer@17.67.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz#74439573dc046e0c9a3a552fb94b391bc75313b8" - integrity sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA== - dependencies: - "@jsonjoy.com/util" "17.67.0" - "@jsonjoy.com/json-pointer@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" @@ -1554,14 +1393,6 @@ "@jsonjoy.com/codegen" "^1.0.0" "@jsonjoy.com/util" "^1.9.0" -"@jsonjoy.com/util@17.67.0", "@jsonjoy.com/util@^17.65.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-17.67.0.tgz#7c4288fc3808233e55c7610101e7bb4590cddd3f" - integrity sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew== - dependencies: - "@jsonjoy.com/buffers" "17.67.0" - "@jsonjoy.com/codegen" "17.67.0" - "@jsonjoy.com/util@^1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" @@ -1591,10 +1422,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/core@^4", "@oclif/core@^4.0.27", "@oclif/core@^4.5.2", "@oclif/core@^4.8.0": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.8.2.tgz#b4bb065b44da9eb2719086854b009a6747455d09" - integrity sha512-P+XAOtuWM/Fewau64c31bYUiLFJTzhth229xVbBrG1siLc7+2uezUYhP5eWn/++nZPZ/wChSqYgQNN4HPw/ZHQ== +"@oclif/core@4.8.3", "@oclif/core@^4", "@oclif/core@^4.0.27", "@oclif/core@^4.5.2", "@oclif/core@^4.8.0": + version "4.8.3" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.8.3.tgz#c1f488841cd0929dbe101f1b86a213bf4349de2a" + integrity sha512-f7Rc1JBZO0wNMyDmNzP5IFOv5eM97S9pO4JUFdu2OLyk73YeBI9wog1Yyf666NOQvyptkbG1xh8inzMDQLNTyQ== dependencies: ansi-escapes "^4.3.2" ansis "^3.17.0" @@ -1761,9 +1592,9 @@ ts-retry-promise "^0.8.1" "@salesforce/core@^8.18.7", "@salesforce/core@^8.23.1", "@salesforce/core@^8.23.3", "@salesforce/core@^8.26.2", "@salesforce/core@^8.26.3", "@salesforce/core@^8.5.1", "@salesforce/core@^8.8.0": - version "8.26.3" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.26.3.tgz#0b2502cacca8977f2ae95283d944771040eb7869" - integrity sha512-lPNFHjHFeC4V3KuH88xuVLGhAqmtM8meUcvyejNh8bQ5w642APKRTGDZ0pOnWHJAe5SQy7cSQ1WqvO3V73ouQw== + version "8.27.0" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.27.0.tgz#171660a3d98770d3dd09b2ac16e49d139dff7578" + integrity sha512-Je//0ySHRJRTD16dFxdm6J624i+oufKNq+o8O1AoUNYlT/k4SJi/YGt+iGlKesZGxPf7X1zzUPY1S6C99c/UBA== dependencies: "@jsforce/jsforce-node" "^3.10.13" "@salesforce/kit" "^3.2.4" @@ -1776,7 +1607,7 @@ js2xmlparser "^4.0.1" jsonwebtoken "9.0.3" jszip "3.10.1" - memfs "^4.30.1" + memfs "4.38.1" pino "^9.7.0" pino-abstract-transport "^1.2.0" pino-pretty "^11.3.0" @@ -1883,11 +1714,11 @@ terminal-link "^3.0.0" "@salesforce/source-deploy-retrieve@^12.31.12", "@salesforce/source-deploy-retrieve@^12.31.14": - version "12.31.14" - resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.31.14.tgz#6ed0a2fdb9a14d60ed64a2dd8fdc18c16af143a6" - integrity sha512-tLnTCG6t+d+MN8pGijF6nL4lsqE37FaBINZZvyd+IDAw+7eWffFqIXK/nNyQ1ZARTNeHOs5K/NlNXNBp5+x/YQ== + version "12.31.16" + resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.31.16.tgz#bb62b5bb29c66221d1d162a918e1f8f7acfe4da2" + integrity sha512-Jmh4d4s24x1e0JeCqysjp5A4+SpLviTnx6q4QTxDZCwSl9C+Y+mImkF9HLbcE8OUUqAsfmO4R1KSoCfXASVnpw== dependencies: - "@salesforce/core" "^8.26.2" + "@salesforce/core" "^8.26.3" "@salesforce/kit" "^3.2.4" "@salesforce/ts-types" "^2.0.12" "@salesforce/types" "^1.6.0" @@ -1908,9 +1739,9 @@ integrity sha512-BIJyduJC18Kc8z+arUm5AZ9VkPRyw1KKAm+Tk+9LT99eOzhNilyfKzhZ4t+tG2lIGgnJpmytZfVDZ0e2kFul8g== "@salesforce/types@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@salesforce/types/-/types-1.6.0.tgz#926515ce3f6b16c8efe2afcc86475001d419c6cc" - integrity sha512-UHk1L3QRaa3WfIqQn5RLmcZmxErXvpFPUteLLgIxlFLrxhcKevvEwkMJF2xNIHpfT4Xj7PcYvqtrRYapX4Pp+A== + version "1.7.1" + resolved "https://registry.yarnpkg.com/@salesforce/types/-/types-1.7.1.tgz#8983f87508ac21bfb334fe650b7cafdfe4278cf8" + integrity sha512-PyV3ZyZum8bjO1LByNXWCSOGt1b9X9x2knIiFWgnYTsHmLK8OP+f6i+wPh4qu1e8+Zr+hNV0rTKVP8p/kCGqyQ== "@shikijs/core@1.29.2": version "1.29.2" @@ -2033,159 +1864,159 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== -"@smithy/abort-controller@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.2.8.tgz#3bfd7a51acce88eaec9a65c3382542be9f3a053a" - integrity sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw== +"@smithy/abort-controller@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.2.11.tgz#b989e63615e5449c2ba90d80fcbe4fdd71123c54" + integrity sha512-Hj4WoYWMJnSpM6/kchsm4bUNTL9XiSyhvoMb2KIq4VJzyDt7JpGHUZHkVNPZVC7YE1tf8tPeVauxpFBKGW4/KQ== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/chunked-blob-reader-native@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz#380266951d746b522b4ab2b16bfea6b451147b41" - integrity sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ== +"@smithy/chunked-blob-reader-native@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz#9e79a80d8d44798e7ce7a8f968cbbbaf5a40d950" + integrity sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw== dependencies: - "@smithy/util-base64" "^4.3.0" + "@smithy/util-base64" "^4.3.2" tslib "^2.6.2" -"@smithy/chunked-blob-reader@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz#776fec5eaa5ab5fa70d0d0174b7402420b24559c" - integrity sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA== +"@smithy/chunked-blob-reader@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz#3af48e37b10e5afed478bb31d2b7bc03c81d196c" + integrity sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw== dependencies: tslib "^2.6.2" -"@smithy/config-resolver@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.4.6.tgz#bd7f65b3da93f37f1c97a399ade0124635c02297" - integrity sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ== - dependencies: - "@smithy/node-config-provider" "^4.3.8" - "@smithy/types" "^4.12.0" - "@smithy/util-config-provider" "^4.2.0" - "@smithy/util-endpoints" "^3.2.8" - "@smithy/util-middleware" "^4.2.8" +"@smithy/config-resolver@^4.4.10": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.4.10.tgz#22529a2e8c23d979f69c3abca8d984c69d06ce4c" + integrity sha512-IRTkd6ps0ru+lTWnfnsbXzW80A8Od8p3pYiZnW98K2Hb20rqfsX7VTlfUwhrcOeSSy68Gn9WBofwPuw3e5CCsg== + dependencies: + "@smithy/node-config-provider" "^4.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-config-provider" "^4.2.2" + "@smithy/util-endpoints" "^3.3.2" + "@smithy/util-middleware" "^4.2.11" tslib "^2.6.2" -"@smithy/core@^3.23.2": - version "3.23.2" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.23.2.tgz#9300fe6fa6e8ceb19ecbbb9090ccea04942a37f0" - integrity sha512-HaaH4VbGie4t0+9nY3tNBRSxVTr96wzIqexUa6C2qx3MPePAuz7lIxPxYtt1Wc//SPfJLNoZJzfdt0B6ksj2jA== - dependencies: - "@smithy/middleware-serde" "^4.2.9" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-body-length-browser" "^4.2.0" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-stream" "^4.5.12" - "@smithy/util-utf8" "^4.2.0" - "@smithy/uuid" "^1.1.0" +"@smithy/core@^3.23.8", "@smithy/core@^3.23.9": + version "3.23.9" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.23.9.tgz#377c3e12187c9810a3f26d7904541770735785b5" + integrity sha512-1Vcut4LEL9HZsdpI0vFiRYIsaoPwZLjAxnVQDUMQK8beMS+EYPLDQCXtbzfxmM5GzSgjfe2Q9M7WaXwIMQllyQ== + dependencies: + "@smithy/middleware-serde" "^4.2.12" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-stream" "^4.5.17" + "@smithy/util-utf8" "^4.2.2" + "@smithy/uuid" "^1.1.2" tslib "^2.6.2" -"@smithy/credential-provider-imds@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz#b2f4bf759ab1c35c0dd00fa3470263c749ebf60f" - integrity sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw== +"@smithy/credential-provider-imds@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.11.tgz#106dda92b2a4275879e84f348826c311a1bb1b05" + integrity sha512-lBXrS6ku0kTj3xLmsJW0WwqWbGQ6ueooYyp/1L9lkyT0M02C+DWwYwc5aTyXFbRaK38ojALxNixg+LxKSHZc0g== dependencies: - "@smithy/node-config-provider" "^4.3.8" - "@smithy/property-provider" "^4.2.8" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/property-provider" "^4.2.11" + "@smithy/types" "^4.13.0" + "@smithy/url-parser" "^4.2.11" tslib "^2.6.2" -"@smithy/eventstream-codec@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz#2f431f4bac22e40aa6565189ea350c6fcb5efafd" - integrity sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw== +"@smithy/eventstream-codec@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.11.tgz#b26d17be447ddb361d7f90af44ff7fb03d8a3e08" + integrity sha512-Sf39Ml0iVX+ba/bgMPxaXWAAFmHqYLTmbjAPfLPLY8CrYkRDEqZdUsKC1OwVMCdJXfAt0v4j49GIJ8DoSYAe6w== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^4.12.0" - "@smithy/util-hex-encoding" "^4.2.0" + "@smithy/types" "^4.13.0" + "@smithy/util-hex-encoding" "^4.2.2" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz#04e2e1fad18e286d5595fbc0bff22e71251fca38" - integrity sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw== +"@smithy/eventstream-serde-browser@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.11.tgz#9bcaec291d3b5b6a199773ab5d096f395abc22e2" + integrity sha512-3rEpo3G6f/nRS7fQDsZmxw/ius6rnlIpz4UX6FlALEzz8JoSxFmdBt0SZnthis+km7sQo6q5/3e+UJcuQivoXA== dependencies: - "@smithy/eventstream-serde-universal" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/eventstream-serde-universal" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^4.3.8": - version "4.3.8" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz#b913d23834c6ebf1646164893e1bec89dffe4f3b" - integrity sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ== +"@smithy/eventstream-serde-config-resolver@^4.3.11": + version "4.3.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.11.tgz#87a30070c7026acdffa5294b0953966d21c588db" + integrity sha512-XeNIA8tcP/GDWnnKkO7qEm/bg0B/bP9lvIXZBXcGZwZ+VYM8h8k9wuDvUODtdQ2Wcp2RcBkPTCSMmaniVHrMlA== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz#5f2dfa2cbb30bf7564c8d8d82a9832e9313f5243" - integrity sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A== +"@smithy/eventstream-serde-node@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.11.tgz#25a2d6d3d13048be4e62c7211c99d138bddc480e" + integrity sha512-fzbCh18rscBDTQSCrsp1fGcclLNF//nJyhjldsEl/5wCYmgpHblv5JSppQAyQI24lClsFT0wV06N1Porn0IsEw== dependencies: - "@smithy/eventstream-serde-universal" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/eventstream-serde-universal" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz#a62b389941c28a8c3ab44a0c8ba595447e0258a7" - integrity sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ== +"@smithy/eventstream-serde-universal@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.11.tgz#c5b5b15c2599441e3d8779bee592fbbbf722878f" + integrity sha512-MJ7HcI+jEkqoWT5vp+uoVaAjBrmxBtKhZTeynDRG/seEjJfqyg3SiqMMqyPnAMzmIfLaeJ/uiuSDP/l9AnMy/Q== dependencies: - "@smithy/eventstream-codec" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/eventstream-codec" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/fetch-http-handler@^5.3.9": - version "5.3.9" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz#edfc9e90e0c7538c81e22e748d62c0066cc91d58" - integrity sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA== +"@smithy/fetch-http-handler@^5.3.13": + version "5.3.13" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.13.tgz#9858e43ff009af6085cca326805c9d0c9a9579f5" + integrity sha512-U2Hcfl2s3XaYjikN9cT4mPu8ybDbImV3baXR0PkVlC0TTx808bRP3FaPGAzPtB8OByI+JqJ1kyS+7GEgae7+qQ== dependencies: - "@smithy/protocol-http" "^5.3.8" - "@smithy/querystring-builder" "^4.2.8" - "@smithy/types" "^4.12.0" - "@smithy/util-base64" "^4.3.0" + "@smithy/protocol-http" "^5.3.11" + "@smithy/querystring-builder" "^4.2.11" + "@smithy/types" "^4.13.0" + "@smithy/util-base64" "^4.3.2" tslib "^2.6.2" -"@smithy/hash-blob-browser@^4.2.9": - version "4.2.9" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz#4f8e19b12b5a1000b7292b30f5ee237d32216af3" - integrity sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg== +"@smithy/hash-blob-browser@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.12.tgz#daa43ccb485d55187c93e72471e0fd48cae8da7b" + integrity sha512-1wQE33DsxkM/waftAhCH9VtJbUGyt1PJ9YRDpOu+q9FUi73LLFUZ2fD8A61g2mT1UY9k7b99+V1xZ41Rz4SHRQ== dependencies: - "@smithy/chunked-blob-reader" "^5.2.0" - "@smithy/chunked-blob-reader-native" "^4.2.1" - "@smithy/types" "^4.12.0" + "@smithy/chunked-blob-reader" "^5.2.2" + "@smithy/chunked-blob-reader-native" "^4.2.3" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/hash-node@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.2.8.tgz#c21eb055041716cd492dda3a109852a94b6d47bb" - integrity sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA== +"@smithy/hash-node@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.2.11.tgz#8b19d53661824ead9627b49a26e5555d6c8a98fd" + integrity sha512-T+p1pNynRkydpdL015ruIoyPSRw9e/SQOWmSAMmmprfswMrd5Ow5igOWNVlvyVFZlxXqGmyH3NQwfwy8r5Jx0A== dependencies: - "@smithy/types" "^4.12.0" - "@smithy/util-buffer-from" "^4.2.0" - "@smithy/util-utf8" "^4.2.0" + "@smithy/types" "^4.13.0" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/hash-stream-node@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz#d541a31c714ac9c85ae9fec91559e81286707ddb" - integrity sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w== +"@smithy/hash-stream-node@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.11.tgz#30f0236c85c1b900881c01eefe4f329ffe9ef7b1" + integrity sha512-hQsTjwPCRY8w9GK07w1RqJi3e+myh0UaOWBBhZ1UMSDgofH/Q1fEYzU1teaX6HkpX/eWDdm7tAGR0jBPlz9QEQ== dependencies: - "@smithy/types" "^4.12.0" - "@smithy/util-utf8" "^4.2.0" + "@smithy/types" "^4.13.0" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/invalid-dependency@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz#c578bc6d5540c877aaed5034b986b5f6bd896451" - integrity sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ== +"@smithy/invalid-dependency@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.2.11.tgz#ded68aa2299474c3cf06695ebb28a343928086ee" + integrity sha512-cGNMrgykRmddrNhYy1yBdrp5GwIgEkniS7k9O1VLB38yxQtlvrxpZtUVvo6T4cKpeZsriukBuuxfJcdZQc/f/g== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -2195,209 +2026,209 @@ dependencies: tslib "^2.6.2" -"@smithy/is-array-buffer@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz#b0f874c43887d3ad44f472a0f3f961bcce0550c2" - integrity sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ== +"@smithy/is-array-buffer@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz#c401ce54b12a16529eb1c938a0b6c2247cb763b8" + integrity sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow== dependencies: tslib "^2.6.2" -"@smithy/md5-js@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.8.tgz#d354dbf9aea7a580be97598a581e35eef324ce22" - integrity sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ== +"@smithy/md5-js@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.11.tgz#1bc8b13ad9cb1b47ac6965fca90ac49f6b22efef" + integrity sha512-350X4kGIrty0Snx2OWv7rPM6p6vM7RzryvFs6B/56Cux3w3sChOb3bymo5oidXJlPcP9fIRxGUCk7GqpiSOtng== dependencies: - "@smithy/types" "^4.12.0" - "@smithy/util-utf8" "^4.2.0" + "@smithy/types" "^4.13.0" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/middleware-content-length@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz#82c1df578fa70fe5800cf305b8788b9d2836a3e4" - integrity sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A== +"@smithy/middleware-content-length@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.2.11.tgz#8a385fa77e8fa6ffea6b46e7af37b14d2678571f" + integrity sha512-UvIfKYAKhCzr4p6jFevPlKhQwyQwlJ6IeKLDhmV1PlYfcW3RL4ROjNEDtSik4NYMi9kDkH7eSwyTP3vNJ/u/Dw== dependencies: - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^4.4.16": - version "4.4.16" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.16.tgz#46408512c6737c4719c5d8abb9f99820824441e7" - integrity sha512-L5GICFCSsNhbJ5JSKeWFGFy16Q2OhoBizb3X2DrxaJwXSEujVvjG9Jt386dpQn2t7jINglQl0b4K/Su69BdbMA== - dependencies: - "@smithy/core" "^3.23.2" - "@smithy/middleware-serde" "^4.2.9" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" - "@smithy/url-parser" "^4.2.8" - "@smithy/util-middleware" "^4.2.8" +"@smithy/middleware-endpoint@^4.4.22", "@smithy/middleware-endpoint@^4.4.23": + version "4.4.23" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.23.tgz#4d2d7f2c5e133608782b071b5244e74e1ff2f26a" + integrity sha512-UEFIejZy54T1EJn2aWJ45voB7RP2T+IRzUqocIdM6GFFa5ClZncakYJfcYnoXt3UsQrZZ9ZRauGm77l9UCbBLw== + dependencies: + "@smithy/core" "^3.23.9" + "@smithy/middleware-serde" "^4.2.12" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" + "@smithy/url-parser" "^4.2.11" + "@smithy/util-middleware" "^4.2.11" tslib "^2.6.2" -"@smithy/middleware-retry@^4.4.33": - version "4.4.33" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.4.33.tgz#37ac0f72683757a83074f66f7328d4f7d5150d75" - integrity sha512-jLqZOdJhtIL4lnA9hXnAG6GgnJlo1sD3FqsTxm9wSfjviqgWesY/TMBVnT84yr4O0Vfe0jWoXlfFbzsBVph3WA== - dependencies: - "@smithy/node-config-provider" "^4.3.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/service-error-classification" "^4.2.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-retry" "^4.2.8" - "@smithy/uuid" "^1.1.0" +"@smithy/middleware-retry@^4.4.39", "@smithy/middleware-retry@^4.4.40": + version "4.4.40" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.4.40.tgz#b10da39d8138f9a14953c2444ed9a737514d8bcf" + integrity sha512-YhEMakG1Ae57FajERdHNZ4ShOPIY7DsgV+ZoAxo/5BT0KIe+f6DDU2rtIymNNFIj22NJfeeI6LWIifrwM0f+rA== + dependencies: + "@smithy/node-config-provider" "^4.3.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/service-error-classification" "^4.2.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-retry" "^4.2.11" + "@smithy/uuid" "^1.1.2" tslib "^2.6.2" -"@smithy/middleware-serde@^4.2.9": - version "4.2.9" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz#fd9d9b02b265aef67c9a30f55c2a5038fc9ca791" - integrity sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ== +"@smithy/middleware-serde@^4.2.12": + version "4.2.12" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.2.12.tgz#8f836f3edc85701b69df4f2819106a6e0ef50cf8" + integrity sha512-W9g1bOLui7Xn5FABRVS0o3rXL0gfN37d/8I/W7i0N7oxjx9QecUmXEMSUMADTODwdtka9cN43t5BI2CodLJpng== dependencies: - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/middleware-stack@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz#4fa9cfaaa05f664c9bb15d45608f3cb4f6da2b76" - integrity sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA== +"@smithy/middleware-stack@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.2.11.tgz#cadd3ada5fa11fe8a192cd18444a77c4510c8bc3" + integrity sha512-s+eenEPW6RgliDk2IhjD2hWOxIx1NKrOHxEwNUaUXxYBxIyCcDfNULZ2Mu15E3kwcJWBedTET/kEASPV1A1Akg== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/node-config-provider@^4.3.8": - version "4.3.8" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz#85a0683448262b2eb822f64c14278d4887526377" - integrity sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg== +"@smithy/node-config-provider@^4.3.11": + version "4.3.11" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.3.11.tgz#a6d246b67c10c6873169bae46e6d04261d548402" + integrity sha512-xD17eE7kaLgBBGf5CZQ58hh2YmwK1Z0O8YhffwB/De2jsL0U3JklmhVYJ9Uf37OtUDLF2gsW40Xwwag9U869Gg== dependencies: - "@smithy/property-provider" "^4.2.8" - "@smithy/shared-ini-file-loader" "^4.4.3" - "@smithy/types" "^4.12.0" + "@smithy/property-provider" "^4.2.11" + "@smithy/shared-ini-file-loader" "^4.4.6" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/node-http-handler@^4.4.10": - version "4.4.10" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.4.10.tgz#4945e2c2e61174ec1471337e3ddd50b8e4921204" - integrity sha512-u4YeUwOWRZaHbWaebvrs3UhwQwj+2VNmcVCwXcYTvPIuVyM7Ex1ftAj+fdbG/P4AkBwLq/+SKn+ydOI4ZJE9PA== +"@smithy/node-http-handler@^4.4.14": + version "4.4.14" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.4.14.tgz#a40a6677b7cda2c100141833abee1401c2e1a74f" + integrity sha512-DamSqaU8nuk0xTJDrYnRzZndHwwRnyj/n/+RqGGCcBKB4qrQem0mSDiWdupaNWdwxzyMU91qxDmHOCazfhtO3A== dependencies: - "@smithy/abort-controller" "^4.2.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/querystring-builder" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/abort-controller" "^4.2.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/querystring-builder" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/property-provider@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.2.8.tgz#6e37b30923d2d31370c50ce303a4339020031472" - integrity sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w== +"@smithy/property-provider@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.2.11.tgz#7a1b16ae2083272f80e380ee7948ddc103301db1" + integrity sha512-14T1V64o6/ndyrnl1ze1ZhyLzIeYNN47oF/QU6P5m82AEtyOkMJTb0gO1dPubYjyyKuPD6OSVMPDKe+zioOnCg== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/protocol-http@^5.3.8": - version "5.3.8" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.3.8.tgz#0938f69a3c3673694c2f489a640fce468ce75006" - integrity sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ== +"@smithy/protocol-http@^5.3.11": + version "5.3.11" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.3.11.tgz#e4450af3ba9e52e8b99a9c3035c90c8cd853be27" + integrity sha512-hI+barOVDJBkNt4y0L2mu3Ugc0w7+BpJ2CZuLwXtSltGAAwCb3IvnalGlbDV/UCS6a9ZuT3+exd1WxNdLb5IlQ== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/querystring-builder@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz#2fa72d29eb1844a6a9933038bbbb14d6fe385e93" - integrity sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw== +"@smithy/querystring-builder@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.2.11.tgz#befb7753b142fab65edaee070096c1c5cb2ad917" + integrity sha512-7spdikrYiljpket6u0up2Ck2mxhy7dZ0+TDd+S53Dg2DHd6wg+YNJrTCHiLdgZmEXZKI7LJZcwL3721ZRDFiqA== dependencies: - "@smithy/types" "^4.12.0" - "@smithy/util-uri-escape" "^4.2.0" + "@smithy/types" "^4.13.0" + "@smithy/util-uri-escape" "^4.2.2" tslib "^2.6.2" -"@smithy/querystring-parser@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz#aa3f2456180ce70242e89018d0b1ebd4782a6347" - integrity sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA== +"@smithy/querystring-parser@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.2.11.tgz#b1e85945bc3c80058e0b0114af391bb069b2393f" + integrity sha512-nE3IRNjDltvGcoThD2abTozI1dkSy8aX+a2N1Rs55en5UsdyyIXgGEmevUL3okZFoJC77JgRGe99xYohhsjivQ== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/service-error-classification@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz#6d89dbad4f4978d7b75a44af8c18c22455a16cdc" - integrity sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ== +"@smithy/service-error-classification@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.2.11.tgz#da2ee1af5c851380e6b0146b75416f0e5f64e1f7" + integrity sha512-HkMFJZJUhzU3HvND1+Yw/kYWXp4RPDLBWLcK1n+Vqw8xn4y2YiBhdww8IxhkQjP/QlZun5bwm3vcHc8AqIU3zw== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" -"@smithy/shared-ini-file-loader@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz#6054215ecb3a6532b13aa49a9fbda640b63be50e" - integrity sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg== +"@smithy/shared-ini-file-loader@^4.4.6": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.6.tgz#435dc6d907bc8c6f795212e944000de063b2cfe1" + integrity sha512-IB/M5I8G0EeXZTHsAxpx51tMQ5R719F3aq+fjEB6VtNcCHDc0ajFDIGDZw+FW9GxtEkgTduiPpjveJdA/CX7sw== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/signature-v4@^5.3.8": - version "5.3.8" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.8.tgz#796619b10b7cc9467d0625b0ebd263ae04fdfb76" - integrity sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg== - dependencies: - "@smithy/is-array-buffer" "^4.2.0" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" - "@smithy/util-hex-encoding" "^4.2.0" - "@smithy/util-middleware" "^4.2.8" - "@smithy/util-uri-escape" "^4.2.0" - "@smithy/util-utf8" "^4.2.0" +"@smithy/signature-v4@^5.3.11": + version "5.3.11" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.11.tgz#81fc2aba69994b23aff730b984418e9696bc36c4" + integrity sha512-V1L6N9aKOBAN4wEHLyqjLBnAz13mtILU0SeDrjOaIZEeN6IFa6DxwRt1NNpOdmSpQUfkBj0qeD3m6P77uzMhgQ== + dependencies: + "@smithy/is-array-buffer" "^4.2.2" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-hex-encoding" "^4.2.2" + "@smithy/util-middleware" "^4.2.11" + "@smithy/util-uri-escape" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/smithy-client@^4.11.5": - version "4.11.5" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.11.5.tgz#4e2de632a036cffbf77337aac277131e85fcf399" - integrity sha512-xixwBRqoeP2IUgcAl3U9dvJXc+qJum4lzo3maaJxifsZxKUYLfVfCXvhT4/jD01sRrHg5zjd1cw2Zmjr4/SuKQ== - dependencies: - "@smithy/core" "^3.23.2" - "@smithy/middleware-endpoint" "^4.4.16" - "@smithy/middleware-stack" "^4.2.8" - "@smithy/protocol-http" "^5.3.8" - "@smithy/types" "^4.12.0" - "@smithy/util-stream" "^4.5.12" +"@smithy/smithy-client@^4.12.2", "@smithy/smithy-client@^4.12.3": + version "4.12.3" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.12.3.tgz#95370221bc5c2f30a25157b2df84a3630c81ec85" + integrity sha512-7k4UxjSpHmPN2AxVhvIazRSzFQjWnud3sOsXcFStzagww17j1cFQYqTSiQ8xuYK3vKLR1Ni8FzuT3VlKr3xCNw== + dependencies: + "@smithy/core" "^3.23.9" + "@smithy/middleware-endpoint" "^4.4.23" + "@smithy/middleware-stack" "^4.2.11" + "@smithy/protocol-http" "^5.3.11" + "@smithy/types" "^4.13.0" + "@smithy/util-stream" "^4.5.17" tslib "^2.6.2" -"@smithy/types@^4.12.0": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.12.0.tgz#55d2479080922bda516092dbf31916991d9c6fee" - integrity sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw== +"@smithy/types@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.13.0.tgz#9787297a07ee72ef74d4f7d93c744d10ed664c21" + integrity sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.8.tgz#b44267cd704abe114abcd00580acdd9e4acc1177" - integrity sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA== +"@smithy/url-parser@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.11.tgz#4c87eb5872c2ab0385086b38eee4b4a6e5a029b2" + integrity sha512-oTAGGHo8ZYc5VZsBREzuf5lf2pAurJQsccMusVZ85wDkX66ojEc/XauiGjzCj50A61ObFTPe6d7Pyt6UBYaing== dependencies: - "@smithy/querystring-parser" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/querystring-parser" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/util-base64@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.0.tgz#5e287b528793aa7363877c1a02cd880d2e76241d" - integrity sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ== +"@smithy/util-base64@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.2.tgz#be02bcb29a87be744356467ea25ffa413e695cea" + integrity sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ== dependencies: - "@smithy/util-buffer-from" "^4.2.0" - "@smithy/util-utf8" "^4.2.0" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/util-body-length-browser@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz#04e9fc51ee7a3e7f648a4b4bcdf96c350cfa4d61" - integrity sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg== +"@smithy/util-body-length-browser@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz#c4404277d22039872abdb80e7800f9a63f263862" + integrity sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ== dependencies: tslib "^2.6.2" -"@smithy/util-body-length-node@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz#79c8a5d18e010cce6c42d5cbaf6c1958523e6fec" - integrity sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA== +"@smithy/util-body-length-node@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz#f923ca530defb86a9ac3ca2d3066bcca7b304fbc" + integrity sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g== dependencies: tslib "^2.6.2" @@ -2409,95 +2240,95 @@ "@smithy/is-array-buffer" "^2.2.0" tslib "^2.6.2" -"@smithy/util-buffer-from@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz#7abd12c4991b546e7cee24d1e8b4bfaa35c68a9d" - integrity sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew== +"@smithy/util-buffer-from@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz#2c6b7857757dfd88f6cd2d36016179a40ccc913b" + integrity sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q== dependencies: - "@smithy/is-array-buffer" "^4.2.0" + "@smithy/is-array-buffer" "^4.2.2" tslib "^2.6.2" -"@smithy/util-config-provider@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz#2e4722937f8feda4dcb09672c59925a4e6286cfc" - integrity sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q== +"@smithy/util-config-provider@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz#52ebf9d8942838d18bc5fb1520de1e8699d7aad6" + integrity sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ== dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^4.3.32": - version "4.3.32" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.32.tgz#683496a0b38a3e5231a25ca7cce8028eb437f3b2" - integrity sha512-092sjYfFMQ/iaPH798LY/OJFBcYu0sSK34Oy9vdixhsU36zlZu8OcYjF3TD4e2ARupyK7xaxPXl+T0VIJTEkkg== +"@smithy/util-defaults-mode-browser@^4.3.38", "@smithy/util-defaults-mode-browser@^4.3.39": + version "4.3.39" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.39.tgz#9f354b9dcd0c0e17aa507e6fc13b4785af31cd97" + integrity sha512-ui7/Ho/+VHqS7Km2wBw4/Ab4RktoiSshgcgpJzC4keFPs6tLJS4IQwbeahxQS3E/w98uq6E1mirCH/id9xIXeQ== dependencies: - "@smithy/property-provider" "^4.2.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" + "@smithy/property-provider" "^4.2.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^4.2.35": - version "4.2.35" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.35.tgz#110575d6e85c282bb9b9283da886a8cf2fb68c6a" - integrity sha512-miz/ggz87M8VuM29y7jJZMYkn7+IErM5p5UgKIf8OtqVs/h2bXr1Bt3uTsREsI/4nK8a0PQERbAPsVPVNIsG7Q== - dependencies: - "@smithy/config-resolver" "^4.4.6" - "@smithy/credential-provider-imds" "^4.2.8" - "@smithy/node-config-provider" "^4.3.8" - "@smithy/property-provider" "^4.2.8" - "@smithy/smithy-client" "^4.11.5" - "@smithy/types" "^4.12.0" +"@smithy/util-defaults-mode-node@^4.2.41", "@smithy/util-defaults-mode-node@^4.2.42": + version "4.2.42" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.42.tgz#248a2d6a50b4480f3a2a4ce779409e90f0d16b96" + integrity sha512-QDA84CWNe8Akpj15ofLO+1N3Rfg8qa2K5uX0y6HnOp4AnRYRgWrKx/xzbYNbVF9ZsyJUYOfcoaN3y93wA/QJ2A== + dependencies: + "@smithy/config-resolver" "^4.4.10" + "@smithy/credential-provider-imds" "^4.2.11" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/property-provider" "^4.2.11" + "@smithy/smithy-client" "^4.12.3" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/util-endpoints@^3.2.8": - version "3.2.8" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz#5650bda2adac989ff2e562606088c5de3dcb1b36" - integrity sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw== +"@smithy/util-endpoints@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.3.2.tgz#a81ee98a2596248f6cdedc868d13cb6b9ea497b2" + integrity sha512-+4HFLpE5u29AbFlTdlKIT7jfOzZ8PDYZKTb3e+AgLz986OYwqTourQ5H+jg79/66DB69Un1+qKecLnkZdAsYcA== dependencies: - "@smithy/node-config-provider" "^4.3.8" - "@smithy/types" "^4.12.0" + "@smithy/node-config-provider" "^4.3.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/util-hex-encoding@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz#1c22ea3d1e2c3a81ff81c0a4f9c056a175068a7b" - integrity sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw== +"@smithy/util-hex-encoding@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz#4abf3335dd1eb884041d8589ca7628d81a6fd1d3" + integrity sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg== dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.2.8.tgz#1da33f29a74c7ebd9e584813cb7e12881600a80a" - integrity sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A== +"@smithy/util-middleware@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.2.11.tgz#d2a89893fc2dfd500de412c5f7c7961716855f4d" + integrity sha512-r3dtF9F+TpSZUxpOVVtPfk09Rlo4lT6ORBqEvX3IBT6SkQAdDSVKR5GcfmZbtl7WKhKnmb3wbDTQ6ibR2XHClw== dependencies: - "@smithy/types" "^4.12.0" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/util-retry@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.2.8.tgz#23f3f47baf0681233fd0c37b259e60e268c73b11" - integrity sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg== +"@smithy/util-retry@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.2.11.tgz#59fc5364488d4c755eec5afb4054623f852cf0e6" + integrity sha512-XSZULmL5x6aCTTii59wJqKsY1l3eMIAomRAccW7Tzh9r8s7T/7rdo03oektuH5jeYRlJMPcNP92EuRDvk9aXbw== dependencies: - "@smithy/service-error-classification" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/service-error-classification" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/util-stream@^4.5.12": - version "4.5.12" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.5.12.tgz#f8734a01dce2e51530231e6afc8910397d3e300a" - integrity sha512-D8tgkrmhAX/UNeCZbqbEO3uqyghUnEmmoO9YEvRuwxjlkKKUE7FOgCJnqpTlQPe9MApdWPky58mNQQHbnCzoNg== - dependencies: - "@smithy/fetch-http-handler" "^5.3.9" - "@smithy/node-http-handler" "^4.4.10" - "@smithy/types" "^4.12.0" - "@smithy/util-base64" "^4.3.0" - "@smithy/util-buffer-from" "^4.2.0" - "@smithy/util-hex-encoding" "^4.2.0" - "@smithy/util-utf8" "^4.2.0" +"@smithy/util-stream@^4.5.17": + version "4.5.17" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.5.17.tgz#53073153deb890d91fd14fd2055e6582b627b0fd" + integrity sha512-793BYZ4h2JAQkNHcEnyFxDTcZbm9bVybD0UV/LEWmZ5bkTms7JqjfrLMi2Qy0E5WFcCzLwCAPgcvcvxoeALbAQ== + dependencies: + "@smithy/fetch-http-handler" "^5.3.13" + "@smithy/node-http-handler" "^4.4.14" + "@smithy/types" "^4.13.0" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-buffer-from" "^4.2.2" + "@smithy/util-hex-encoding" "^4.2.2" + "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@smithy/util-uri-escape@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz#096a4cec537d108ac24a68a9c60bee73fc7e3a9e" - integrity sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA== +"@smithy/util-uri-escape@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz#48e40206e7fe9daefc8d44bb43a1ab17e76abf4a" + integrity sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw== dependencies: tslib "^2.6.2" @@ -2509,37 +2340,37 @@ "@smithy/util-buffer-from" "^2.2.0" tslib "^2.6.2" -"@smithy/util-utf8@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.0.tgz#8b19d1514f621c44a3a68151f3d43e51087fed9d" - integrity sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw== +"@smithy/util-utf8@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.2.tgz#21db686982e6f3393ac262e49143b42370130f13" + integrity sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw== dependencies: - "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-buffer-from" "^4.2.2" tslib "^2.6.2" -"@smithy/util-waiter@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.2.8.tgz#35d7bd8b2be7a2ebc12d8c38a0818c501b73e928" - integrity sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg== +"@smithy/util-waiter@^4.2.11": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.2.11.tgz#afe08ad75c9b51e35c83e3c11926855d886741f6" + integrity sha512-x7Rh2azQPs3XxbvCzcttRErKKvLnbZfqRf/gOjw2pb+ZscX88e5UkRPCB67bVnsFHxayvMvmePfKTqsRb+is1A== dependencies: - "@smithy/abort-controller" "^4.2.8" - "@smithy/types" "^4.12.0" + "@smithy/abort-controller" "^4.2.11" + "@smithy/types" "^4.13.0" tslib "^2.6.2" -"@smithy/uuid@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@smithy/uuid/-/uuid-1.1.0.tgz#9fd09d3f91375eab94f478858123387df1cda987" - integrity sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw== +"@smithy/uuid@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@smithy/uuid/-/uuid-1.1.2.tgz#b6e97c7158615e4a3c775e809c00d8c269b5a12e" + integrity sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g== dependencies: tslib "^2.6.2" "@stylistic/eslint-plugin@^5.7.1": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-5.8.0.tgz#e3986833ebb9476310eb9d03a7483c046b0f57ad" - integrity sha512-WNPVF/FfBAjyi3OA7gok8swRiImNLKI4dmV3iK/GC/0xSJR7eCzBFsw9hLZVgb1+MYNLy7aDsjohxN1hA/FIfQ== + version "5.10.0" + resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz#471bbd9f7a27ceaac4a217e7f5b3890855e5640c" + integrity sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/types" "^8.54.0" + "@typescript-eslint/types" "^8.56.0" eslint-visitor-keys "^4.2.1" espree "^10.4.0" estraverse "^5.3.0" @@ -2668,11 +2499,11 @@ "@types/node" "*" "@types/node@*": - version "25.2.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.2.tgz#0ddfe326c326afcb3422d32bfe5eb2938e1cb5db" - integrity sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ== + version "25.4.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.4.0.tgz#f25d8467984d6667cc4c1be1e2f79593834aaedb" + integrity sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw== dependencies: - undici-types "~7.16.0" + undici-types "~7.18.0" "@types/node@20.5.1": version "20.5.1" @@ -2687,16 +2518,16 @@ undici-types "~5.26.4" "@types/node@^20.4.8": - version "20.19.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.33.tgz#ac8364c623b72d43125f0e7dd722bbe968f0c65e" - integrity sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw== + version "20.19.37" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.37.tgz#b4fb4033408dd97becce63ec932c9ec57a9e2919" + integrity sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw== dependencies: undici-types "~6.21.0" "@types/node@^22.5.5": - version "22.19.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.10.tgz#a802d3cc6bdc190ec2b0cbf6958bf127c0ec2926" - integrity sha512-tF5VOugLS/EuDlTBijk0MqABfP8UxgYazTLo3uIn3b4yJgg26QRbVYJYsDtHrjdDUIRfP70+VfhTTc+CE1yskw== + version "22.19.15" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.15.tgz#6091d99fdf7c08cb57dc8b1345d407ba9a1df576" + integrity sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg== dependencies: undici-types "~6.21.0" @@ -2831,10 +2662,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/types@^8.54.0": - version "8.55.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.55.0.tgz#8449c5a7adac61184cac92dbf6315733569708c2" - integrity sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w== +"@typescript-eslint/types@^8.56.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.57.0.tgz#4fa5385ffd1cd161fa5b9dce93e0493d491b8dc6" + integrity sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg== "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" @@ -2929,16 +2760,16 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + version "8.3.5" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496" + integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw== dependencies: acorn "^8.11.0" acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== agent-base@6: version "6.0.2" @@ -2961,9 +2792,9 @@ aggregate-error@^3.0.0: indent-string "^4.0.0" ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + version "6.14.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" + integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -3011,7 +2842,7 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: +ansi-regex@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== @@ -3263,9 +3094,9 @@ base64url@^3.0.1: integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== baseline-browser-mapping@^2.9.0: - version "2.9.19" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz#3e508c43c46d961eb4d7d2e5b8d1dd0f9ee4f488" - integrity sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg== + version "2.10.0" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9" + integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== basic-ftp@^5.0.2: version "5.2.0" @@ -3290,7 +3121,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: +brace-expansion@^2.0.1, brace-expansion@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== @@ -3462,9 +3293,9 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001759: - version "1.0.30001769" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz#1ad91594fad7dc233777c2781879ab5409f7d9c2" - integrity sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg== + version "1.0.30001777" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz#028f21e4b2718d138b55e692583e6810ccf60691" + integrity sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ== capital-case@^1.0.4: version "1.0.4" @@ -4118,9 +3949,9 @@ ejs@^3.1.10: jake "^10.8.5" electron-to-chromium@^1.5.263: - version "1.5.286" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" - integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== + version "1.5.307" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz#09f8973100c39fb0d003b890393cd1d58932b1c8" + integrity sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg== emoji-regex-xs@^1.0.0: version "1.0.0" @@ -4721,11 +4552,12 @@ fast-xml-builder@^1.0.0: resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz#a485d7e8381f1db983cf006f849d1066e2935241" integrity sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ== -fast-xml-parser@5.3.6: - version "5.3.6" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.3.6.tgz#85a69117ca156b1b3c52e426495b6de266cb6a4b" - integrity sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA== +fast-xml-parser@5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz#0c81b8ecfb3021e5ad83aa3df904af19a05bc601" + integrity sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A== dependencies: + fast-xml-builder "^1.0.0" strnum "^2.1.2" fast-xml-parser@^5.3.6, fast-xml-parser@^5.4.2: @@ -4802,9 +4634,9 @@ file-entry-cache@^6.0.1: flat-cache "^3.0.4" filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + version "1.0.6" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.6.tgz#1e8870942a7c636c862f7c49b9394937b6a995a3" + integrity sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA== dependencies: minimatch "^5.0.1" @@ -4862,9 +4694,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + version "3.4.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.1.tgz#84ccd9579e76e9cc0d246c11d8be0beb019143e6" + integrity sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ== for-each@^0.3.3, for-each@^0.3.5: version "0.3.5" @@ -4911,9 +4743,9 @@ fromentries@^1.2.0: integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== fs-extra@^11.0.0: - version "11.3.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.3.tgz#a27da23b72524e81ac6c3815cc0179b8c74c59ee" - integrity sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg== + version "11.3.4" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.4.tgz#ab6934eca8bcf6f7f6b82742e33591f86301d6fc" + integrity sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -4987,9 +4819,9 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-east-asian-width@^1.0.0, get-east-asian-width@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz#9bc4caa131702b4b61729cb7e42735bc550c9ee6" - integrity sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q== + version "1.5.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz#ce7008fe345edcf5497a6f557cfa54bc318a9ce7" + integrity sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA== get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" @@ -5095,7 +4927,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1: +glob-to-regex.js@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== @@ -5162,9 +4994,9 @@ globals@^13.19.0: type-fest "^0.20.2" globals@^17.3.0: - version "17.3.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-17.3.0.tgz#8b96544c2fa91afada02747cc9731c002a96f3b9" - integrity sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw== + version "17.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-17.4.0.tgz#33d7d297ed1536b388a0e2f4bcd0ff19c8ff91b5" + integrity sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw== globalthis@^1.0.4: version "1.0.4" @@ -6451,9 +6283,9 @@ lru-cache@^10.0.1, lru-cache@^10.2.0: integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^11.0.0: - version "11.2.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.5.tgz#6811ae01652ae5d749948cdd80bcc22218c6744f" - integrity sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw== + version "11.2.6" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.6.tgz#356bf8a29e88a7a2945507b31f6429a65a192c58" + integrity sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ== lru-cache@^5.1.1: version "5.1.1" @@ -6509,9 +6341,9 @@ map-obj@^4.0.0: integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== markdown-it@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + version "14.1.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.1.tgz#856f90b66fc39ae70affd25c1b18b581d7deee1f" + integrity sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA== dependencies: argparse "^2.0.1" entities "^4.4.0" @@ -6555,19 +6387,11 @@ mdurl@^2.0.0: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== -memfs@^4.30.1: - version "4.56.10" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.56.10.tgz#eaf2f6556db10f91f1e9ad9f1274fd988c646202" - integrity sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w== - dependencies: - "@jsonjoy.com/fs-core" "4.56.10" - "@jsonjoy.com/fs-fsa" "4.56.10" - "@jsonjoy.com/fs-node" "4.56.10" - "@jsonjoy.com/fs-node-builtins" "4.56.10" - "@jsonjoy.com/fs-node-to-fsa" "4.56.10" - "@jsonjoy.com/fs-node-utils" "4.56.10" - "@jsonjoy.com/fs-print" "4.56.10" - "@jsonjoy.com/fs-snapshot" "4.56.10" +memfs@4.38.1: + version "4.38.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.38.1.tgz#43cc07ee74dc321dbd0cba778db6cd94a4648895" + integrity sha512-exfrOkkU3m0EpbQ0iQJP93HUbkprnIBU7IUnobSNAzHkBUzsklLwENGLEm8ZwJmMuLoFEfv1pYQ54wSpkay4kQ== + dependencies: "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -6709,25 +6533,25 @@ minimatch@^10.1.1, minimatch@^10.2.4: brace-expansion "^5.0.2" minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1, minimatch@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + version "5.1.9" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.9.tgz#1293ef15db0098b394540e8f9f744f9fda8dee4b" + integrity sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw== dependencies: brace-expansion "^2.0.1" minimatch@^9.0.4, minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + version "9.0.9" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" + integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg== dependencies: - brace-expansion "^2.0.1" + brace-expansion "^2.0.2" minimist-options@4.1.0: version "4.1.0" @@ -6744,9 +6568,9 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + version "7.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== mocha@^10.7.0: version "10.8.2" @@ -6861,6 +6685,16 @@ nock@^13.5.6: json-stringify-safe "^5.0.1" propagate "^2.0.0" +node-exports-info@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13" + integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw== + dependencies: + array.prototype.flatmap "^1.3.3" + es-errors "^1.3.0" + object.entries "^1.1.9" + semver "^6.3.1" + node-fetch@^2.6.1, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -6876,9 +6710,9 @@ node-preload@^0.2.1: process-on-spawn "^1.0.0" node-releases@^2.0.27: - version "2.0.27" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" - integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== + version "2.0.36" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" + integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== normalize-package-data@^2.5.0: version "2.5.0" @@ -7036,16 +6870,16 @@ object.values@^1.1.6, object.values@^1.2.1: es-object-atoms "^1.0.0" oclif@^4.22.80: - version "4.22.80" - resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.22.80.tgz#bec03ae2a4fdaf80708f96e71cd0269d32984dff" - integrity sha512-IC83xA28dbSjsBPWPnXda0NL4W52/d57tjICUVtCLddI6a9OfPpBaJkgaQjvkp1fyu0/fzvLYwhUTfI9fFe7tg== + version "4.22.87" + resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.22.87.tgz#5ff5b32602f4a1aac892065f0ebdc4f890469f65" + integrity sha512-Qm+z93+fn4HSuQnbMZj6Vimje2U+LGJ4YDKLyaWL7JYq4DX17s2DAEPhbgQyC+baLvf9cC4KYXKWbVe4hnNyQA== dependencies: - "@aws-sdk/client-cloudfront" "^3.990.0" - "@aws-sdk/client-s3" "^3.995.0" + "@aws-sdk/client-cloudfront" "3.1004.0" + "@aws-sdk/client-s3" "3.1004.0" "@inquirer/confirm" "^3.1.22" "@inquirer/input" "^2.2.4" "@inquirer/select" "^2.5.0" - "@oclif/core" "^4.8.0" + "@oclif/core" "4.8.3" "@oclif/plugin-help" "^6.2.37" "@oclif/plugin-not-found" "^3.2.74" "@oclif/plugin-warn-if-update-available" "^3.1.55" @@ -7289,9 +7123,9 @@ path-scurry@^1.11.1: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.1.tgz#4b6572376cfd8b811fca9cd1f5c24b3cbac0fe10" - integrity sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" + integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== dependencies: lru-cache "^11.0.0" minipass "^7.1.2" @@ -7515,9 +7349,9 @@ proxy-from-env@^1.1.0: integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pump@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" - integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -7777,11 +7611,14 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.22.4: supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + version "2.0.0-next.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.6.tgz#b3961812be69ace7b3bc35d5bf259434681294af" + integrity sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA== dependencies: - is-core-module "^2.13.0" + es-errors "^1.3.0" + is-core-module "^2.16.1" + node-exports-info "^1.6.0" + object-keys "^1.1.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -7897,9 +7734,9 @@ safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@>=0.6.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b" - integrity sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw== + version "1.5.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.5.0.tgz#b5549b671069b7aa392df55ec7574cf411179eb8" + integrity sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA== scheduler@^0.23.0, scheduler@^0.23.2: version "0.23.2" @@ -8168,9 +8005,9 @@ socks@^2.8.3: smart-buffer "^4.2.0" sonic-boom@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" - integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== + version "4.2.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030" + integrity sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q== dependencies: atomic-sleep "^1.0.0" @@ -8258,9 +8095,9 @@ spdx-expression-parse@^4.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.22" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz#abf5a08a6f5d7279559b669f47f0a43e8f3464ef" - integrity sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ== + version "3.0.23" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz#b069e687b1291a32f126893ed76a27a745ee2133" + integrity sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw== split2@^3.0.0, split2@^3.2.2: version "3.2.2" @@ -8431,11 +8268,11 @@ strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: ansi-regex "^5.0.1" strip-ansi@^7.0.1, strip-ansi@^7.1.0, strip-ansi@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" - integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" + integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== dependencies: - ansi-regex "^6.0.1" + ansi-regex "^6.2.2" strip-bom@^3.0.0: version "3.0.0" @@ -8465,9 +8302,9 @@ strip-json-comments@^3.1.1: integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strnum@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.1.2.tgz#a5e00ba66ab25f9cafa3726b567ce7a49170937a" - integrity sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.0.tgz#8b582b637e4621f62ff714493e0ce30846f903a6" + integrity sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg== supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" @@ -8560,17 +8397,17 @@ tinyglobby@^0.2.14, tinyglobby@^0.2.9: fdir "^6.5.0" picomatch "^4.0.3" -tldts-core@^7.0.23: - version "7.0.23" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.23.tgz#47bf18282a44641304a399d247703413b5d3e309" - integrity sha512-0g9vrtDQLrNIiCj22HSe9d4mLVG3g5ph5DZ8zCKBr4OtrspmNB6ss7hVyzArAeE88ceZocIEGkyW1Ime7fxPtQ== +tldts-core@^7.0.25: + version "7.0.25" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.25.tgz#eaee57facdfb5528383d961f5586d49784519de5" + integrity sha512-ZjCZK0rppSBu7rjHYDYsEaMOIbbT+nWF57hKkv4IUmZWBNrBWBOjIElc0mKRgLM8bm7x/BBlof6t2gi/Oq/Asw== tldts@^7.0.5: - version "7.0.23" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.23.tgz#444f0f0720fa777839a23ea665e04f61ee57217a" - integrity sha512-ASdhgQIBSay0R/eXggAkQ53G4nTJqTXqC2kbaBbdDwM7SkjyZyO0OaaN1/FH7U/yCeqOHDwFO5j8+Os/IS1dXw== + version "7.0.25" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.25.tgz#e9034876e09b2ad92db547a9307ae6fa65400f8d" + integrity sha512-keinCnPbwXEUG3ilrWQZU+CqcTTzHq9m2HhoUP2l7Xmi8l1LuijAXLpAJ5zRW+ifKTNscs4NdCkfkDCBYm352w== dependencies: - tldts-core "^7.0.23" + tldts-core "^7.0.25" to-regex-range@^5.0.1: version "5.0.1" @@ -8830,10 +8667,10 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -undici-types@~7.16.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" - integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== +undici-types@~7.18.0: + version "7.18.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== unicorn-magic@^0.3.0: version "0.3.0" From da30ff2ab5ff59d777c6d70732e22f0fd9ba7975 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 10 Mar 2026 11:51:01 -0600 Subject: [PATCH 15/25] chore: hide unactivatable/deactivatble options, alphabetize --- package.json | 2 +- src/agentActivation.ts | 30 +++++------ test/agentActivation.test.ts | 98 +++++++++++++++++++++++++----------- yarn.lock | 14 +++--- 4 files changed, 91 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index d7db6847..975828be 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@inquirer/prompts": "^7.10.1", "@oclif/core": "^4", "@oclif/multi-stage-output": "^0.8.29", - "@salesforce/agents": "^0.24.1", + "@salesforce/agents": "^0.24.2", "@salesforce/core": "^8.26.3", "@salesforce/kit": "^3.2.4", "@salesforce/sf-plugins-core": "^12.2.6", diff --git a/src/agentActivation.ts b/src/agentActivation.ts index f45d9d98..3a3019d1 100644 --- a/src/agentActivation.ts +++ b/src/agentActivation.ts @@ -50,28 +50,24 @@ export const validateAgent = (agent: BotMetadata): boolean => { }; export const getAgentChoices = (agents: BotMetadata[], status: 'Active' | 'Inactive'): Array> => - agents.map((agent) => { - let disabled: string | boolean = false; - - // For deactivate (status='Inactive'), check if any version is Active (can be deactivated) - // For activate (status='Active'), check if any version is Inactive (can be activated) - const hasAvailableVersion = agent.BotVersions.records.some((version) => version.Status !== status); - if (!hasAvailableVersion) { - disabled = `(Already ${status})`; - } - if (agentIsUnsupported(agent.DeveloperName)) { - disabled = '(Not Supported)'; - } - - return { + agents + .filter((agent) => { + // Only one version can be active at a time + // For activate (status='Active'): show agents that don't have an active version (all versions are inactive) + // For deactivate (status='Inactive'): show agents that have an active version + const hasActiveVersion = agent.BotVersions.records.some((version) => version.Status === 'Active'); + const canPerformOperation = status === 'Active' ? !hasActiveVersion : hasActiveVersion; + // Filter out agents that can't perform the operation or are unsupported + return canPerformOperation && !agentIsUnsupported(agent.DeveloperName); + }) + .sort((a, b) => a.DeveloperName.localeCompare(b.DeveloperName)) + .map((agent) => ({ name: agent.DeveloperName, value: { Id: agent.Id, DeveloperName: agent.DeveloperName, }, - disabled, - }; - }); + })); export const getVersionChoices = ( versions: BotVersionMetadata[], diff --git a/test/agentActivation.test.ts b/test/agentActivation.test.ts index 05b470cf..9d28c2ad 100644 --- a/test/agentActivation.test.ts +++ b/test/agentActivation.test.ts @@ -91,7 +91,7 @@ describe('agentActivation', () => { }); describe('getAgentChoices', () => { - it('should enable agent when ANY version is available for activation', () => { + it('should filter out agent when any version is already active (for activation)', () => { const agents: BotMetadata[] = [ { Id: 'agent1', @@ -99,7 +99,7 @@ describe('agentActivation', () => { BotVersions: { records: [ { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, - { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, // Can be activated + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, { Status: 'Inactive', VersionNumber: 3 } as BotVersionMetadata, ], }, @@ -108,12 +108,10 @@ describe('agentActivation', () => { const choices = getAgentChoices(agents, 'Active'); - expect(choices).to.have.lengthOf(1); - expect(choices[0].disabled).to.equal(false); // Has inactive versions that can be activated - expect(choices[0].value.DeveloperName).to.equal('Test_Agent'); + expect(choices).to.have.lengthOf(0); // Filtered out because it already has an active version }); - it('should enable agent when ANY version is available for deactivation', () => { + it('should include agent when it has an active version (for deactivation)', () => { const agents: BotMetadata[] = [ { Id: 'agent1', @@ -131,19 +129,19 @@ describe('agentActivation', () => { const choices = getAgentChoices(agents, 'Inactive'); expect(choices).to.have.lengthOf(1); - expect(choices[0].disabled).to.equal(false); // Has active version that can be deactivated + expect(choices[0].value.DeveloperName).to.equal('Test_Agent'); }); - it('should disable agent when ALL versions are already in target state', () => { + it('should include agent when all versions are inactive (for activation)', () => { const agents: BotMetadata[] = [ { Id: 'agent1', DeveloperName: 'Test_Agent', BotVersions: { records: [ - { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, - { Status: 'Active', VersionNumber: 2 } as BotVersionMetadata, - { Status: 'Active', VersionNumber: 3 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 3 } as BotVersionMetadata, ], }, } as BotMetadata, @@ -151,11 +149,11 @@ describe('agentActivation', () => { const choices = getAgentChoices(agents, 'Active'); - expect(choices).to.have.lengthOf(1); - expect(choices[0].disabled).to.equal('(Already Active)'); // All versions are already active + expect(choices).to.have.lengthOf(1); // All versions are inactive, so can activate one + expect(choices[0].value.DeveloperName).to.equal('Test_Agent'); }); - it('should disable agent when ALL versions are inactive for deactivation', () => { + it('should filter out agent when all versions are inactive (for deactivation)', () => { const agents: BotMetadata[] = [ { Id: 'agent1', @@ -171,11 +169,10 @@ describe('agentActivation', () => { const choices = getAgentChoices(agents, 'Inactive'); - expect(choices).to.have.lengthOf(1); - expect(choices[0].disabled).to.equal('(Already Inactive)'); // All versions are already inactive + expect(choices).to.have.lengthOf(0); // All versions are already inactive, nothing to deactivate }); - it('should disable unsupported agents', () => { + it('should filter out unsupported agents', () => { const agents: BotMetadata[] = [ { Id: 'agent1', @@ -188,25 +185,24 @@ describe('agentActivation', () => { const choices = getAgentChoices(agents, 'Active'); - expect(choices).to.have.lengthOf(1); - expect(choices[0].disabled).to.equal('(Not Supported)'); + expect(choices).to.have.lengthOf(0); // Unsupported agents are filtered out }); - it('should handle multiple agents with mixed states', () => { + it('should filter out unavailable agents and sort remaining alphabetically', () => { const agents: BotMetadata[] = [ { Id: 'agent1', - DeveloperName: 'Agent_All_Active', + DeveloperName: 'Zebra_Agent', BotVersions: { records: [ { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, - { Status: 'Active', VersionNumber: 2 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, ], }, } as BotMetadata, { Id: 'agent2', - DeveloperName: 'Agent_Mixed', + DeveloperName: 'Beta_Agent', BotVersions: { records: [ { Status: 'Active', VersionNumber: 1 } as BotVersionMetadata, @@ -214,15 +210,61 @@ describe('agentActivation', () => { ], }, } as BotMetadata, + { + Id: 'agent3', + DeveloperName: 'Alpha_Agent', + BotVersions: { + records: [ + { Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, + ], + }, + } as BotMetadata, ]; const choices = getAgentChoices(agents, 'Active'); - expect(choices).to.have.lengthOf(2); - expect(choices[0].value.DeveloperName).to.equal('Agent_All_Active'); - expect(choices[0].disabled).to.equal('(Already Active)'); - expect(choices[1].value.DeveloperName).to.equal('Agent_Mixed'); - expect(choices[1].disabled).to.equal(false); + expect(choices).to.have.lengthOf(1); // Only Alpha_Agent has no active version (all inactive) + expect(choices[0].value.DeveloperName).to.equal('Alpha_Agent'); + }); + + it('should sort multiple available agents alphabetically', () => { + const agents: BotMetadata[] = [ + { + Id: 'agent1', + DeveloperName: 'Zebra_Agent', + BotVersions: { + records: [ + { Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + { + Id: 'agent2', + DeveloperName: 'Alpha_Agent', + BotVersions: { + records: [ + { Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata, + { Status: 'Inactive', VersionNumber: 2 } as BotVersionMetadata, + ], + }, + } as BotMetadata, + { + Id: 'agent3', + DeveloperName: 'Beta_Agent', + BotVersions: { + records: [{ Status: 'Inactive', VersionNumber: 1 } as BotVersionMetadata], + }, + } as BotMetadata, + ]; + + const choices = getAgentChoices(agents, 'Active'); + + expect(choices).to.have.lengthOf(3); + expect(choices[0].value.DeveloperName).to.equal('Alpha_Agent'); + expect(choices[1].value.DeveloperName).to.equal('Beta_Agent'); + expect(choices[2].value.DeveloperName).to.equal('Zebra_Agent'); }); }); }); diff --git a/yarn.lock b/yarn.lock index b68fdb58..5ef712e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1731,14 +1731,14 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@salesforce/agents@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-0.24.1.tgz#841e34c7cc2ea6d58a14de67725116dbea5e3180" - integrity sha512-eU9WRbUwtCsKsv2PhCW8ZXIG2sKS4FFhvKlTFeoCKdEj/rleNseF0Rwn6MI3sIsrP9HfZvhAkh2vbvoPRK/8rQ== +"@salesforce/agents@^0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-0.24.2.tgz#e67a36bf07c6a4d29231f88dd1cf562b125bb768" + integrity sha512-apYmYxeS3bnqUl32BvqZX2ALu50GUfdLw4iyJjR2jGm2q/kVTSeb/UBq8FhJBCnsPocnhu+Hmmb60bU0NCLwbw== dependencies: - "@salesforce/core" "^8.26.2" + "@salesforce/core" "^8.26.3" "@salesforce/kit" "^3.2.4" - "@salesforce/source-deploy-retrieve" "^12.31.12" + "@salesforce/source-deploy-retrieve" "^12.31.14" "@salesforce/types" "^1.6.0" fast-xml-parser "^5.3.6" nock "^13.5.6" @@ -1882,7 +1882,7 @@ cli-progress "^3.12.0" terminal-link "^3.0.0" -"@salesforce/source-deploy-retrieve@^12.31.12", "@salesforce/source-deploy-retrieve@^12.31.14": +"@salesforce/source-deploy-retrieve@^12.31.14": version "12.31.14" resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.31.14.tgz#6ed0a2fdb9a14d60ed64a2dd8fdc18c16af143a6" integrity sha512-tLnTCG6t+d+MN8pGijF6nL4lsqE37FaBINZZvyd+IDAw+7eWffFqIXK/nNyQ1ZARTNeHOs5K/NlNXNBp5+x/YQ== From f8d2555a48f96e354bf1dd52bde5c09bed96140f Mon Sep 17 00:00:00 2001 From: Esteban Romero Date: Tue, 10 Mar 2026 17:09:16 -0300 Subject: [PATCH 16/25] chore: dedup localActions --- src/commands/agent/generate/template.ts | 42 ++++++++++++++++++++----- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/src/commands/agent/generate/template.ts b/src/commands/agent/generate/template.ts index dd82456a..adff29b4 100644 --- a/src/commands/agent/generate/template.ts +++ b/src/commands/agent/generate/template.ts @@ -38,6 +38,7 @@ export type GenAiPlannerBundleExt = { localActionLinks?: GenAiPlannerFunctionDef[]; localTopicLinks: GenAiPlannerFunctionDef[]; localTopics: GenAiPlugin[]; + plannerActions?: GenAiFunction[]; }; }; @@ -244,9 +245,18 @@ const getLocalAssets = ( ]) ); } - const localActions = localTopics.flatMap((plugin) => + const actionsFromPlugins = localTopics.flatMap((plugin) => Array.isArray(plugin.localActions) ? plugin.localActions : plugin.localActions ? [plugin.localActions] : [] ); + const plannerBundle = genAiPlannerBundleMetaJson.GenAiPlannerBundle; + const plannerActions = Array.isArray(plannerBundle.plannerActions) + ? plannerBundle.plannerActions + : plannerBundle.plannerActions + ? [plannerBundle.plannerActions] + : []; + + // localActions are the actions from the plugins and the plannerActions + const localActions = [...actionsFromPlugins, ...plannerActions]; const localActionsWithoutSource = localActions.filter((action) => !action.source); if (localActionsWithoutSource.length > 0) { throw new SfError( @@ -275,14 +285,19 @@ const replaceReferencesToGlobalAssets = ( })); plannerBundle.localTopicLinks = []; - // replace localActionLinks with global genAiFunctions - plannerBundle.genAiFunctions = localActions.map((action) => ({ - genAiFunctionName: action.source!, - })); + // replace localActionLinks with global genAiFunctions (dedupe by genAiFunctionName) + const seenFunctions = new Set(); + plannerBundle.genAiFunctions = localActions + .map((action) => ({ genAiFunctionName: action.source! })) + .filter((f) => { + if (seenFunctions.has(f.genAiFunctionName)) return false; + seenFunctions.add(f.genAiFunctionName); + return true; + }); plannerBundle.localActionLinks = []; // replace references in attributeMappings and ruleExpressionAssignments - const localToGlobalAssets = buildLocalToGlobalAssetMap(localTopics); + const localToGlobalAssets = buildLocalToGlobalAssetMap(localTopics, plannerBundle); for (const mapping of plannerBundle.attributeMappings ?? []) { mapping.attributeName = replaceLocalRefsWithGlobal(mapping.attributeName, localToGlobalAssets); } @@ -292,15 +307,20 @@ const replaceReferencesToGlobalAssets = ( // delete local assets from the GenAiPlannerBundle plannerBundle.localTopics = []; + plannerBundle.plannerActions = []; }; /** * Builds a map from local asset names to their global (source) asset names. * * @param localTopics - The local topics of the GenAiPlannerBundle + * @param plannerBundle - The GenAiPlannerBundle (for plannerActions) * @returns A map of local asset name → global asset name */ -const buildLocalToGlobalAssetMap = (localTopics: GenAiPlugin[]): Map => { +const buildLocalToGlobalAssetMap = ( + localTopics: GenAiPlugin[], + plannerBundle: GenAiPlannerBundleExt['GenAiPlannerBundle'] +): Map => { const map = new Map(); for (const topic of localTopics) { map.set(topic.fullName!, topic.source!); @@ -313,6 +333,14 @@ const buildLocalToGlobalAssetMap = (localTopics: GenAiPlugin[]): Map Date: Tue, 10 Mar 2026 23:26:05 +0100 Subject: [PATCH 17/25] fix: sort version choices descending so latest appears first --- src/agentActivation.ts | 24 +++++++++++++----------- test/agentActivation.test.ts | 5 +++-- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/agentActivation.ts b/src/agentActivation.ts index 3a3019d1..08e01d2b 100644 --- a/src/agentActivation.ts +++ b/src/agentActivation.ts @@ -73,17 +73,19 @@ export const getVersionChoices = ( versions: BotVersionMetadata[], status: 'Active' | 'Inactive' ): Array> => - versions.map((version) => { - const isTargetStatus = version.Status === status; - return { - name: `Version ${version.VersionNumber}`, - value: { - version: version.VersionNumber, - status: version.Status, - }, - disabled: isTargetStatus ? `(Already ${status})` : false, - }; - }); + versions + .sort((a, b) => b.VersionNumber - a.VersionNumber) + .map((version) => { + const isTargetStatus = version.Status === status; + return { + name: `Version ${version.VersionNumber}`, + value: { + version: version.VersionNumber, + status: version.Status, + }, + disabled: isTargetStatus ? `(Already ${status})` : false, + }; + }); export const getAgentForActivation = async (config: { targetOrg: Org; diff --git a/test/agentActivation.test.ts b/test/agentActivation.test.ts index 9d28c2ad..3eb897fa 100644 --- a/test/agentActivation.test.ts +++ b/test/agentActivation.test.ts @@ -45,9 +45,10 @@ describe('agentActivation', () => { const choices = getVersionChoices(versions, 'Inactive'); expect(choices).to.have.lengthOf(3); - expect(choices[0].disabled).to.equal(false); // Version 1 is Active, can be deactivated + // Sorted descending: v3, v2, v1 + expect(choices[0].disabled).to.equal('(Already Inactive)'); // Version 3 is already Inactive expect(choices[1].disabled).to.equal('(Already Inactive)'); // Version 2 is already Inactive - expect(choices[2].disabled).to.equal('(Already Inactive)'); // Version 3 is already Inactive + expect(choices[2].disabled).to.equal(false); // Version 1 is Active, can be deactivated }); it('should include version numbers in choices', () => { From 7dea3e488162f2ae90ad68944f900524ee871f17 Mon Sep 17 00:00:00 2001 From: Marcelino Llano Date: Tue, 10 Mar 2026 23:32:05 +0100 Subject: [PATCH 18/25] fix: add guard for empty available versions and unit tests --- messages/agent.activation.md | 4 ++ src/agentActivation.ts | 6 ++ test/agentActivation.test.ts | 129 ++++++++++++++++++++++++++++++++++- 3 files changed, 137 insertions(+), 2 deletions(-) diff --git a/messages/agent.activation.md b/messages/agent.activation.md index 96b45a63..46ff6632 100644 --- a/messages/agent.activation.md +++ b/messages/agent.activation.md @@ -13,3 +13,7 @@ Agent %s has been deleted and can't be activated. # error.agentIsDefault Agent %s is the default Agentforce agent in your org and you can't change its activation status. + +# error.noVersionsAvailable + +No versions available to %s. All versions are already in the target state. diff --git a/src/agentActivation.ts b/src/agentActivation.ts index 08e01d2b..8fc68bca 100644 --- a/src/agentActivation.ts +++ b/src/agentActivation.ts @@ -164,6 +164,12 @@ export const getVersionForActivation = async (config: { return { version: availableChoices[0].value.version }; } + // If no versions are available, throw an error + if (availableChoices.length === 0) { + const action = status === 'Active' ? 'activate' : 'deactivate'; + throw messages.createError('error.noVersionsAvailable', [action]); + } + // If JSON mode is enabled, automatically select the latest available version if (jsonEnabled) { // Find the latest (highest version number) available version diff --git a/test/agentActivation.test.ts b/test/agentActivation.test.ts index 3eb897fa..dd244a56 100644 --- a/test/agentActivation.test.ts +++ b/test/agentActivation.test.ts @@ -15,8 +15,9 @@ */ import { expect } from 'chai'; -import { type BotMetadata, type BotVersionMetadata } from '@salesforce/agents'; -import { getAgentChoices, getVersionChoices } from '../src/agentActivation.js'; +import sinon from 'sinon'; +import { type BotMetadata, type BotVersionMetadata, type ProductionAgent } from '@salesforce/agents'; +import { getAgentChoices, getVersionChoices, getVersionForActivation } from '../src/agentActivation.js'; describe('agentActivation', () => { describe('getVersionChoices', () => { @@ -268,4 +269,128 @@ describe('agentActivation', () => { expect(choices[2].value.DeveloperName).to.equal('Zebra_Agent'); }); }); + + describe('getVersionForActivation', () => { + let mockAgent: sinon.SinonStubbedInstance; + + beforeEach(() => { + mockAgent = { + getBotMetadata: sinon.stub(), + } as unknown as sinon.SinonStubbedInstance; + }); + + afterEach(() => { + sinon.restore(); + }); + + it('should return version flag when provided', async () => { + const result = await getVersionForActivation({ + agent: mockAgent as unknown as ProductionAgent, + status: 'Active', + versionFlag: 5, + }); + + expect(result.version).to.equal(5); + expect(result.warning).to.be.undefined; + expect(mockAgent.getBotMetadata.called).to.be.false; + }); + + it('should auto-select when only one version exists', async () => { + mockAgent.getBotMetadata.resolves({ + BotVersions: { + records: [{ VersionNumber: 3, Status: 'Inactive', IsDeleted: false } as BotVersionMetadata], + }, + } as BotMetadata); + + const result = await getVersionForActivation({ + agent: mockAgent as unknown as ProductionAgent, + status: 'Active', + }); + + expect(result.version).to.equal(3); + expect(result.warning).to.be.undefined; + }); + + it('should auto-select when only one available choice exists', async () => { + mockAgent.getBotMetadata.resolves({ + BotVersions: { + records: [ + { VersionNumber: 1, Status: 'Active', IsDeleted: false } as BotVersionMetadata, + { VersionNumber: 2, Status: 'Inactive', IsDeleted: false } as BotVersionMetadata, + ], + }, + } as BotMetadata); + + const result = await getVersionForActivation({ + agent: mockAgent as unknown as ProductionAgent, + status: 'Active', + }); + + // Only version 2 is available (inactive), version 1 is already active + expect(result.version).to.equal(2); + expect(result.warning).to.be.undefined; + }); + + it('should auto-select latest version in JSON mode', async () => { + mockAgent.getBotMetadata.resolves({ + BotVersions: { + records: [ + { VersionNumber: 1, Status: 'Inactive', IsDeleted: false } as BotVersionMetadata, + { VersionNumber: 2, Status: 'Inactive', IsDeleted: false } as BotVersionMetadata, + { VersionNumber: 3, Status: 'Inactive', IsDeleted: false } as BotVersionMetadata, + ], + }, + } as BotMetadata); + + const result = await getVersionForActivation({ + agent: mockAgent as unknown as ProductionAgent, + status: 'Active', + jsonEnabled: true, + }); + + expect(result.version).to.equal(3); + expect(result.warning).to.include('automatically selected latest available version: 3'); + }); + + it('should filter out deleted versions', async () => { + mockAgent.getBotMetadata.resolves({ + BotVersions: { + records: [ + { VersionNumber: 1, Status: 'Inactive', IsDeleted: true } as BotVersionMetadata, + { VersionNumber: 2, Status: 'Inactive', IsDeleted: false } as BotVersionMetadata, + ], + }, + } as BotMetadata); + + const result = await getVersionForActivation({ + agent: mockAgent as unknown as ProductionAgent, + status: 'Active', + }); + + // Only version 2 should be considered (version 1 is deleted) + expect(result.version).to.equal(2); + }); + + it('should throw error when no versions are available', async () => { + mockAgent.getBotMetadata.resolves({ + BotVersions: { + records: [ + { VersionNumber: 1, Status: 'Active', IsDeleted: false } as BotVersionMetadata, + { VersionNumber: 2, Status: 'Active', IsDeleted: false } as BotVersionMetadata, + ], + }, + } as BotMetadata); + + try { + await getVersionForActivation({ + agent: mockAgent as unknown as ProductionAgent, + status: 'Active', + jsonEnabled: true, + }); + expect.fail('Expected error to be thrown'); + } catch (error) { + expect((error as Error).message).to.include('No versions available to activate'); + } + }); + }); }); From 1f1d511f8e5d7bc66669bbc1d4f97662cac4144b Mon Sep 17 00:00:00 2001 From: Esteban Romero Date: Wed, 11 Mar 2026 10:31:33 -0300 Subject: [PATCH 19/25] chore: handle empty local actions --- src/commands/agent/generate/template.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/commands/agent/generate/template.ts b/src/commands/agent/generate/template.ts index adff29b4..6e47abe5 100644 --- a/src/commands/agent/generate/template.ts +++ b/src/commands/agent/generate/template.ts @@ -37,7 +37,7 @@ export type GenAiPlannerBundleExt = { botTemplate?: string; localActionLinks?: GenAiPlannerFunctionDef[]; localTopicLinks: GenAiPlannerFunctionDef[]; - localTopics: GenAiPlugin[]; + localTopics?: GenAiPlugin[]; plannerActions?: GenAiFunction[]; }; }; @@ -236,7 +236,8 @@ const jsonToXml = (filename: string, json: T, builder: XMLBuilder): void => { const getLocalAssets = ( genAiPlannerBundleMetaJson: GenAiPlannerBundleExt ): { localTopics: GenAiPlugin[]; localActions: GenAiFunction[] } => { - const localTopics = genAiPlannerBundleMetaJson.GenAiPlannerBundle.localTopics; + const rawLocalTopics = genAiPlannerBundleMetaJson.GenAiPlannerBundle.localTopics; + const localTopics = Array.isArray(rawLocalTopics) ? rawLocalTopics : rawLocalTopics ? [rawLocalTopics] : []; const localTopicsWithoutSource = localTopics.filter((topic) => !topic.source); if (localTopicsWithoutSource.length > 0) { throw new SfError( @@ -257,13 +258,15 @@ const getLocalAssets = ( // localActions are the actions from the plugins and the plannerActions const localActions = [...actionsFromPlugins, ...plannerActions]; - const localActionsWithoutSource = localActions.filter((action) => !action.source); - if (localActionsWithoutSource.length > 0) { - throw new SfError( - messages.getMessage('error.local-actions-without-source', [ - localActionsWithoutSource.map((action) => action.developerName ?? action.fullName).join(', '), - ]) - ); + if (localActions.length > 0) { + const localActionsWithoutSource = localActions.filter((action) => !action.source); + if (localActionsWithoutSource.length > 0) { + throw new SfError( + messages.getMessage('error.local-actions-without-source', [ + localActionsWithoutSource.map((action) => action.developerName ?? action.fullName).join(', '), + ]) + ); + } } return { localTopics, localActions }; }; From f9c8cf1acb0a39af87a7a1f8186ca5df6970c3a1 Mon Sep 17 00:00:00 2001 From: Esteban Romero Date: Wed, 11 Mar 2026 10:35:14 -0300 Subject: [PATCH 20/25] test: update NUT to test local assets logic --- ...ice_Agent_v1_Template.botTemplate-meta.xml | 282 ++++ ...rvice_Agent_v1_Template.genAiPlannerBundle | 225 +++ .../Agentforce_Service_Agent.bot-meta.xml | 228 +++ .../v1.botVersion-meta.xml | 121 ++ ...gentforce_Service_Agent.genAiPlannerBundle | 1217 +++++++++++++++++ .../input/schema.json | 40 + .../output/schema.json | 25 + .../input/schema.json | 15 + .../output/schema.json | 15 + .../input/schema.json | 57 + .../output/schema.json | 18 + .../input/schema.json | 25 + .../output/schema.json | 15 + .../input/schema.json | 40 + .../output/schema.json | 25 + .../input/schema.json | 36 + .../output/schema.json | 18 + .../input/schema.json | 22 + .../output/schema.json | 15 + .../input/schema.json | 15 + .../output/schema.json | 22 + .../input/schema.json | 40 + .../output/schema.json | 25 + .../input/schema.json | 15 + .../output/schema.json | 15 + .../input/schema.json | 25 + .../output/schema.json | 15 + .../input/schema.json | 15 + .../output/schema.json | 15 + .../input/schema.json | 18 + .../output/schema.json | 15 + .../input/schema.json | 15 + .../output/schema.json | 18 + .../input/schema.json | 40 + .../output/schema.json | 25 + .../input/schema.json | 40 + .../output/schema.json | 25 + .../input/schema.json | 15 + .../output/schema.json | 15 + .../input/schema.json | 25 + .../output/schema.json | 15 + .../input/schema.json | 18 + .../output/schema.json | 15 + .../input/schema.json | 15 + .../output/schema.json | 18 + .../input/schema.json | 40 + .../output/schema.json | 25 + .../input/schema.json | 25 + .../output/schema.json | 15 + .../input/schema.json | 15 + .../output/schema.json | 15 + .../input/schema.json | 15 + .../output/schema.json | 18 + .../input/schema.json | 15 + .../output/schema.json | 47 + .../input/schema.json | 36 + .../output/schema.json | 39 + .../input/schema.json | 40 + .../output/schema.json | 25 + test/nuts/template.nut.ts | 21 +- 60 files changed, 3356 insertions(+), 8 deletions(-) create mode 100644 test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/botTemplates/Agentforce_Service_Agent_v1_Template.botTemplate-meta.xml create mode 100644 test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent_v1_Template/Agentforce_Service_Agent_v1_Template.genAiPlannerBundle create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/Agentforce_Service_Agent.bot-meta.xml create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/v1.botVersion-meta.xml create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/Agentforce_Service_Agent.genAiPlannerBundle create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/output/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/input/schema.json create mode 100644 test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/output/schema.json diff --git a/test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/botTemplates/Agentforce_Service_Agent_v1_Template.botTemplate-meta.xml b/test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/botTemplates/Agentforce_Service_Agent_v1_Template.botTemplate-meta.xml new file mode 100644 index 00000000..f5d7fda4 --- /dev/null +++ b/test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/botTemplates/Agentforce_Service_Agent_v1_Template.botTemplate-meta.xml @@ -0,0 +1,282 @@ + + + Agentforce Service Agent + en_US + + + + Hi, I'm an AI service assistant. How can I help you? + 2676a589-daa0-45f0-b9cf-801e55ef2d38 + + c5ed92c7-70ae-4495-96a0-bf5a6378518b + Message + + + 3cc53839-44bb-496d-8477-5333b793e92a + Wait + + Welcome + false + + false + + + Text + This variable may also be referred to as VerifiedCustomerId + VerifiedCustomerId + false + + Internal + + + Text + Stores the customer ID type, whether it's a Salesforce user or a contact. + customerType + false + + Internal + + + Boolean + Stores a boolean value that indicates whether the customer code is verified. + isVerified + false + + Internal + + + Text + Stores the Salesforce user ID or contact ID. + customerId + false + + Internal + + + Text + Stores the authentication key used to generate the verification code. + authenticationKey + false + + Internal + + Welcome + + + Agentforce_Service_Agent_v1_Template + + EinsteinServiceAgent + + + VoiceCall + VoiceCall.Id + Custom + + + VoiceCall + VoiceCall.Id + Text + + + VoiceCall + VoiceCall.Id + Facebook + + + VoiceCall + VoiceCall.Id + WhatsApp + + + VoiceCall + VoiceCall.Id + Line + + + VoiceCall + VoiceCall.Id + AppleBusinessChat + + + VoiceCall + VoiceCall.Id + EmbeddedMessaging + + Id + This variable may also be referred to as VoiceCall Id + VoiceCallId + true + + + + + MessagingSession + MessagingSession.MessagingEndUserId + Facebook + + + MessagingSession + MessagingSession.MessagingEndUserId + Custom + + + MessagingSession + MessagingSession.MessagingEndUserId + Text + + + MessagingSession + MessagingSession.MessagingEndUserId + EmbeddedMessaging + + + MessagingSession + MessagingSession.MessagingEndUserId + AppleBusinessChat + + + MessagingSession + MessagingSession.MessagingEndUserId + Line + + + MessagingSession + MessagingSession.MessagingEndUserId + WhatsApp + + Id + This variable may also be referred to as MessagingEndUser Id + EndUserId + true + + + + + MessagingSession + MessagingSession.Id + Custom + + + MessagingSession + MessagingSession.Id + Text + + + MessagingSession + MessagingSession.Id + WhatsApp + + + MessagingSession + MessagingSession.Id + Facebook + + + MessagingSession + MessagingSession.Id + Line + + + MessagingSession + MessagingSession.Id + AppleBusinessChat + + + MessagingSession + MessagingSession.Id + EmbeddedMessaging + + Id + This variable may also be referred to as MessagingSession Id + RoutableId + true + + + + + MessagingSession + MessagingSession.EndUserLanguage + AppleBusinessChat + + + MessagingSession + MessagingSession.EndUserLanguage + Custom + + + MessagingSession + MessagingSession.EndUserLanguage + Text + + + MessagingSession + MessagingSession.EndUserLanguage + EmbeddedMessaging + + + MessagingSession + MessagingSession.EndUserLanguage + Line + + + MessagingSession + MessagingSession.EndUserLanguage + WhatsApp + + + MessagingSession + MessagingSession.EndUserLanguage + Facebook + + Text + This variable may also be referred to as MessagingSession EndUserLanguage + EndUserLanguage + false + + + + + MessagingEndUser + MessagingEndUser.ContactId + Custom + + + MessagingEndUser + MessagingEndUser.ContactId + Text + + + MessagingEndUser + MessagingEndUser.ContactId + EmbeddedMessaging + + + MessagingEndUser + MessagingEndUser.ContactId + AppleBusinessChat + + + MessagingEndUser + MessagingEndUser.ContactId + Line + + + MessagingEndUser + MessagingEndUser.ContactId + WhatsApp + + + MessagingEndUser + MessagingEndUser.ContactId + Facebook + + Id + This variable may also be referred to as MessagingEndUser ContactId + ContactId + false + + + Deliver personalized customer interactions with an autonomous AI agent. + true + ExternalCopilot + \ No newline at end of file diff --git a/test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent_v1_Template/Agentforce_Service_Agent_v1_Template.genAiPlannerBundle b/test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent_v1_Template/Agentforce_Service_Agent_v1_Template.genAiPlannerBundle new file mode 100644 index 00000000..6da262ab --- /dev/null +++ b/test/mock-projects/agent-generate-template/MOCK-XML/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent_v1_Template/Agentforce_Service_Agent_v1_Template.genAiPlannerBundle @@ -0,0 +1,225 @@ + + + + + SvcCopilotTmpl__CaseManagement.SvcCopilotTmpl__CreateCaseEnhancedData.input_verifiedCustomerID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + SvcCopilotTmpl__CaseManagement.SvcCopilotTmpl__GetCasesForVerifiedContact.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + SvcCopilotTmpl__CaseManagement.SvcCopilotTmpl__GetCaseByVerifiedCaseNumber.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__SendEmailVerificationCode.output_authenticationKey + CustomPluginFunctionAttribute + authenticationKey + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__SendEmailVerificationCode.output_customerId + CustomPluginFunctionAttribute + customerId + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__SendEmailVerificationCode.output_customerType + CustomPluginFunctionAttribute + customerType + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.input_authenticationKey + CustomPluginFunctionAttribute + authenticationKey + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.input_customerId + CustomPluginFunctionAttribute + customerId + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.input_customerType + CustomPluginFunctionAttribute + customerType + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.output_isVerified + CustomPluginFunctionAttribute + isVerified + Variable + + + + SvcCopilotTmpl__ServiceCustomerVerification.SvcCopilotTmpl__VerifyCustomer.output_customerId + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + SvcCopilotTmpl__AccountManagement.SvcCopilotTmpl__ResetSecurePassword.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + SvcCopilotTmpl__AccountManagement.SvcCopilotTmpl__UpdateVerifiedContact.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + Deliver personalized customer interactions with an autonomous AI agent. Agentforce + Service Agent intelligently supports your customers with common inquiries and escalates + complex issues. + Agentforce Service Agent + + true + false + SurfaceAction__Messaging + Messaging + + + true + false + SurfaceAction__CustomerWebClient + CustomerWebClient + + AiCopilot__ReAct + + Verified_User + SvcCopilotTmpl__AccountManagement + Plugin + + + Verified_User + SvcCopilotTmpl__CaseManagement + Plugin + + + Verified_User + SvcCopilotTmpl__DeliveryIssues + Plugin + + + Verified_User + SvcCopilotTmpl__OrderInquiries + Plugin + + + Verified_User + SvcCopilotTmpl__ReservationManagement + Plugin + + + + isVerified + Variable + equal + true + + Verified_User + Verified User + Verified_User + sel + + Agentforce_Service_Agent_v1_Template + + SvcCopilotTmpl__AccountManagement + + + SvcCopilotTmpl__GeneralFAQ + + + SvcCopilotTmpl__ServiceCustomerVerification + + + SvcCopilotTmpl__OrderInquiries + + + SvcCopilotTmpl__CaseManagement + + + SvcCopilotTmpl__DeliveryIssues + + + SvcCopilotTmpl__ReservationManagement + + + SvcCopilotTmpl__Escalation + + + SvcCopilotTmpl__UpdateVerifiedContact + + + SvcCopilotTmpl__ResetSecurePassword + + + EmployeeCopilot__AnswerQuestionsWithKnowledge + + + SvcCopilotTmpl__SendEmailVerificationCode + + + SvcCopilotTmpl__VerifyCustomer + + + SvcCopilotTmpl__CancelOrder + + + SvcCopilotTmpl__IdentifyCustomerByEmail + + + SvcCopilotTmpl__GetOrdersByContact + + + SvcCopilotTmpl__GetOrderByOrderNumber + + + SvcCopilotTmpl__GetCaseByVerifiedCaseNumber + + + SvcCopilotTmpl__GetCasesForVerifiedContact + + + SvcCopilotTmpl__CreateCaseEnhancedData + + + SvcCopilotTmpl__AddCaseComment + + + SvcCopilotTmpl__FinalizeNewDeliveryTime + + + SvcCopilotTmpl__GetDeliveryTimeSlots + + + SvcCopilotTmpl__FinalizeReservation + + + SvcCopilotTmpl__GetReservationTimeSlots + + \ No newline at end of file diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/Agentforce_Service_Agent.bot-meta.xml b/test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/Agentforce_Service_Agent.bot-meta.xml new file mode 100644 index 00000000..bde02cc1 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/Agentforce_Service_Agent.bot-meta.xml @@ -0,0 +1,228 @@ + + + false + SvcCopilotTmpl__EinsteinServiceAgent + EinsteinServiceAgent + + + Agentforce_Service_Agent + + None + agentforce_service_agent@00dxx00fomp83b61198914626.ext + + + VoiceCall + VoiceCall.Id + Custom + + + VoiceCall + VoiceCall.Id + Text + + + VoiceCall + VoiceCall.Id + Facebook + + + VoiceCall + VoiceCall.Id + WhatsApp + + + VoiceCall + VoiceCall.Id + Line + + + VoiceCall + VoiceCall.Id + AppleBusinessChat + + + VoiceCall + VoiceCall.Id + EmbeddedMessaging + + Id + This variable may also be referred to as VoiceCall Id + VoiceCallId + true + + + + + MessagingSession + MessagingSession.MessagingEndUserId + Facebook + + + MessagingSession + MessagingSession.MessagingEndUserId + Custom + + + MessagingSession + MessagingSession.MessagingEndUserId + Text + + + MessagingSession + MessagingSession.MessagingEndUserId + EmbeddedMessaging + + + MessagingSession + MessagingSession.MessagingEndUserId + AppleBusinessChat + + + MessagingSession + MessagingSession.MessagingEndUserId + Line + + + MessagingSession + MessagingSession.MessagingEndUserId + WhatsApp + + Id + This variable may also be referred to as MessagingEndUser Id + EndUserId + true + + + + + MessagingSession + MessagingSession.Id + Custom + + + MessagingSession + MessagingSession.Id + Text + + + MessagingSession + MessagingSession.Id + WhatsApp + + + MessagingSession + MessagingSession.Id + Facebook + + + MessagingSession + MessagingSession.Id + Line + + + MessagingSession + MessagingSession.Id + AppleBusinessChat + + + MessagingSession + MessagingSession.Id + EmbeddedMessaging + + Id + This variable may also be referred to as MessagingSession Id + RoutableId + true + + + + + MessagingSession + MessagingSession.EndUserLanguage + AppleBusinessChat + + + MessagingSession + MessagingSession.EndUserLanguage + Custom + + + MessagingSession + MessagingSession.EndUserLanguage + Text + + + MessagingSession + MessagingSession.EndUserLanguage + EmbeddedMessaging + + + MessagingSession + MessagingSession.EndUserLanguage + Line + + + MessagingSession + MessagingSession.EndUserLanguage + WhatsApp + + + MessagingSession + MessagingSession.EndUserLanguage + Facebook + + Text + This variable may also be referred to as MessagingSession EndUserLanguage + EndUserLanguage + false + + + + + MessagingEndUser + MessagingEndUser.ContactId + Custom + + + MessagingEndUser + MessagingEndUser.ContactId + Text + + + MessagingEndUser + MessagingEndUser.ContactId + EmbeddedMessaging + + + MessagingEndUser + MessagingEndUser.ContactId + AppleBusinessChat + + + MessagingEndUser + MessagingEndUser.ContactId + Line + + + MessagingEndUser + MessagingEndUser.ContactId + WhatsApp + + + MessagingEndUser + MessagingEndUser.ContactId + Facebook + + Id + This variable may also be referred to as MessagingEndUser ContactId + ContactId + false + + + Deliver personalized customer interactions with an autonomous AI agent. + + false + true + 0 + ExternalCopilot + \ No newline at end of file diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/v1.botVersion-meta.xml b/test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/v1.botVersion-meta.xml new file mode 100644 index 00000000..2fb383d3 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/bots/Agentforce_Service_Agent/v1.botVersion-meta.xml @@ -0,0 +1,121 @@ + + + v1 + false + + + + Hi, I'm an AI service assistant. How can I help you? + 2676a589-daa0-45f0-b9cf-801e55ef2d38 + + c5ed92c7-70ae-4495-96a0-bf5a6378518b + Message + + + 3cc53839-44bb-496d-8477-5333b793e92a + Wait + + Welcome + false + + false + + + + + Sorry, it looks like something has gone wrong. + 1b5573a6-446e-4352-a703-0fadd26d12b2 + + 18c56589-3702-4602-84ec-95fefe16efbb + Message + + + ce7deaee-b3ea-4aa1-b60b-8bcd69d2590b + Wait + + Error_Handling + false + + false + + + + + One moment while I connect you to the next available service + representative. + 00f0ded2-5652-42ab-8479-fb6f64fb1820 + + 6feafbde-c9b8-4b4e-8670-48e10158810d + Message + + + + Transfer + + 52c3ef85-188f-4d7f-ae34-786605b3695f + SystemMessage + + Transfer_To_Agent + false + + false + + false + sadr + + Agentforce_Service_Agent + + + Text + This variable may also be referred to as VerifiedCustomerId + VerifiedCustomerId + false + + Internal + + + Text + Stores the customer ID type, whether it's a Salesforce user or a contact. + customerType + false + + Internal + + + Boolean + Stores a boolean value that indicates whether the customer code is verified. + isVerified + false + + Internal + + + Text + Stores the Salesforce user ID or contact ID. + customerId + false + + Internal + + + Text + Stores the authentication key used to generate the verification code. + authenticationKey + false + + Internal + + Welcome + false + false + false + false + An AI customer service agent whose job is to help customers with support questions or + other issues. + false + false + false + false + false + Casual + \ No newline at end of file diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/Agentforce_Service_Agent.genAiPlannerBundle b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/Agentforce_Service_Agent.genAiPlannerBundle new file mode 100644 index 00000000..3fbe1dd5 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/Agentforce_Service_Agent.genAiPlannerBundle @@ -0,0 +1,1217 @@ + + + + + CaseManagement_16jxx0000004CH6.CreateCaseEnhancedData_179xx0000004CH8.input_verifiedCustomerID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + CaseManagement_16jxx0000004CH6.GetCasesForVerifiedContact_179xx0000004CH8.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + CaseManagement_16jxx0000004CH6.GetCaseByVerifiedCaseNumber_179xx0000004CH8.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.SendEmailVerificationCode_179xx0000004CHC.output_authenticationKey + CustomPluginFunctionAttribute + authenticationKey + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.SendEmailVerificationCode_179xx0000004CHC.output_customerId + CustomPluginFunctionAttribute + customerId + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.SendEmailVerificationCode_179xx0000004CHC.output_customerType + CustomPluginFunctionAttribute + customerType + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.VerifyCustomer_179xx0000004CHC.input_authenticationKey + CustomPluginFunctionAttribute + authenticationKey + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.VerifyCustomer_179xx0000004CHC.input_customerId + CustomPluginFunctionAttribute + customerId + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.VerifyCustomer_179xx0000004CHC.input_customerType + CustomPluginFunctionAttribute + customerType + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.VerifyCustomer_179xx0000004CHC.output_isVerified + CustomPluginFunctionAttribute + isVerified + Variable + + + + ServiceCustomerVerification_16jxx0000004CH6.VerifyCustomer_179xx0000004CHC.output_customerId + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + AccountManagement_16jxx0000004CH6.ResetSecurePassword_179xx0000004CHD.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + + + AccountManagement_16jxx0000004CH6.UpdateVerifiedContact_179xx0000004CHD.input_verifiedContactID + CustomPluginFunctionAttribute + VerifiedCustomerId + Variable + + Deliver personalized customer interactions with an autonomous AI agent. Agentforce + Service Agent intelligently supports your customers with common inquiries and escalates + complex issues. + + AnswerQuestionsWithKnowledge_16jxx0000004CH6 + + + AccountManagement_16jxx0000004CH6 + + + CaseManagement_16jxx0000004CH6 + + + DeliveryIssues_16jxx0000004CH6 + + + Escalation_16jxx0000004CH6 + + + GeneralFAQ_16jxx0000004CH6 + + + OrderInquiries_16jxx0000004CH6 + + + ReservationManagement_16jxx0000004CH6 + + + ServiceCustomerVerification_16jxx0000004CH6 + + + AccountManagement_16jxx0000004CH6 + false + Handles customer inquiries about changing their contact information and + resetting their password. + AccountManagement_16jxx0000004CH6 + + If the customer is not known, always ask for their email address and get + their Contact record before running any other actions. + Instruction1 + + Instruction1 + 0 + + + When asking a customer for their address, your request of the following + required information should be formatted as an itemized list :Street Address, City, + State, and Postal Code. + Instruction2 + + Instruction2 + 1 + + + Use the Answer Questions with Knowledge action to answer questions about + account issues. + Instruction3 + + Instruction3 + 2 + + + Acknowledge and validate user concerns with empathy and professionalism. + Instruction4 + + Instruction4 + 3 + + + When changing a customer's email address, always explicitly prompt for + the new email address. + Instruction5 + + Instruction5 + 4 + + en_US + + AnswerQuestionsWithKnowledge_179xx0000004CHD + + + ResetSecurePassword_179xx0000004CHD + + + UpdateVerifiedContact_179xx0000004CHD + + + UpdateVerifiedContact_179xx0000004CHD + Updates fields on a customer’s contact record, such as the email address, + phone number, or postal address. + UpdateVerifiedContact_179xx0000004CHD + SvcCopilotTmpl__UpdateVrfyCtct + flow + true + true + UpdateVerifiedContact + + + input_verifiedContactID + verifiedContactID + input + + Update Verified Contact + SvcCopilotTmpl__UpdateVerifiedContact + + + ResetSecurePassword_179xx0000004CHD + Send a password reset link to the email address associated with the given + Contact ID. + ResetSecurePassword_179xx0000004CHD + SvcCopilotTmpl__ResetScrPassword + flow + true + true + ResetSecurePassword + + + input_verifiedContactID + verifiedContactID + input + + Reset Secure Password + SvcCopilotTmpl__ResetSecurePassword + + + AnswerQuestionsWithKnowledge_179xx0000004CHD + Answers questions about company policies and procedures, troubleshooting + steps, or product information. For example: “What is your return policy?” “How do I + fix an issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_179xx0000004CHD + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + AccountManagement + Account Management + Topic + Your job is to help a customer reset their password or make updates to their contact + information by changing their email address, phone number, or mailing address. + SvcCopilotTmpl__AccountManagement + + + GeneralFAQ_16jxx0000004CH6 + false + This topic is for helping answer customer's questions by searching through + the knowledge articles and providing information from those articles. The questions can + be about the company and its products, policies or business procedures + GeneralFAQ_16jxx0000004CH6 + + If the customer's question is too vague or general, ask for more + details and clarification to give a better answer. + requestmoredetails + + request-more-details + 0 + + + If you are unable to help the customer even after asking clarifying + questions, ask if they want to escalate this issue to a live agent. + unabletohelpafterclarifying + + unable-to-help-after-clarifying + 1 + + + If you are unable to answer customer's questions, ask if they want to + escalate this issue to a live agent. + unabletoanswerquestions + + unable-to-answer-questions + 2 + + + Never provide generic information, advice or troubleshooting steps, unless + retrieved from searching knowledge articles. + avoidgenericinformation + + avoid-generic-information + 3 + + + Include sources in your response when available from the knowledge + articles, otherwise proceed without them. + includearticlesources + + include-article-sources + 4 + + en_US + + AnswerQuestionsWithKnowledge_179xx0000004CHB + + + AnswerQuestionsWithKnowledge_179xx0000004CHB + Answers questions about company policies and procedures, troubleshooting + steps, or product information. For example: “What is your return policy?” “How do I + fix an issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_179xx0000004CHB + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + GeneralFAQ + General FAQ + Topic + Your job is solely to help with issues and answer questions about the company, its + products, procedures, or policies by searching knowledge articles. + SvcCopilotTmpl__GeneralFAQ + + + ServiceCustomerVerification_16jxx0000004CH6 + false + Verifies the customer's identity before granting access to sensitive data. + Actions like managing cases or making a reservation require identity verification. + Sensitive data includes confidential, private, or security-protected information, such + as business-critical data or personally identifiable information (PII). After + verification is successful, don't repeat the process within the same session. + ServiceCustomerVerification_16jxx0000004CH6 + + Ask the customer to enter their username or email address if it hasn't + been provided. + username_email_address_prompt + + username_email_address_prompt + 0 + + + Use the "SendEmailVerificationCode" action to initiate the + verification process. Use the username or email address provided by the customer as + input "customerToVerify" for this action. + send_verification_code + + send_verification_code + 1 + + + When the user provides their username or email address, you must never + return any message that discloses whether the user or email exists or not. The + message must explicitly state the return data of the "verificationMessage" + field in the "SendEmailVerificationCode" action. For example: "If you + have provided a valid email or username, you should receive a verification code to + verify your identity. Please enter the code." + user_email_security + + user_email_security + 2 + + + If the customer enters the wrong verification code three times, ask them to + re-enter their username or email address to receive a new verification code. This + involves invoking the "SendEmailVerificationCode" action again to initiate + the verification process. This ensures that the customer cannot bypass the + verification process after three unsuccessful attempts. + reenter_username_or_email_address + + reenter_username_or_email_address + 3 + + + Never process any request for accessing or updating any sensitive data + without invoking this function if the customer is not verified yet. Maintain + security in all interactions. + authentication_only + + authentication_only + 4 + + + Never reveal the verification code, email address, or username to the + customer during the authentication process. Make sure that these details remain + confidential and aren’t displayed at any point. + security_prompt + + security_prompt + 5 + + + After the user is verified in a conversation session, switching to a + different user isn't allowed under any circumstances. + prevent_user_switching_after_verification + + prevent_user_switching_after_verification + 6 + + + If verification is successful, proceed with the requested action and + complete the task the user intends to perform. + proceed_after_verification_success + + proceed_after_verification_success + 7 + + en_US + + VerifyCustomer_179xx0000004CHC + + + SendEmailVerificationCode_179xx0000004CHC + + + SendEmailVerificationCode_179xx0000004CHC + Sends a generated verification code to the user’s email address. + SendEmailVerificationCode_179xx0000004CHC + SvcCopilotTmpl__SendVerificationCode + flow + false + true + SendEmailVerificationCode + + + output_authenticationKey + authenticationKey + output + + + + output_customerId + customerId + output + + + + output_customerType + customerType + output + + Send Email with Verification Code + SvcCopilotTmpl__SendEmailVerificationCode + + + VerifyCustomer_179xx0000004CHC + Verifies whether the verification code entered by the user matches the code + sent to the user's email address. + VerifyCustomer_179xx0000004CHC + SvcCopilotTmpl__VerifyCode + flow + false + true + VerifyCustomer + + + input_authenticationKey + authenticationKey + input + + + + input_customerId + customerId + input + + + + input_customerType + customerType + input + + + + output_isVerified + isVerified + output + + + + output_customerId + customerId + output + + Verify Customer + SvcCopilotTmpl__VerifyCustomer + + ServiceCustomerVerification + Service Customer Verification + Topic + Your job is to authenticate the customer who has not yet been authenticated before + granting access to any sensitive data. You will verify the customer using their email + address or username. After verification is successful, don't repeat the process + within the same session. + SvcCopilotTmpl__ServiceCustomerVerification + + + OrderInquiries_16jxx0000004CH6 + false + Handles questions related to a user’s order, order status, or order updates. + OrderInquiries_16jxx0000004CH6 + + When scheduling changes are requested, ask the customer for a date that + they would like the delivery scheduled and look up available time slots. + Instruction1 + + Instruction1 + 0 + + + If a package is lost, immediately escalate the issue to a live agent. + Instruction2 + + Instruction2 + 1 + + + Convert dates to YYYY-MM-DD for the customer, but do not request the + customer to provide the dates in that format. Show dates in a user friendly way. + Instruction3 + + Instruction3 + 2 + + + If the customer is not known, always ask for their email address and get + their Contact record before running any other actions. + Instruction4 + + Instruction4 + 3 + + + Use the Answer Questions with Knowledge action for answering general order + questions. + Instruction5 + + Instruction5 + 4 + + + Acknowledge and validate user concerns with empathy and professionalism. + Instruction6 + + Instruction6 + 5 + + + If an order's status is delivered, deny cancellation of the order. + Instruction7 + + Instruction7 + 6 + + en_US + + IdentifyCustomerByEmail_179xx0000004CHA + + + CancelOrder_179xx0000004CHA + + + GetOrderByOrderNumber_179xx0000004CHA + + + GetOrdersByContact_179xx0000004CHA + + + AnswerQuestionsWithKnowledge_179xx0000004CHA + + + CancelOrder_179xx0000004CHA + Cancels a customer’s order. + CancelOrder_179xx0000004CHA + SvcCopilotTmpl__CancelOrder + flow + true + true + CancelOrder + Cancel Order + SvcCopilotTmpl__CancelOrder + + + IdentifyCustomerByEmail_179xx0000004CHA + Identify a customer by their email address and return their contact record. + IdentifyCustomerByEmail_179xx0000004CHA + SvcCopilotTmpl__IdentifyCustomer + flow + false + true + IdentifyCustomerByEmail + Identify Customer By Email + SvcCopilotTmpl__IdentifyCustomerByEmail + + + GetOrdersByContact_179xx0000004CHA + Returns a list of orders associated with a given contact record. + GetOrdersByContact_179xx0000004CHA + SvcCopilotTmpl__GetOrdersByContact + flow + false + true + GetOrdersByContact + Get Orders By Contact + SvcCopilotTmpl__GetOrdersByContact + + + GetOrderByOrderNumber_179xx0000004CHA + Returns the order information associated with a given contact ID and order + number. + GetOrderByOrderNumber_179xx0000004CHA + SvcCopilotTmpl__GetOrderByOrderNumber + flow + false + true + GetOrderByOrderNumber + Get Order By Order Number + SvcCopilotTmpl__GetOrderByOrderNumber + + + AnswerQuestionsWithKnowledge_179xx0000004CHA + Answers questions about company policies and procedures, troubleshooting + steps, or product information. For example: “What is your return policy?” “How do I + fix an issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_179xx0000004CHA + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + OrderInquiries + Order Inquiries + Topic + Your job is to answer general questions about orders, get order details, and cancel + orders. + SvcCopilotTmpl__OrderInquiries + + + CaseManagement_16jxx0000004CH6 + false + Handles customer inquiries and actions related to support cases, including + providing case information, updating existing cases, and creating new cases. + CaseManagement_16jxx0000004CH6 + + Always format any dates in a human readable format + Instruction1 + + Instruction1 + 0 + + + Do not ever show the Case Id to a customer + Instruction2 + + Instruction2 + 1 + + + If the customer is not known, always ask for their email address and get + their Contact record before running any other actions. + Instruction3 + + Instruction3 + 2 + + + When adding a comment to a case, first retrieve the case details using the + case number, ask the user for the exact comment they would like to add and only then + add it. + Instruction4 + + Instruction4 + 3 + + + When sharing case details with the customer, show the following properties + as an itemized list :Case number, Subject, Description, and Status. The Subject must + exactly match the value stored in the case record. Do not rephrase or regenerate it. + Instruction5 + + Instruction5 + 4 + + + A case is a record used to help track a customer's issues. Customers + may have questions about the status of the issue or want to provide more information + for the case. Cases are usually associated with a contact. Comments are added to + provide new information. + Instruction6 + + Instruction6 + 5 + + + Use the Answer Questions with Knowledge action to answer troubleshooting + questions. + Instruction7 + + Instruction7 + 6 + + + Acknowledge and validate user concerns with empathy and professionalism. + Instruction8 + + Instruction8 + 7 + + + When a customer asks you to create a case, please summarize the current + conversation. The subject should be less than 7 words and function as a high level + overview of what the customer inquired about. The description should be no more than + 3 sentences and should provide more depth about what exactly the customer asked, + important data, and any other relevant information to help a customer service + representative understand the context of this conversation. + Instruction9 + + Instruction9 + 8 + + + When sharing the Description field from a case record with the customer, + summarize it into a condensed, conversational version that is no more than 3 + sentences. The summary must preserve all important factual content and intent from + the original case description, and must not introduce any new or misleading + information. + Instruction10 + + Instruction10 + 9 + + en_US + + GetCaseByVerifiedCaseNumber_179xx0000004CH8 + + + GetCasesForVerifiedContact_179xx0000004CH8 + + + AnswerQuestionsWithKnowledge_179xx0000004CH8 + + + AddCaseComment_179xx0000004CH8 + + + CreateCaseEnhancedData_179xx0000004CH8 + + + GetCaseByVerifiedCaseNumber_179xx0000004CH8 + Returns a case associated with a given contact ID and case number. + GetCaseByVerifiedCaseNumber_179xx0000004CH8 + SvcCopilotTmpl__GetCaseByVrfyCaseNbr + flow + false + true + GetCaseByVerifiedCaseNumber + + + input_verifiedContactID + verifiedContactID + input + + Get Case By Verified Case Number + SvcCopilotTmpl__GetCaseByVerifiedCaseNumber + + + AnswerQuestionsWithKnowledge_179xx0000004CH8 + Answers questions about company policies and procedures, troubleshooting + steps, or product information. For example: “What is your return policy?” “How do I + fix an issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_179xx0000004CH8 + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + + GetCasesForVerifiedContact_179xx0000004CH8 + Returns a list of cases related to a given Contact ID. + GetCasesForVerifiedContact_179xx0000004CH8 + SvcCopilotTmpl__GetCasesVrfyCtct + flow + false + true + GetCasesForVerifiedContact + + + input_verifiedContactID + verifiedContactID + input + + Get Cases For Verified Contact + SvcCopilotTmpl__GetCasesForVerifiedContact + + + CreateCaseEnhancedData_179xx0000004CH8 + Create a case for the customer that's transferred from the AI agent to + a service rep. The case includes all information gathered from the customer, a + summary of the progress made by the AI agent, a link to the conversation, and any + attachments. + CreateCaseEnhancedData_179xx0000004CH8 + SvcCopilotTmpl__CreateCaseEnhancedData + flow + true + true + CreateCaseEnhancedData + + + input_verifiedCustomerID + verifiedCustomerID + input + + Create Case with Enhanced Data + SvcCopilotTmpl__CreateCaseEnhancedData + + + AddCaseComment_179xx0000004CH8 + Let a customer add a comment to an existing case. + AddCaseComment_179xx0000004CH8 + SvcCopilotTmpl__AddCaseComment + flow + true + true + AddCaseComment + Add Case Comment + SvcCopilotTmpl__AddCaseComment + + CaseManagement + Case Management + Topic + Your job is to help customers retrieve case information, update case comments, and + create new cases based on customer requests. + SvcCopilotTmpl__CaseManagement + + + DeliveryIssues_16jxx0000004CH6 + false + Addresses customer concerns related to delivery problems with an order, + including late deliveries or scheduling changes. + DeliveryIssues_16jxx0000004CH6 + + If the customer is not known, always ask for their email address and get + their Contact record before running any other actions. + Instruction1 + + Instruction1 + 0 + + + Use the Answer Questions with Knowledge action for answering general + delivery questions. + Instruction2 + + Instruction2 + 1 + + + Acknowledge and validate user concerns with empathy and professionalism. + Instruction3 + + Instruction3 + 2 + + + When scheduling changes are requested, ask the customer for a date that + they would like the delivery scheduled and look up available time slots. + Instruction4 + + Instruction4 + 3 + + + If a package is lost, immediately escalate the issue to a live agent. + Instruction5 + + Instruction5 + 4 + + + Convert dates to YYYY-MM-DD for the customer, but do not request the + customer to provide the dates in that format. Show dates in a user friendly way. + Instruction6 + + Instruction6 + 5 + + + After the customer provides the date and time of the scheduled delivery, + confirm the scheduled delivery time. + Instruction7 + + Instruction7 + 6 + + en_US + + GetDeliveryTimeSlots_179xx0000004CH9 + + + AnswerQuestionsWithKnowledge_179xx0000004CH9 + + + FinalizeNewDeliveryTime_179xx0000004CH9 + + + CancelOrder_179xx0000004CH9 + + + GetOrdersByContact_179xx0000004CH9 + + + IdentifyCustomerByEmail_179xx0000004CH9 + + + CancelOrder_179xx0000004CH9 + Cancels a customer’s order. + CancelOrder_179xx0000004CH9 + SvcCopilotTmpl__CancelOrder + flow + true + true + CancelOrder + Cancel Order + SvcCopilotTmpl__CancelOrder + + + FinalizeNewDeliveryTime_179xx0000004CH9 + Updates the scheduled delivery time to the time slot selected by the + customer. + FinalizeNewDeliveryTime_179xx0000004CH9 + SvcCopilotTmpl__FinalizeDeliveryTime + flow + true + true + FinalizeNewDeliveryTime + Finalize New Delivery Time + SvcCopilotTmpl__FinalizeNewDeliveryTime + + + IdentifyCustomerByEmail_179xx0000004CH9 + Identify a customer by their email address and return their contact record. + IdentifyCustomerByEmail_179xx0000004CH9 + SvcCopilotTmpl__IdentifyCustomer + flow + false + true + IdentifyCustomerByEmail + Identify Customer By Email + SvcCopilotTmpl__IdentifyCustomerByEmail + + + GetOrdersByContact_179xx0000004CH9 + Returns a list of orders associated with a given contact record. + GetOrdersByContact_179xx0000004CH9 + SvcCopilotTmpl__GetOrdersByContact + flow + false + true + GetOrdersByContact + Get Orders By Contact + SvcCopilotTmpl__GetOrdersByContact + + + AnswerQuestionsWithKnowledge_179xx0000004CH9 + Answers questions about company policies and procedures, troubleshooting + steps, or product information. For example: “What is your return policy?” “How do I + fix an issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_179xx0000004CH9 + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + + GetDeliveryTimeSlots_179xx0000004CH9 + Returns a list of available time slots to schedule a delivery. + GetDeliveryTimeSlots_179xx0000004CH9 + SvcCopilotTmpl__GetDeliveryTimeSlots + flow + false + true + GetDeliveryTimeSlots + Get Delivery Time Slots + SvcCopilotTmpl__GetDeliveryTimeSlots + + DeliveryIssues + Delivery Issues + Topic + Your job is to address customer concerns related to delivery problems with an order + by looking up order details and managing delivery times. + SvcCopilotTmpl__DeliveryIssues + + + ReservationManagement_16jxx0000004CH6 + false + Handles requests to create new reservations for customers at their desired time + slots. + ReservationManagement_16jxx0000004CH6 + + After verifying the customer's account, ask what date the customer + wants to make the reservation. + Instruction1 + + Instruction1 + 0 + + + If the customer is not known, always ask for their email address and get + their Contact record before starting to make a reservation for the customer. + Instruction2 + + Instruction2 + 1 + + + Once the customer approves and confirms the date and time, then confirm the + reservation. + Instruction3 + + Instruction3 + 2 + + + Once the customer provides a date, lookup available time slots. + Instruction4 + + Instruction4 + 3 + + + Use the Answer Questions with Knowledge action for answering general + reservation questions + Instruction5 + + Instruction5 + 4 + + + Acknowledge and validate user concerns with empathy and professionalism. + Instruction6 + + Instruction6 + 5 + + en_US + + AnswerQuestionsWithKnowledge_179xx0000004CH6 + + + IdentifyCustomerByEmail_179xx0000004CH6 + + + FinalizeReservation_179xx0000004CH6 + + + GetReservationTimeSlots_179xx0000004CH6 + + + AnswerQuestionsWithKnowledge_179xx0000004CH6 + Answers questions about company policies and procedures, troubleshooting + steps, or product information. For example: “What is your return policy?” “How do I + fix an issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_179xx0000004CH6 + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + + FinalizeReservation_179xx0000004CH6 + Books and finalizes a reservation for the time designated by the customer. + FinalizeReservation_179xx0000004CH6 + SvcCopilotTmpl__FinalizeReservation + flow + true + true + FinalizeReservation + Finalize Reservation + SvcCopilotTmpl__FinalizeReservation + + + IdentifyCustomerByEmail_179xx0000004CH6 + Identify a customer by their email address and return their contact record. + IdentifyCustomerByEmail_179xx0000004CH6 + SvcCopilotTmpl__IdentifyCustomer + flow + false + true + IdentifyCustomerByEmail + Identify Customer By Email + SvcCopilotTmpl__IdentifyCustomerByEmail + + + GetReservationTimeSlots_179xx0000004CH6 + Returns a list of available time slots for the date specified by the + customer. + GetReservationTimeSlots_179xx0000004CH6 + SvcCopilotTmpl__GetAvailableTimeSlots + flow + false + true + GetReservationTimeSlots + Get Reservation Time Slots + SvcCopilotTmpl__GetReservationTimeSlots + + ReservationManagement + Reservation Management + Topic + Your job is to make a reservation for a customer. This includes gathering necessary + information such as checking available dates and times for the reservation and + confirming the reservation. + SvcCopilotTmpl__ReservationManagement + + + Escalation_16jxx0000004CH6 + true + Handles requests from users who want to transfer or escalate their conversation + to a live human agent. + Escalation_16jxx0000004CH6 + + If a user explicitly asks to transfer to a live agent, escalate the + conversation. + escalateonrequest + + escalate-on-request + 0 + + + If escalation to a live agent fails for any reason, acknowledge the issue + and ask the user whether they would like to log a support case instead. + promptonescalationfailure + + prompt-on-escalation-failure + 1 + + en_US + Escalation + Escalation + Topic + Your job is to transfer the conversation to a live agent if a user explicitly asks + for human assistance or has a complex issue that requires human intervention. If + escalation fails, ask the user whether they would like to log a support case so the + issue is recorded for follow-up. + SvcCopilotTmpl__Escalation + + Agentforce Service Agent + + AnswerQuestionsWithKnowledge_16jxx0000004CH6 + Answers questions about company policies and procedures, troubleshooting steps, + or product information. For example: “What is your return policy?” “How do I fix an + issue?” or “What features does a product have?” + AnswerQuestionsWithKnowledge_16jxx0000004CH6 + streamKnowledgeSearch + standardInvocableAction + false + true + AnswerQuestionsWithKnowledge + Answer Questions with Knowledge + Getting answers + EmployeeCopilot__AnswerQuestionsWithKnowledge + + + true + false + SurfaceAction__Messaging + Messaging + + + true + false + SurfaceAction__CustomerWebClient + CustomerWebClient + + AiCopilot__ReAct + + Verified_User + AccountManagement_16jxx0000004CH6 + Plugin + + + Verified_User + CaseManagement_16jxx0000004CH6 + Plugin + + + Verified_User + DeliveryIssues_16jxx0000004CH6 + Plugin + + + Verified_User + OrderInquiries_16jxx0000004CH6 + Plugin + + + Verified_User + ReservationManagement_16jxx0000004CH6 + Plugin + + + + isVerified + Variable + equal + true + + Verified_User + Verified User + Verified_User + sel + + \ No newline at end of file diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHD/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/input/schema.json new file mode 100644 index 00000000..f8acc08d --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["verifiedContactID"], + "unevaluatedProperties": false, + "properties": { + "verifiedContactID": { + "title": "Verified Contact record ID", + "description": "Stores the contact record ID to be updated.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/output/schema.json new file mode 100644 index 00000000..ca9503ab --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/ResetSecurePassword_179xx0000004CHD/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "outcomeMessage": { + "title": "Outcome message", + "description": "Stores the message that lets the customer know whether the password was successfully reset.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/input/schema.json new file mode 100644 index 00000000..772bdd2f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/input/schema.json @@ -0,0 +1,57 @@ +{ + "required": ["verifiedContactID"], + "unevaluatedProperties": false, + "properties": { + "verifiedContactID": { + "title": "Verified Contact record ID", + "description": "Stores the contact record ID to be updated.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "newCity": { + "title": "New City", + "description": "Stores the value of the new city provided by the customer. If no change is desired, this variable is empty.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "newEmailAddress": { + "title": "New Email Address", + "description": "Stores the value of the new email address provided by the customer. If no change is desired, this variable is empty.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": true + }, + "newPhoneNumber": { + "title": "New Phone Number", + "description": "Stores the value of the new phone number provided by the customer. If no change is desired, this variable is empty.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": true + }, + "newPostalCode": { + "title": "New Postal Code", + "description": "Stores the value of the new postal code provided by the customer. If no change is desired, this variable is empty.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "newState": { + "title": "New State", + "description": "Stores the value of the new state provided by the customer. If no change is desired, this variable is empty.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "newStreetAddress": { + "title": "New Street Address", + "description": "Stores the value of the new street address provided by the customer. If no change is desired, this variable is empty.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/output/schema.json new file mode 100644 index 00000000..6211d26f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/AccountManagement_16jxx0000004CH6/UpdateVerifiedContact_179xx0000004CHD/output/schema.json @@ -0,0 +1,18 @@ +{ + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "Stores the contact record to be updated.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/input/schema.json new file mode 100644 index 00000000..2bad86a2 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/input/schema.json @@ -0,0 +1,25 @@ +{ + "required": ["caseRecord", "caseComment"], + "unevaluatedProperties": false, + "properties": { + "caseRecord": { + "title": "Case record", + "description": "Stores the case record to be updated with a comment.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Case" + }, + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "caseComment": { + "title": "Case comment", + "description": "Stores the text of the comment to add to the case.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/output/schema.json new file mode 100644 index 00000000..8de910f7 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AddCaseComment_179xx0000004CH8/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "outcomeMessage": { + "title": "Outcome message", + "description": "Stores the message that lets the customer know whether the comment was successfully added to the case.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH8/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/input/schema.json new file mode 100644 index 00000000..d2efc0db --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/input/schema.json @@ -0,0 +1,36 @@ +{ + "required": ["verifiedCustomerID"], + "unevaluatedProperties": false, + "properties": { + "verifiedCustomerID": { + "title": "Verified Customer ID", + "description": "Stores the contact ID associated with the newly created Case.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": false + }, + "messagingSessionID": { + "title": "Messaging Session ID", + "description": "Stores session id from the chat conversation", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "caseSubject": { + "title": "Case Subject", + "description": "Stores the subject of the case to create.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "caseDescription": { + "title": "Case Description", + "description": "Stores the details of the user issue to be used for the case.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/output/schema.json new file mode 100644 index 00000000..35da3c71 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/CreateCaseEnhancedData_179xx0000004CH8/output/schema.json @@ -0,0 +1,18 @@ +{ + "unevaluatedProperties": false, + "properties": { + "caseRecord": { + "title": "Case record", + "description": "Stores the case record created by the customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Case" + }, + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/input/schema.json new file mode 100644 index 00000000..b9364e99 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/input/schema.json @@ -0,0 +1,22 @@ +{ + "required": ["verifiedContactID", "caseNumber"], + "unevaluatedProperties": false, + "properties": { + "verifiedContactID": { + "title": "Verified Contact record ID", + "description": "Stores the contact record ID to be updated.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "caseNumber": { + "title": "Case Number", + "description": "Stores the case number provided by the customer.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/output/schema.json new file mode 100644 index 00000000..517400cb --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCaseByVerifiedCaseNumber_179xx0000004CH8/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "caseRecord": { + "title": "Case record", + "description": "Stores the case record based on the contact record and case number.", + "lightning:type": "lightning__recordInfoType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/input/schema.json new file mode 100644 index 00000000..f8acc08d --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["verifiedContactID"], + "unevaluatedProperties": false, + "properties": { + "verifiedContactID": { + "title": "Verified Contact record ID", + "description": "Stores the contact record ID to be updated.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/output/schema.json new file mode 100644 index 00000000..5fe8ae7e --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/CaseManagement_16jxx0000004CH6/GetCasesForVerifiedContact_179xx0000004CH8/output/schema.json @@ -0,0 +1,22 @@ +{ + "unevaluatedProperties": false, + "properties": { + "caseList": { + "title": "Case List", + "description": "Stores the ID, Subject, Description, Status, CreatedDate, CaseNumber, LastModifiedDate, and ClosedDate for case records related to a specified contact.", + "maxItems": 2000, + "items": { + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Case" + } + }, + "lightning:type": "lightning__listType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH9/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/input/schema.json new file mode 100644 index 00000000..d4e35ddd --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["orderNumber"], + "unevaluatedProperties": false, + "properties": { + "orderNumber": { + "title": "orderNumber", + "description": "Stores the order number provided by the customer to cancel.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/output/schema.json new file mode 100644 index 00000000..aca59841 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/CancelOrder_179xx0000004CH9/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "outcomeMessage": { + "title": "Outcome message", + "description": "Stores the message that lets the customer know whether the order was successfully cancelled.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/input/schema.json new file mode 100644 index 00000000..dd7e2e95 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/input/schema.json @@ -0,0 +1,25 @@ +{ + "required": ["dateTime"], + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "dateTime": { + "title": "dateTime", + "description": "Stores the order delivery time slot selected by the customer.", + "lightning:type": "lightning__dateTimeStringType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/output/schema.json new file mode 100644 index 00000000..84c712fd --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/FinalizeNewDeliveryTime_179xx0000004CH9/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "outcomeMessage": { + "title": "Outcome message", + "description": "Stores the message that lets the customer know whether the delivery time was successfully finalized.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/input/schema.json new file mode 100644 index 00000000..3e260216 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["date"], + "unevaluatedProperties": false, + "properties": { + "date": { + "title": "date", + "description": "Stores the desired date identified by the customer to schedule a delivery.", + "lightning:type": "lightning__dateType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/output/schema.json new file mode 100644 index 00000000..235fc43e --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetDeliveryTimeSlots_179xx0000004CH9/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "AvailableTimeSlots": { + "title": "AvailableTimeSlots", + "description": "Stores the time slots available on the date identified by the customer.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/input/schema.json new file mode 100644 index 00000000..788f68bd --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/input/schema.json @@ -0,0 +1,18 @@ +{ + "required": ["contactRecord"], + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/output/schema.json new file mode 100644 index 00000000..8742b6f3 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/GetOrdersByContact_179xx0000004CH9/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "ContactOrders": { + "title": "ContactOrders", + "description": "Stores the list of orders associated with a contact record.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/input/schema.json new file mode 100644 index 00000000..c4e4b9f0 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["emailAddress"], + "unevaluatedProperties": false, + "properties": { + "emailAddress": { + "title": "Email Address", + "description": "Stores the email address provided by the customer.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/output/schema.json new file mode 100644 index 00000000..20b61ac6 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/DeliveryIssues_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH9/output/schema.json @@ -0,0 +1,18 @@ +{ + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The Contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/GeneralFAQ_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHB/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CHA/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/input/schema.json new file mode 100644 index 00000000..d4e35ddd --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["orderNumber"], + "unevaluatedProperties": false, + "properties": { + "orderNumber": { + "title": "orderNumber", + "description": "Stores the order number provided by the customer to cancel.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/output/schema.json new file mode 100644 index 00000000..aca59841 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/CancelOrder_179xx0000004CHA/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "outcomeMessage": { + "title": "Outcome message", + "description": "Stores the message that lets the customer know whether the order was successfully cancelled.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/input/schema.json new file mode 100644 index 00000000..7809f0ba --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/input/schema.json @@ -0,0 +1,25 @@ +{ + "required": ["contactRecord", "orderNumber"], + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "orderNumber": { + "title": "orderNumber", + "description": "Stores the order number provided by the customer to identify a specific order.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/output/schema.json new file mode 100644 index 00000000..1e1a5f5d --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrderByOrderNumber_179xx0000004CHA/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "orderDetails": { + "title": "orderDetails", + "description": "Stores the information about the order number, status, and delivery date for the identified order.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/input/schema.json new file mode 100644 index 00000000..788f68bd --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/input/schema.json @@ -0,0 +1,18 @@ +{ + "required": ["contactRecord"], + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/output/schema.json new file mode 100644 index 00000000..8742b6f3 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/GetOrdersByContact_179xx0000004CHA/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "ContactOrders": { + "title": "ContactOrders", + "description": "Stores the list of orders associated with a contact record.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/input/schema.json new file mode 100644 index 00000000..c4e4b9f0 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["emailAddress"], + "unevaluatedProperties": false, + "properties": { + "emailAddress": { + "title": "Email Address", + "description": "Stores the email address provided by the customer.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/output/schema.json new file mode 100644 index 00000000..20b61ac6 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/OrderInquiries_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CHA/output/schema.json @@ -0,0 +1,18 @@ +{ + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The Contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/AnswerQuestionsWithKnowledge_179xx0000004CH6/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/input/schema.json new file mode 100644 index 00000000..5ce2ba14 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/input/schema.json @@ -0,0 +1,25 @@ +{ + "required": ["dateTime"], + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "dateTime": { + "title": "Date time", + "description": "Stores the date and time of the customer’s reservation.", + "lightning:type": "lightning__dateTimeStringType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/output/schema.json new file mode 100644 index 00000000..71ff7670 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/FinalizeReservation_179xx0000004CH6/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "outcomeMessage": { + "title": "Outcome message", + "description": "Stores the message that lets the customer know whether the reservation was successfully finalized.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/input/schema.json new file mode 100644 index 00000000..29f61476 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["date"], + "unevaluatedProperties": false, + "properties": { + "date": { + "title": "Date", + "description": "Stores the date identified by the customer to look up available time slots for.", + "lightning:type": "lightning__dateType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/output/schema.json new file mode 100644 index 00000000..e8166396 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/GetReservationTimeSlots_179xx0000004CH6/output/schema.json @@ -0,0 +1,15 @@ +{ + "unevaluatedProperties": false, + "properties": { + "AvailableTimeSlots": { + "title": "Available time slots", + "description": "Stores the time slots available on the date identified by the customer.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/input/schema.json new file mode 100644 index 00000000..c4e4b9f0 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["emailAddress"], + "unevaluatedProperties": false, + "properties": { + "emailAddress": { + "title": "Email Address", + "description": "Stores the email address provided by the customer.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/output/schema.json new file mode 100644 index 00000000..20b61ac6 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ReservationManagement_16jxx0000004CH6/IdentifyCustomerByEmail_179xx0000004CH6/output/schema.json @@ -0,0 +1,18 @@ +{ + "unevaluatedProperties": false, + "properties": { + "contactRecord": { + "title": "Contact record", + "description": "The Contact record associated with the identified customer.", + "lightning:type": "lightning__recordInfoType", + "lightning:sObjectInfo": { + "apiName": "Contact" + }, + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/input/schema.json new file mode 100644 index 00000000..324ef027 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/input/schema.json @@ -0,0 +1,15 @@ +{ + "required": ["customerToVerify"], + "unevaluatedProperties": false, + "properties": { + "customerToVerify": { + "title": "Customer To Verify", + "description": "Stores the email address or username provided by the customer. This input initiates the verification process.", + "lightning:type": "lightning__textType", + "lightning:isPII": true, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/output/schema.json new file mode 100644 index 00000000..32d20850 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/SendEmailVerificationCode_179xx0000004CHC/output/schema.json @@ -0,0 +1,47 @@ +{ + "unevaluatedProperties": false, + "properties": { + "verificationMessage": { + "title": "Verification Message", + "description": "Stores a generic message that will be displayed to the user.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + }, + "verificationCode": { + "title": "Verification Code", + "description": "Stores the generated verification code.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + }, + "authenticationKey": { + "title": "Authentication Key", + "description": "Stores the authentication key that’s used to generate the verification code.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + }, + "customerId": { + "title": "Customer ID", + "description": "Stores the Salesforce user ID or contact ID.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + }, + "customerType": { + "title": "Customer Type", + "description": "Stores the customer ID type, whether it’s a Salesforce user or a contact.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/input/schema.json new file mode 100644 index 00000000..b11f97d4 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/input/schema.json @@ -0,0 +1,36 @@ +{ + "required": ["authenticationKey", "customerCode", "customerId", "customerType"], + "unevaluatedProperties": false, + "properties": { + "authenticationKey": { + "title": "Authentication Key", + "description": "Stores the authentication key that’s used to generate the verification code.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "customerCode": { + "title": "Customer Code", + "description": "Stores the verification code entered by the user in the conversation, which they received by email.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "customerId": { + "title": "Customer ID", + "description": "Stores the Salesforce user ID or contact ID.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + }, + "customerType": { + "title": "Customer Type", + "description": "Stores the customer ID type, whether it’s a Salesforce user or a contact.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": false + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/output/schema.json new file mode 100644 index 00000000..b8eb2d3b --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/localActions/ServiceCustomerVerification_16jxx0000004CH6/VerifyCustomer_179xx0000004CHC/output/schema.json @@ -0,0 +1,39 @@ +{ + "unevaluatedProperties": false, + "properties": { + "isVerified": { + "title": "Verified", + "description": "Stores a boolean value that indicates whether the customer code is verified.", + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + }, + "customerId": { + "title": "Customer Id", + "description": "Stores the Salesforce user ID or contact ID.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + }, + "customerType": { + "title": "Customer Type", + "description": "Stores Type of ID", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": false + }, + "messageAfterVerification": { + "title": "Message After Verification", + "description": "Stores a generic message to be displayed after successful verification.", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/input/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/input/schema.json new file mode 100644 index 00000000..078a0b79 --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/input/schema.json @@ -0,0 +1,40 @@ +{ + "required": ["query"], + "unevaluatedProperties": false, + "properties": { + "query": { + "title": "Query", + "description": "Required. A string created by generative AI to be used in the knowledge article search.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsUrl": { + "title": "Citations Url", + "description": "The URL to use for citations for custom Agents.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "ragFeatureConfigId": { + "title": "RAG Feature Configuration Id", + "description": "The RAG Feature ID to use for grounding this copilot action invocation.", + "const": "", + "lightning:type": "lightning__textType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + }, + "citationsEnabled": { + "title": "Citations Enabled", + "description": "Whether or not citations are enabled.", + "const": false, + "lightning:type": "lightning__booleanType", + "lightning:isPII": false, + "copilotAction:isUserInput": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/output/schema.json b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/output/schema.json new file mode 100644 index 00000000..0d31a70f --- /dev/null +++ b/test/mock-projects/agent-generate-template/force-app/main/default/genAiPlannerBundles/Agentforce_Service_Agent/plannerActions/AnswerQuestionsWithKnowledge_16jxx0000004CH6/output/schema.json @@ -0,0 +1,25 @@ +{ + "unevaluatedProperties": false, + "properties": { + "knowledgeSummary": { + "title": "Knowledge Summary", + "description": "A string formatted as rich text that includes a summary of the information retrieved from the knowledge articles and citations to those articles.", + "maxLength": 100000, + "lightning:type": "lightning__richTextType", + "lightning:isPII": false, + "copilotAction:isDisplayable": true, + "copilotAction:isUsedByPlanner": true, + "copilotAction:useHydratedPrompt": true + }, + "citationSources": { + "title": "Citation Sources", + "description": "Source links for the chunks in the hydrated prompt that's used by the planner service.", + "lightning:type": "@apexClassType/AiCopilot__GenAiCitationInput", + "lightning:isPII": false, + "copilotAction:isDisplayable": false, + "copilotAction:isUsedByPlanner": true + } + }, + "lightning:type": "lightning__objectType", + "lightning:textIndexed": true +} diff --git a/test/nuts/template.nut.ts b/test/nuts/template.nut.ts index adf31437..1636c801 100644 --- a/test/nuts/template.nut.ts +++ b/test/nuts/template.nut.ts @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { join, resolve } from 'node:path'; +import { dirname, join, resolve } from 'node:path'; import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit'; import { XMLParser } from 'fast-xml-parser'; import { expect } from 'chai'; @@ -23,7 +24,6 @@ import { BotTemplateExt, GenAiPlannerBundleExt, } from '../../src/commands/agent/generate/template.js'; -import { getTestSession } from './shared-setup.js'; describe('agent generate template NUTs', function () { // Increase timeout for setup since shared setup includes long waits and deployments @@ -33,7 +33,12 @@ describe('agent generate template NUTs', function () { before(async function () { this.timeout(30 * 60 * 1000); // 30 minutes for setup - session = await getTestSession(); + session = await TestSession.create({ + project: { + sourceDir: join(dirname(fileURLToPath(import.meta.url)), '..', 'mock-projects', 'agent-generate-template'), + }, + devhubAuthStrategy: 'AUTO', + }); }); it('throws an error if Bot "type" is equal to "Bot"', async () => { @@ -54,8 +59,8 @@ describe('agent generate template NUTs', function () { 'main', 'default', 'bots', - 'Guest_Experience_Agent', - 'Guest_Experience_Agent.bot-meta.xml' + 'Agentforce_Service_Agent', + 'Agentforce_Service_Agent.bot-meta.xml' ); const command = `agent generate template --agent-version ${agentVersion} --agent-file "${agentFile}" --json`; const output = execCmd(command, { @@ -67,15 +72,15 @@ describe('agent generate template NUTs', function () { 'main', 'default', 'botTemplates', - 'Guest_Experience_Agent_v1_Template.botTemplate-meta.xml' + 'Agentforce_Service_Agent_v1_Template.botTemplate-meta.xml' ); const genAiPlannerBundleFilePath = join( 'force-app', 'main', 'default', 'genAiPlannerBundles', - 'Guest_Experience_Agent_v1_Template', - 'Guest_Experience_Agent_v1_Template.genAiPlannerBundle' + 'Agentforce_Service_Agent_v1_Template', + 'Agentforce_Service_Agent_v1_Template.genAiPlannerBundle' ); const generatedBotTemplateFilePath = resolve(session.project.dir, botTemplateFilePath); From 9419bf234bea78eeb4aea12295662255966248fe Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Wed, 11 Mar 2026 08:19:11 -0600 Subject: [PATCH 21/25] test: fix NUT assertion --- test/nuts/agent.activate.nut.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/nuts/agent.activate.nut.ts b/test/nuts/agent.activate.nut.ts index 6d18a86d..8eeb5377 100644 --- a/test/nuts/agent.activate.nut.ts +++ b/test/nuts/agent.activate.nut.ts @@ -128,11 +128,6 @@ describe('agent activate/deactivate NUTs', function () { expect(jsonResult?.success).to.equal(true); expect(jsonResult?.version).to.be.a('number'); - // Verify the warning was included in the output - expect(result.shellOutput.stderr).to.include( - 'No version specified, automatically selected latest available version' - ); - // Verify the BotVersion status is now 'Active' const finalStatus = await getBotStatus(); expect(finalStatus).to.equal('Active'); From c0463530d0f721327456814984213edf38b3db94 Mon Sep 17 00:00:00 2001 From: Esteban Romero Date: Wed, 11 Mar 2026 12:25:13 -0300 Subject: [PATCH 22/25] test: fix NUT --- test/nuts/template.nut.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/test/nuts/template.nut.ts b/test/nuts/template.nut.ts index 1636c801..c9881093 100644 --- a/test/nuts/template.nut.ts +++ b/test/nuts/template.nut.ts @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { dirname, join, resolve } from 'node:path'; +import { join, resolve } from 'node:path'; import { readFileSync } from 'node:fs'; -import { fileURLToPath } from 'node:url'; import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit'; import { XMLParser } from 'fast-xml-parser'; import { expect } from 'chai'; @@ -24,6 +23,7 @@ import { BotTemplateExt, GenAiPlannerBundleExt, } from '../../src/commands/agent/generate/template.js'; +import { getTestSession } from './shared-setup.js'; describe('agent generate template NUTs', function () { // Increase timeout for setup since shared setup includes long waits and deployments @@ -33,12 +33,7 @@ describe('agent generate template NUTs', function () { before(async function () { this.timeout(30 * 60 * 1000); // 30 minutes for setup - session = await TestSession.create({ - project: { - sourceDir: join(dirname(fileURLToPath(import.meta.url)), '..', 'mock-projects', 'agent-generate-template'), - }, - devhubAuthStrategy: 'AUTO', - }); + session = await getTestSession(); }); it('throws an error if Bot "type" is equal to "Bot"', async () => { From ff155c59aa24f3d6b797d1375147a4edc144a6df Mon Sep 17 00:00:00 2001 From: Esteban Romero Date: Wed, 11 Mar 2026 12:29:02 -0300 Subject: [PATCH 23/25] test: add unit tests --- src/commands/agent/generate/template.ts | 2 +- test/commands/agent/generate/template.test.ts | 208 ++++++++++++++++++ 2 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 test/commands/agent/generate/template.test.ts diff --git a/src/commands/agent/generate/template.ts b/src/commands/agent/generate/template.ts index 6e47abe5..0c1f1b0d 100644 --- a/src/commands/agent/generate/template.ts +++ b/src/commands/agent/generate/template.ts @@ -233,7 +233,7 @@ const jsonToXml = (filename: string, json: T, builder: XMLBuilder): void => { * @param genAiPlannerBundleMetaJson - The GenAiPlannerBundle metadata to read from * @returns { localTopics, localActions } - The local topics and the flattened local actions from all plugins */ -const getLocalAssets = ( +export const getLocalAssets = ( genAiPlannerBundleMetaJson: GenAiPlannerBundleExt ): { localTopics: GenAiPlugin[]; localActions: GenAiFunction[] } => { const rawLocalTopics = genAiPlannerBundleMetaJson.GenAiPlannerBundle.localTopics; diff --git a/test/commands/agent/generate/template.test.ts b/test/commands/agent/generate/template.test.ts new file mode 100644 index 00000000..ddc9960d --- /dev/null +++ b/test/commands/agent/generate/template.test.ts @@ -0,0 +1,208 @@ +/* + * Copyright 2026, Salesforce, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */ + +import { join } from 'node:path'; +import { expect } from 'chai'; +import esmock from 'esmock'; +import { SfError } from '@salesforce/core'; +import { TestContext } from '@salesforce/core/testSetup'; +import { SfProject } from '@salesforce/core'; +import type { GenAiPlugin, GenAiFunction } from '@salesforce/types/metadata'; +import { getLocalAssets, type GenAiPlannerBundleExt } from '../../../../src/commands/agent/generate/template.js'; + +const MOCK_PROJECT_DIR = join(process.cwd(), 'test', 'mock-projects', 'agent-generate-template'); + +const BOT_XML_NGA = ` + + true + EinsteinServiceAgent + TestBot + None + + Conversational +`; + +describe('agent generate template', () => { + const $$ = new TestContext(); + // Use existing bot in mock project so --agent-file exists check passes + const agentFile = join( + MOCK_PROJECT_DIR, + 'force-app', + 'main', + 'default', + 'bots', + 'Local_Info_Agent', + 'Local_Info_Agent.bot-meta.xml' + ); + const runArgs = (): string[] => ['--agent-file', agentFile, '--agent-version', '1', '--json']; + + beforeEach(() => { + $$.inProject(true); + const mockProject = { + getPath: () => MOCK_PROJECT_DIR, + getDefaultPackage: () => ({ fullPath: join(MOCK_PROJECT_DIR, 'force-app') }), + } as unknown as SfProject; + $$.SANDBOX.stub(SfProject, 'resolve').resolves(mockProject); + $$.SANDBOX.stub(SfProject, 'getInstance').returns(mockProject); + }); + + afterEach(() => { + $$.restore(); + }); + + it('should throw nga-agent-not-supported when is an NGA agent', async () => { + let readCount = 0; + const readFileSyncMock = (): string => { + readCount += 1; + return BOT_XML_NGA; + }; + const mod = await esmock('../../../../src/commands/agent/generate/template.js', { + 'node:fs': { + readFileSync: readFileSyncMock, + mkdirSync: () => {}, + writeFileSync: () => {}, + }, + }); + const AgentGenerateTemplate = mod.default; + + try { + await AgentGenerateTemplate.run(runArgs()); + expect.fail('Expected SfError (nga-agent-not-supported)'); + } catch (error) { + expect(error).to.be.instanceOf(SfError); + expect((error as SfError).message).to.match(/legacy agents|Agent Script|nga-agent-not-supported/i); + } + expect(readCount).to.equal(1); + }); + + it('should throw local-topics-without-source when a local topic has no source', () => { + const topicWithoutSource = { developerName: 'my_topic', fullName: 'my_topic' } as GenAiPlugin; + const bundle = { + GenAiPlannerBundle: { + localTopicLinks: [], + localTopics: [topicWithoutSource], + }, + } as unknown as GenAiPlannerBundleExt; + + try { + getLocalAssets(bundle); + expect.fail('Expected SfError (local-topics-without-source)'); + } catch (error) { + expect(error).to.be.instanceOf(SfError); + expect((error as SfError).message).to.match(/local topic|genAiPlugin|global topic|local-topics-without-source/i); + } + }); + + it('should throw local-actions-without-source when a local action has no source', () => { + const actionWithoutSource = { developerName: 'my_action', fullName: 'my_action' } as GenAiFunction; + const bundle = { + GenAiPlannerBundle: { + localTopicLinks: [], + plannerActions: [actionWithoutSource], + }, + } as unknown as GenAiPlannerBundleExt; + + try { + getLocalAssets(bundle); + expect.fail('Expected SfError (local-actions-without-source)'); + } catch (error) { + expect(error).to.be.instanceOf(SfError); + expect((error as SfError).message).to.match( + /local action|genAiFunction|global action|local-actions-without-source/i + ); + } + }); + it('returns topics without actions when plugins have no localActions', () => { + const topic = { + developerName: 'topic_a', + fullName: 'topic_a', + source: 'GlobalTopic_A', + } as GenAiPlugin; + const bundle = { + GenAiPlannerBundle: { + localTopicLinks: [], + localTopics: [topic], + }, + } as unknown as GenAiPlannerBundleExt; + + const { localTopics, localActions } = getLocalAssets(bundle); + + expect(localTopics).to.have.length(1); + expect(localTopics[0].developerName).to.equal('topic_a'); + expect(localTopics[0].source).to.equal('GlobalTopic_A'); + expect(localActions).to.deep.equal([]); + }); + + it('returns actions from both localActions (plugins) and plannerActions', () => { + const actionFromPlugin = { + developerName: 'plugin_action', + fullName: 'plugin_action', + source: 'GlobalPluginAction', + } as GenAiFunction; + const topicWithAction = { + developerName: 'topic_b', + fullName: 'topic_b', + source: 'GlobalTopic_B', + localActions: [actionFromPlugin], + } as GenAiPlugin; + const plannerAction = { + developerName: 'planner_action', + fullName: 'planner_action', + source: 'GlobalPlannerAction', + } as GenAiFunction; + const bundle = { + GenAiPlannerBundle: { + localTopicLinks: [], + localTopics: [topicWithAction], + plannerActions: [plannerAction], + }, + } as unknown as GenAiPlannerBundleExt; + + const { localTopics, localActions } = getLocalAssets(bundle); + + expect(localTopics).to.have.length(1); + expect(localTopics[0].developerName).to.equal('topic_b'); + expect(localActions).to.have.length(2); + expect(localActions[0].developerName).to.equal('plugin_action'); + expect(localActions[0].source).to.equal('GlobalPluginAction'); + expect(localActions[1].developerName).to.equal('planner_action'); + expect(localActions[1].source).to.equal('GlobalPlannerAction'); + }); + + it('returns only plannerActions when there are no localTopics', () => { + const plannerAction = { + developerName: 'solo_planner', + fullName: 'solo_planner', + source: 'GlobalSoloAction', + } as GenAiFunction; + const bundle = { + GenAiPlannerBundle: { + localTopicLinks: [], + localTopics: [], + plannerActions: [plannerAction], + }, + } as unknown as GenAiPlannerBundleExt; + + const { localTopics, localActions } = getLocalAssets(bundle); + + expect(localTopics).to.deep.equal([]); + expect(localActions).to.have.length(1); + expect(localActions[0].developerName).to.equal('solo_planner'); + expect(localActions[0].source).to.equal('GlobalSoloAction'); + }); +}); From 5efe4bebf50dfe1a2b1078c4e6542f7014f5a408 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Wed, 11 Mar 2026 17:34:22 +0000 Subject: [PATCH 24/25] chore(release): 1.32.1 [skip ci] --- CHANGELOG.md | 11 ++++++++ README.md | 73 ++++++++++++++++++++++++++++++---------------------- package.json | 2 +- 3 files changed, 54 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19f097e3..a1a3fc6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## [1.32.1](https://github.com/salesforcecli/plugin-agent/compare/1.32.0...1.32.1) (2026-03-11) + +### Bug Fixes + +- add --version flag to agent activate/deactivate ([af07c24](https://github.com/salesforcecli/plugin-agent/commit/af07c242b57b3265dc686e19e421715f4ac84684)) +- add guard for empty available versions and unit tests ([7dea3e4](https://github.com/salesforcecli/plugin-agent/commit/7dea3e488162f2ae90ad68944f900524ee871f17)) +- deactivate only one version anywyays ([4fe0098](https://github.com/salesforcecli/plugin-agent/commit/4fe0098c24a9bce63ff10b37b740cd6a846936c5)) +- edit ([c165ee9](https://github.com/salesforcecli/plugin-agent/commit/c165ee9f9bbf72c737ee9949bc93983d5e28e86c)) +- sort version choices descending so latest appears first ([bf3e742](https://github.com/salesforcecli/plugin-agent/commit/bf3e7423e939a5b41bf8f2dedd2619b356316ade)) +- usability, errors, tests ([a6dd2a7](https://github.com/salesforcecli/plugin-agent/commit/a6dd2a7109ffbecd46d618c77f70014c59fc4dc3)) + # [1.32.0](https://github.com/salesforcecli/plugin-agent/compare/1.31.3...1.32.0) (2026-03-09) ### Features diff --git a/README.md b/README.md index aebd1dc7..6f2f5e44 100644 --- a/README.md +++ b/README.md @@ -85,13 +85,17 @@ Activate an agent in an org. ``` USAGE - $ sf agent activate -o [--json] [--flags-dir ] [--api-version ] [-n ] + $ sf agent activate -o [--json] [--flags-dir ] [--api-version ] [-n ] [--version + ] FLAGS - -n, --api-name= API name of the agent to activate. + -n, --api-name= API name of the agent to activate; if not specified, the command provides a list that you + choose from. -o, --target-org= (required) Username or alias of the target org. Not required if the `target-org` configuration variable is already set. --api-version= Override the api version used for api requests made by this command + --version= Version number of the agent to activate; if not specified, the command provides a list that + you choose from. GLOBAL FLAGS --flags-dir= Import flag values from a directory. @@ -100,23 +104,29 @@ GLOBAL FLAGS DESCRIPTION Activate an agent in an org. - Activating an agent makes it immediately available to your users. An agent must be active before you can preview it - with the "agent preview" CLI command or VS Code. + Activating an agent makes it immediately available to your users. A published agent must be active before you can + preview it with the "agent preview" CLI command or VS Code. Agents can have multiple versions; only one version can be + active at a time. - You must know the agent's API name to activate it; you can either be prompted for it or you can specify it with the - --api-name flag. Find the agent's API name in its Agent Details page of your org's Agentforce Studio UI in Setup. + If you run the command without the --api-name or --version flags, the command provides a list of agent API names and + versions for you to choose from. Use the flags to specify the exact agent and version without being prompted. If you + use the --json flag and not --version, then the latest agent version is automatically activated. + + The value of the --version flag is always a number, corresponding to the "vX" part of the "BotVersion" metadata in + your project. For example, if you have a force-app/main/default/bots/My_Agent/v4.botVersion-meta.xml file in your + project, then you activate this version with the "--version 4" flag. EXAMPLES - Activate an agent in your default target org by being prompted: + Activate an agent in your default target org by being prompted for both its API name and version: $ sf agent activate - Activate an agent with API name Resort_Manager in the org with alias "my-org": + Activate version 2 of an agent with API name Resort_Manager in the org with alias "my-org": - $ sf agent activate --api-name Resort_Manager --target-org my-org + $ sf agent activate --api-name Resort_Manager --version 2 --target-org my-org ``` -_See code: [src/commands/agent/activate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/activate.ts)_ +_See code: [src/commands/agent/activate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/activate.ts)_ ## `sf agent create` @@ -183,7 +193,7 @@ EXAMPLES $ sf agent create --name "Resort Manager" --spec specs/resortManagerAgent.yaml --preview ``` -_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/create.ts)_ +_See code: [src/commands/agent/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/create.ts)_ ## `sf agent deactivate` @@ -194,7 +204,8 @@ USAGE $ sf agent deactivate -o [--json] [--flags-dir ] [--api-version ] [-n ] FLAGS - -n, --api-name= API name of the agent to deactivate. + -n, --api-name= API name of the agent to deactivate; if not specified, the command provides a list that you + choose from. -o, --target-org= (required) Username or alias of the target org. Not required if the `target-org` configuration variable is already set. --api-version= Override the api version used for api requests made by this command @@ -210,8 +221,8 @@ DESCRIPTION topics or actions, you must deactivate it. You can't preview an agent with the "agent preview" CLI command or VS Code if it's deactivated. - You must know the agent's API name to deactivate it; you can either be prompted for it or you can specify it with the - --api-name flag. Find the agent's API name in its Agent Details page of your org's Agentforce Studio UI in Setup. + If you run the command without the --api-name flag, the command provides a list of agent API names for you to choose + from. Use the flag to specify the exact agent without being prompted. EXAMPLES Deactivate an agent in your default target org by being prompted: @@ -223,7 +234,7 @@ EXAMPLES $ sf agent deactivate --api-name Resort_Manager --target-org my-org ``` -_See code: [src/commands/agent/deactivate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/deactivate.ts)_ +_See code: [src/commands/agent/deactivate.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/deactivate.ts)_ ## `sf agent generate agent-spec` @@ -330,7 +341,7 @@ EXAMPLES $ sf agent generate agent-spec --tone formal --agent-user resortmanager@myorg.com ``` -_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/agent-spec.ts)_ +_See code: [src/commands/agent/generate/agent-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/generate/agent-spec.ts)_ ## `sf agent generate authoring-bundle` @@ -407,7 +418,7 @@ EXAMPLES other-package-dir/main/default --target-org my-dev-org ``` -_See code: [src/commands/agent/generate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/authoring-bundle.ts)_ +_See code: [src/commands/agent/generate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/generate/authoring-bundle.ts)_ ## `sf agent generate template` @@ -455,7 +466,7 @@ EXAMPLES force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml --agent-version 1 ``` -_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/template.ts)_ +_See code: [src/commands/agent/generate/template.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/generate/template.ts)_ ## `sf agent generate test-spec` @@ -520,7 +531,7 @@ EXAMPLES force-app//main/default/aiEvaluationDefinitions/Resort_Manager_Tests.aiEvaluationDefinition-meta.xml ``` -_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/generate/test-spec.ts)_ +_See code: [src/commands/agent/generate/test-spec.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/generate/test-spec.ts)_ ## `sf agent preview` @@ -593,7 +604,7 @@ EXAMPLES $ sf agent preview --use-live-actions --apex-debug --output-dir transcripts/my-preview ``` -_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview.ts)_ +_See code: [src/commands/agent/preview.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/preview.ts)_ ## `sf agent preview end` @@ -648,7 +659,7 @@ EXAMPLES $ sf agent preview end --authoring-bundle My_Local_Agent ``` -_See code: [src/commands/agent/preview/end.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/end.ts)_ +_See code: [src/commands/agent/preview/end.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/preview/end.ts)_ ## `sf agent preview send` @@ -706,7 +717,7 @@ EXAMPLES $ sf agent preview send --utterance "what can you help me with?" --authoring-bundle My_Local_Agent ``` -_See code: [src/commands/agent/preview/send.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/send.ts)_ +_See code: [src/commands/agent/preview/send.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/preview/send.ts)_ ## `sf agent preview sessions` @@ -739,7 +750,7 @@ EXAMPLES $ sf agent preview sessions ``` -_See code: [src/commands/agent/preview/sessions.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/sessions.ts)_ +_See code: [src/commands/agent/preview/sessions.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/preview/sessions.ts)_ ## `sf agent preview start` @@ -796,7 +807,7 @@ EXAMPLES $ sf agent preview start --api-name My_Published_Agent ``` -_See code: [src/commands/agent/preview/start.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/preview/start.ts)_ +_See code: [src/commands/agent/preview/start.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/preview/start.ts)_ ## `sf agent publish authoring-bundle` @@ -845,7 +856,7 @@ EXAMPLES $ sf agent publish authoring-bundle --api-name MyAuthoringbundle --target-org my-dev-org ``` -_See code: [src/commands/agent/publish/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/publish/authoring-bundle.ts)_ +_See code: [src/commands/agent/publish/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/publish/authoring-bundle.ts)_ ## `sf agent test create` @@ -900,7 +911,7 @@ EXAMPLES $ sf agent test create --spec specs/Resort_Manager-testSpec.yaml --api-name Resort_Manager_Test --preview ``` -_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/create.ts)_ +_See code: [src/commands/agent/test/create.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/test/create.ts)_ ## `sf agent test list` @@ -935,7 +946,7 @@ EXAMPLES $ sf agent test list --target-org my-org ``` -_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/list.ts)_ +_See code: [src/commands/agent/test/list.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/test/list.ts)_ ## `sf agent test results` @@ -1001,7 +1012,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/results.ts)_ +_See code: [src/commands/agent/test/results.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/test/results.ts)_ ## `sf agent test resume` @@ -1074,7 +1085,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/resume.ts)_ +_See code: [src/commands/agent/test/resume.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/test/resume.ts)_ ## `sf agent test run` @@ -1148,7 +1159,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/test/run.ts)_ +_See code: [src/commands/agent/test/run.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/test/run.ts)_ ## `sf agent validate authoring-bundle` @@ -1195,6 +1206,6 @@ EXAMPLES $ sf agent validate authoring-bundle --api-name MyAuthoringBundle --target-org my-dev-org ``` -_See code: [src/commands/agent/validate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.0/src/commands/agent/validate/authoring-bundle.ts)_ +_See code: [src/commands/agent/validate/authoring-bundle.ts](https://github.com/salesforcecli/plugin-agent/blob/1.32.1/src/commands/agent/validate/authoring-bundle.ts)_ diff --git a/package.json b/package.json index ac3b669f..cea05d29 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/plugin-agent", "description": "Commands to interact with Salesforce agents", - "version": "1.32.0", + "version": "1.32.1", "author": "Salesforce", "bugs": "https://github.com/forcedotcom/cli/issues", "enableO11y": true, From 29949a38c156784fbd17642fadd6af4f8095827f Mon Sep 17 00:00:00 2001 From: Juliet Shackell Date: Thu, 12 Mar 2026 13:35:37 -0700 Subject: [PATCH 25/25] fix: small tweak to "agent generate template" help --- messages/agent.generate.template.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/messages/agent.generate.template.md b/messages/agent.generate.template.md index 0e65ffc9..a3821e56 100644 --- a/messages/agent.generate.template.md +++ b/messages/agent.generate.template.md @@ -1,15 +1,18 @@ # summary -WARNING: This command works with only legacy agents, which are agents that don't use Agent Script as their blueprint. You can't currently generate an agent template from an Agent Script agent. -Generate an agent template from an existing agent in your DX project so you can then package the template in a managed package. +Generate an agent template from an existing agent in your DX project so you can then package the template in a second-generation managed package. # description -At a high-level, agents are defined by the Bot, BotVersion, and GenAiPlannerBundle metadata types. The GenAiPlannerBundle type in turn defines the agent's topics and actions. This command uses the metadata files for these three types, located in your local DX project, to generate a BotTemplate file for a specific agent (Bot). You then use the BotTemplate file, along with the GenAiPlannerBundle file that references the BotTemplate, to package the template in a managed package that you can share between orgs or on AppExchange. +WARNING: This command works with only legacy agents, which are agents that don't use Agent Script as their blueprint. You can't currently generate an agent template from an Agent Script agent. + +At a high-level, agents are defined by the Bot, BotVersion, and GenAiPlannerBundle metadata types. The GenAiPlannerBundle type in turn defines the agent's topics and actions. This command uses the metadata files for these three types, located in your local DX project, to generate a BotTemplate metadata file for a specific agent (Bot). You then use the BotTemplate metadata file, along with the GenAiPlannerBundle metadata file that references the BotTemplate, to package the template in a managed package that you can share between orgs or on AppExchange. + +Use the --agent-file flag to specify the relative or full pathname of the Bot metadata file, such as force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml. A single Bot can have multiple BotVersions, so use the --agent-version flag to specify the version. The corresponding BotVersion metadata file must exist locally. For example, if you specify "--agent-version 4", then the file force-app/main/default/bots/My_Awesome_Agent/v4.botVersion-meta.xml must exist. -Use the --agent-file flag to specify the relative or full pathname of the Bot metadata file, such as force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml. A single Bot can have multiple BotVersions, so use the --agent-version flag to specify the version. The corresponding BotVersion file must exist locally. For example, if you specify "--agent-version 4", then the file force-app/main/default/bots/My_Awesome_Agent/v4.botVersion-meta.xml must exist. +The new BotTemplate metadata file is generated in the "botTemplates" directory in your local package directory, and has the name \_v\_Template.botTemplate-meta.xml, such as force-app/main/default/botTemplates/My_Awesome_Agent_v4_Template.botTemplate-meta.xml. The command displays the full pathname of the generated files when it completes. -The new BotTemplate file is generated in the "botTemplates" directory in your local package directory, and has the name \_v\_Template.botTemplate-meta.xml, such as force-app/main/default/botTemplates/My_Awesome_Agent_v4_Template.botTemplate-meta.xml. The command displays the full pathname of the generated files when it completes. +See "Develop and Package Agent Templates Using Scratch Orgs" (https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/dev2gp_package_agent_templates.htm) for details about the complete process, which includes using a scratch org to create and test the agent, retrieving the agent metadata to your DX project, running this command to create the agent template, and then packaging the template. # examples @@ -27,11 +30,11 @@ Path to an agent (Bot) metadata file. # error.invalid-agent-file -Invalid Agent file. Must be a Bot metadata file. Example: force-app/main/default/bots/MyBot/MyBot.bot-meta.xml +Invalid Agent file. Must be a Bot metadata file. Example: force-app/main/default/bots/MyBot/MyBot.bot-meta.xml. # error.no-entry-dialog -No entryDialog found in BotVersion file. +No entryDialog found in the BotVersion metadata file. # error.invalid-bot-type @@ -39,7 +42,7 @@ The 'type' attribute of this Bot metadata component XML file can't have a value # error.no-label -No label found in Agent (Bot) file: %s. +No label found in Agent (Bot) metadata file: %s. # error.no-ml-domain