diff --git a/README.md b/README.md index a0a0b489..38e2e2c5 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ $ npm install -g @salesforce/cli $ sf COMMAND running command... $ sf (--version|-v) -@salesforce/cli/2.115.13 linux-x64 node-v22.21.1 +@salesforce/cli/2.115.14 linux-x64 node-v22.21.1 $ sf --help [COMMAND] USAGE $ sf COMMAND @@ -46,14 +46,17 @@ See [architecture page](ARCHITECTURE.md) for diagrams of the Salesforce CLI. - [`sf agent create`](#sf-agent-create) - [`sf agent deactivate`](#sf-agent-deactivate) - [`sf agent generate agent-spec`](#sf-agent-generate-agent-spec) +- [`sf agent generate authoring-bundle`](#sf-agent-generate-authoring-bundle) - [`sf agent generate template`](#sf-agent-generate-template) - [`sf agent generate test-spec`](#sf-agent-generate-test-spec) - [`sf agent preview`](#sf-agent-preview) +- [`sf agent publish authoring-bundle`](#sf-agent-publish-authoring-bundle) - [`sf agent test create`](#sf-agent-test-create) - [`sf agent test list`](#sf-agent-test-list) - [`sf agent test results`](#sf-agent-test-results) - [`sf agent test resume`](#sf-agent-test-resume) - [`sf agent test run`](#sf-agent-test-run) +- [`sf agent validate authoring-bundle`](#sf-agent-validate-authoring-bundle) - [`sf alias list`](#sf-alias-list) - [`sf alias set`](#sf-alias-set) - [`sf alias unset`](#sf-alias-unset) @@ -244,7 +247,7 @@ EXAMPLES $ sf agent activate --api-name Resort_Manager --target-org my-org ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/activate.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/activate.ts)_ ## `sf agent create` @@ -272,6 +275,11 @@ GLOBAL FLAGS DESCRIPTION Create an agent in your org using a local agent spec file. + NOTE: This command creates an agent that doesn't use Agent Script as its blueprint. We generally don't recommend you + use this workflow to create an agent. Rather, use the "agent generate|validate|publish authoring-bundle" commands to + author agents that use the Agent Script language. See "Author an Agent" + (https://developer.salesforce.com/docs/einstein/genai/guide/agent-dx-nga-author-agent.html) for details. + To run this command, you must have an agent spec file, which is a YAML file that define the agent properties and contains a list of AI-generated topics. Topics define the range of jobs the agent can handle. Use the "agent generate agent-spec" CLI command to generate an agent spec file. Then specify the file to this command using the --spec flag, @@ -306,7 +314,7 @@ EXAMPLES $ sf agent create --name "Resort Manager" --spec specs/resortManagerAgent.yaml --preview ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/create.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/create.ts)_ ## `sf agent deactivate` @@ -346,7 +354,7 @@ EXAMPLES $ sf agent deactivate --api-name Resort_Manager --target-org my-org ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/deactivate.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/deactivate.ts)_ ## `sf agent generate agent-spec` @@ -397,10 +405,9 @@ GLOBAL FLAGS DESCRIPTION Generate an agent spec, which is a YAML file that captures what an agent can do. - The first step in creating an agent in your org with Salesforce CLI is to generate an agent spec using this command. - An agent spec is a YAML-formatted file that contains information about the agent, such as its role and company - description, and then an AI-generated list of topics based on this information. Topics define the range of jobs your - agent can handle. + An agent spec is a YAML-formatted file that contains basic information about the agent, such as its role, company + description, and an AI-generated list of topics based on this information. Topics define the range of jobs your agent + can handle. Use flags, such as --role and --company-description, to provide details about your company and the role that the agent plays in your company. If you prefer, you can also be prompted for the basic information; use --full-interview to be @@ -418,8 +425,11 @@ DESCRIPTION add context to the agent's prompts, the tone of the prompts, and the username of a user in the org to assign to the agent. - When your agent spec is ready, you then create the agent in your org by running the "agent create" CLI command and - specifying the spec with the --spec flag. + When your agent spec is ready, generate an authoring bundle from it by passing the spec file to the --spec flag of the + "agent generate authoring-bundle" CLI command. An authoring bundle is a metadata type that contains an Agent Script + file, which is the blueprint for an agent. (While not recommended, you can also use the agent spec file to immediately + create an agent with the "agent create" command. We don't recommend this workflow because these types of agents don't + use Agent Script, and are thus less flexible and more difficult to maintain.) EXAMPLES Generate an agent spec in the default location and use flags to specify the agent properties, such as its role and @@ -451,7 +461,73 @@ EXAMPLES $ sf agent generate agent-spec --tone formal --agent-user resortmanager@myorg.com ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/generate/agent-spec.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/generate/agent-spec.ts)_ + +## `sf agent generate authoring-bundle` + +Generate an authoring bundle from an existing agent spec YAML file. + +``` +USAGE + $ sf agent generate authoring-bundle -o [--json] [--flags-dir ] [--api-name ] [--api-version ] [-f + ] [-d ] [-n ] + +FLAGS + -d, --output-dir= Directory where the authoring bundle files are generated. + -f, --spec= Path to the agent spec YAML file; if not specified, the command provides a list that you + can choose from. + -n, --name= Name (label) of the authoring bundle; if not specified, you're prompted for the name. + -o, --target-org= (required) Username or alias of the target org. Not required if the `target-org` + configuration variable is already set. + --api-name= API name of the new authoring bundle; if not specified, the API name is derived from the + authoring bundle name (label); the API name can't exist in the org. + --api-version= Override the api version used for api requests made by this command + +GLOBAL FLAGS + --flags-dir= Import flag values from a directory. + --json Format output as json. + +DESCRIPTION + Generate an authoring bundle from an existing agent spec YAML file. + + Authoring bundles are metadata components that contain an agent's Agent Script file. The Agent Script file is the + agent's blueprint; it fully describes what the agent can do using the Agent Script language. + + Use this command to generate a new authoring bundle based on an agent spec YAML file, which you create with the "agent + generate agent-spec" command. The agent spec YAML file is a high-level description of the agent; it describes its + essence rather than exactly what it can do. + + The metadata type for authoring bundles is aiAuthoringBundle, which consist of a standard + ".bundle-meta.xml" metadata file and the Agent Script file (with extension ".agent"). When you run + this command, the new authoring bundle is generated in the force-app/main/default/aiAuthoringBundles/ + directory. Use the --output-dir flag to generate them elsewhere. + + After you generate the initial authoring bundle, code the Agent Script file so your agent behaves exactly as you want. + The Agent Script file generated by this command is just a first draft of your agent! Interactively test the agent by + conversing with it using the "agent preview" command. Then publish the agent to your org with the "agent publish + authoring-bundle" command. + + This command requires an org because it uses it to access an LLM for generating the Agent Script file. + +EXAMPLES + Generate an authoring bundle by being prompted for all required values, such as the agent spec YAML file, the bundle + name, and the API name; use your default org: + + $ sf agent generate authoring-bundle + + Generate an authoring bundle from the "specs/agentSpec.yaml" agent spec YAML file and give it the label "My + Authoring Bundle"; use your default org: + + $ sf agent generate authoring-bundle --spec specs/agentSpec.yaml --name "My Authoring Bundle" + + Similar to previous example, but generate the authoring bundle files in the "other-package-dir/main/default" package + directory; use the org with alias "my-dev-org": + + $ sf agent generate authoring-bundle --spec specs/agentSpec.yaml --name "My Authoring Bundle" --output-dir \ + other-package-dir/main/default --target-org my-dev-org +``` + +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/generate/authoring-bundle.ts)_ ## `sf agent generate template` @@ -499,7 +575,7 @@ EXAMPLES force-app/main/default/bots/My_Awesome_Agent/My_Awesome_Agent.bot-meta.xml --agent-version 1 ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/generate/template.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/generate/template.ts)_ ## `sf agent generate test-spec` @@ -560,71 +636,133 @@ EXAMPLES force-app//main/default/aiEvaluationDefinitions/Resort_Manager_Tests.aiEvaluationDefinition-meta.xml ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/generate/test-spec.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/generate/test-spec.ts)_ ## `sf agent preview` -Interact with an active agent to preview how the agent responds to your statements, questions, and commands (utterances). +Interact with an agent to preview how it responds to your statements, questions, and commands (utterances). ``` USAGE - $ sf agent preview (-c -o ) [--flags-dir ] [--api-version ] [-n ] [-d - ] [-x] + $ sf agent preview [--flags-dir ] [--api-version ] (-c -o ) [-n ] + [--authoring-bundle ] [-d ] [-x] [--use-live-actions] FLAGS - -c, --client-app= (required) Name of the linked client app to use for the agent connection. You must have - previously created this link with "org login web --client-app". Run "org display" to see - the available linked client apps. - -d, --output-dir= Directory where conversation transcripts are saved. - -n, --api-name= API name of the agent you want to interact with. - -o, --target-org= (required) Username or alias of the target org. Not required if the `target-org` - configuration variable is already set. - -x, --apex-debug Enable Apex debug logging during the agent preview conversation. - --api-version= Override the api version used for api requests made by this command + -c, --client-app= Name of the linked client app to use for the connection to the published and active + agent. + -d, --output-dir= Directory where conversation transcripts are saved. + -n, --api-name= API name of the published and active agent you want to interact with. + -o, --target-org= (required) Username or alias of the target org. Not required if the `target-org` + configuration variable is already set. + -x, --apex-debug Enable Apex debug logging during the agent preview conversation. + --api-version= Override the api version used for api requests made by this command + --authoring-bundle= API name of the authoring bundle metadata component that contains the agent's Agent + Script file. + --use-live-actions Use real actions in the org; if not specified, preview uses AI to simulate (mock) + actions. GLOBAL FLAGS --flags-dir= Import flag values from a directory. DESCRIPTION - Interact with an active agent to preview how the agent responds to your statements, questions, and commands - (utterances). + Interact with an agent to preview how it responds to your statements, questions, and commands (utterances). + + Use this command to have a natural language conversation with an agent while you code its Agent Script file. + Previewing an agent works like an initial test to make sure it responds to your utterances as you expect. For example, + you can test that the agent uses a particular topic when asked a question, and then whether it invokes the correct + action associated with that topic. This command is the CLI-equivalent of the Preview panel in your org's Agentforce + Builder UI. - Use this command to have a natural language conversation with an active agent in your org, as if you were an actual - user. The interface is simple: in the "Start typing..." prompt, enter a statement, question, or command; when you're - done, enter Return. Your utterance is posted on the right along with a timestamp. The agent then responds on the left. - To exit the conversation, hit ESC or Control+C. + This command uses the agent's local authoring bundle, which contains its Agent Script file. You can let the command + provide a list of authoring bundles (labeled "(Agent Script)") to choose from or use the --authoring-bundle flag to + specify a bundle's API name. - This command is useful to test if the agent responds to your utterances as you expect. For example, you can test that - the agent uses a particular topic when asked a question, and then whether it invokes the correct action associated - with that topic. This command is the CLI-equivalent of the Conversation Preview panel in your org's Agent Builder UI. + You can use these two modes when previewing an agent from its Agent Script file: + + - Simulated mode (Default): Uses only the Agent Script file to converse, and it simulates (mocks) all the actions. Use + this mode if none of the Apex classes, flows, and prompt templates that implement your actions are available yet. The + LLM uses the information about topics in the Agent Script file to simulate what the action does or how it responds. + - Live mode: Uses the actual Apex classes, flows, and prompt templates in your development org in the agent preview. + If you've changed the Apex classe, flows, or prompt templates in your local DX project, then you must deploy them to + your development org if you want to use them in your live preview. You can use the Apex Replay Debugger to debug your + Apex classes when using live mode. + + The interface is simple: in the "Start typing..." prompt, enter a statement, question, or command; when you're done, + enter Return. Your utterance is posted on the right along with a timestamp. The agent then responds on the left. To + exit the conversation, hit ESC or Control+C. When the session concludes, the command asks if you want to save the API responses and chat transcripts. By default, - the files are saved to the "./temp/agent-preview" directory. Specify a new default directory by setting the - environment variable "SF_AGENT_PREVIEW_OUTPUT_DIR" to the directory. Or you can pass the directory to the --output-dir + the files are saved to the "./temp/agent-preview" directory. Specify a new default directory with the --output-dir flag. - Find the agent's API name in its Agent Details page of your org's Agentforce Studio UI in Setup. If your agent is - currently deactivated, use the "agent activate" CLI command to activate it. + NOTE: You can also use this command to connect to a published and active agent, which are labeled "(Published)" if you + let this command provide the list of agents to preview. That use case, however, requires additional security and + configuration in both your org and your DX project. The examples in this help are for previewing an agent from its + Agent Script file in your DX project and require only simple authorization of your org, such as with the "org login + web" command. The --client-app and --api-name flags are used only for previewing published and active agents, they + don't apply to Agent Script agents. See "Connect to a Published Agent" in the "Agentforce Developer Guide" for + complete documentation: https://developer.salesforce.com/docs/einstein/genai/guide/agent-dx-preview.html. + +EXAMPLES + Preview an agent in simulated mode by choosing from a list of authoring bundles provided by the command; use the org + with alias "my-dev-org": + + $ sf agent preview --target-org my-dev-org + + Preview an agent in live mode by choosing from a list of authoring bundles. Save the conversation transcripts to the + "./transcripts/my-preview" directory, enable the Apex debug logs, and use your default org: + + $ sf agent preview --use-live-actions --apex-debug --output-dir transcripts/my-preview +``` + +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/preview.ts)_ + +## `sf agent publish authoring-bundle` + +Publish an authoring bundle to your org, which results in a new agent or a new version of an existing agent. + +``` +USAGE + $ sf agent publish authoring-bundle -o [--json] [--flags-dir ] [--api-version ] [-n ] - IMPORTANT: Before you use this command, you must complete a number of configuration steps in your org and your DX - project. The examples in this help assume you've completed the steps. See "Preview an Agent" in the "Agentforce - Developer Guide" for complete documentation: - https://developer.salesforce.com/docs/einstein/genai/guide/agent-dx-preview.html. +FLAGS + -n, --api-name= API name of the authoring bundle you want to publish; if not specified, the command + provides a list that you can 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 + +GLOBAL FLAGS + --flags-dir= Import flag values from a directory. + --json Format output as json. + +DESCRIPTION + Publish an authoring bundle to your org, which results in a new agent or a new version of an existing agent. + + An authoring bundle is a metadata type (named aiAuthoringBundle) that provides the blueprint for an agent. The + metadata type contains two files: the standard metatada XML file and an Agent Script file (extension ".agent") that + fully describes the agent using the Agent Script language. + + When you publish an authoring bundle to your org, a number of things happen. First, this command validates that the + Agent Script file successfully compiles. If there are compilation errors, the command exits and you must fix the Agent + Script file to continue. Once the Agent Script file compiles, then it's published to the org, which in turn creates + new associated metadata (Bot, BotVersion, GenAiX), or new versions of the metadata if the agent already exists. The + new or updated metadata is retrieved back to your DX project, and then the authoring bundle metadata + (AiAuthoringBundle) is deployed to your org. + + This command uses the API name of the authoring bundle. EXAMPLES - Interact with an agent with API name Resort_Manager in the org with alias "my-org" and the linked "agent-app" - connected app: + Publish an authoring bundle by being prompted for its API name; use your default org: - $ sf agent preview --api-name Resort_Manager --target-org my-org --client-app agent-app + $ sf agent publish authoring-bundle - Same as the preceding example, but this time save the conversation transcripts to the "./transcripts/my-preview" - directory rather than the default "./temp/agent-preview": + Publish an authoring bundle with API name MyAuthoringBundle to the org with alias "my-dev-org": - $ sf agent preview --api-name Resort_Manager --target-org my-org --client-app agent-app --output-dir \ - transcripts/my-preview + $ sf agent publish authoring-bundle --api-name MyAuthoringbundle --target-org my-dev-org ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/preview.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/publish/authoring-bundle.ts)_ ## `sf agent test create` @@ -679,7 +817,7 @@ EXAMPLES $ sf agent test create --spec specs/Resort_Manager-testSpec.yaml --api-name Resort_Manager_Test --preview ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/test/create.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/test/create.ts)_ ## `sf agent test list` @@ -714,7 +852,7 @@ EXAMPLES $ sf agent test list --target-org my-org ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/test/list.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/test/list.ts)_ ## `sf agent test results` @@ -780,7 +918,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/test/results.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/test/results.ts)_ ## `sf agent test resume` @@ -853,7 +991,7 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/test/resume.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/test/resume.ts)_ ## `sf agent test run` @@ -927,7 +1065,54 @@ FLAG DESCRIPTIONS expression when using custom evaluations. ``` -_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.24.35/src/commands/agent/test/run.ts)_ +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/test/run.ts)_ + +## `sf agent validate authoring-bundle` + +Validate an authoring bundle to ensure its Agent Script file compiles successfully and can be used to publish an agent. + +``` +USAGE + $ sf agent validate authoring-bundle -o [--json] [--flags-dir ] [--api-version ] [-n ] + +FLAGS + -n, --api-name= API name of the authoring bundle you want to validate; if not specified, the command + provides a list that you can 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 + +GLOBAL FLAGS + --flags-dir= Import flag values from a directory. + --json Format output as json. + +DESCRIPTION + Validate an authoring bundle to ensure its Agent Script file compiles successfully and can be used to publish an + agent. + + An authoring bundle is a metadata type (named aiAuthoringBundle) that provides the blueprint for an agent. The + metadata type contains two files: the standard metatada XML file and an Agent Script file (extension ".agent") that + fully describes the agent using the Agent Script language. + + This command validates that the Agent Script file in the authoring bundle compiles without errors so that you can + later publish the bundle to your org. Use this command while you code the Agent Script file to ensure that it's valid. + If the validation fails, the command outputs the list of syntax errors, a brief description of the error, and the + location in the Agent Script file where the error occurred. + + This command uses the API name of the authoring bundle. If you don't provide an API name with the --api-name flag, the + command searches the current DX project and outputs a list of authoring bundles that it found for you to choose from. + +EXAMPLES + Validate an authoring bundle by being prompted for its API name; use your default org: + + $ sf agent validate authoring-bundle + + Validate an authoring bundle with API name MyAuthoringBundle; use the org with alias "my-dev-org": + + $ sf agent validate authoring-bundle --api-name MyAuthoringBundle --target-org my-dev-org +``` + +_See code: [@salesforce/plugin-agent](https://github.com/salesforcecli/plugin-agent/blob/1.25.1/src/commands/agent/validate/authoring-bundle.ts)_ ## `sf alias list` diff --git a/package.json b/package.json index 3bf6cbce..4f46bd77 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/cli", "description": "The Salesforce CLI", - "version": "2.115.13", + "version": "2.115.14", "author": "Salesforce", "bin": { "sf": "./bin/run.js", @@ -155,9 +155,9 @@ "@oclif/plugin-version": "2.2.36", "@oclif/plugin-warn-if-update-available": "3.1.53", "@oclif/plugin-which": "3.2.42", - "@salesforce/core": "^8.9.1", + "@salesforce/core": "8.24.0", "@salesforce/kit": "^3.1.6", - "@salesforce/plugin-agent": "1.24.35", + "@salesforce/plugin-agent": "1.25.1", "@salesforce/plugin-apex": "3.8.10", "@salesforce/plugin-api": "1.3.3", "@salesforce/plugin-auth": "3.9.22", diff --git a/yarn.lock b/yarn.lock index 47be0199..f7398d96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1324,6 +1324,18 @@ resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.10.tgz#11ed564ec78432a200ea2601a212d24af8150d50" integrity sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA== +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" @@ -2046,18 +2058,18 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@salesforce/agents@^0.18.2": - version "0.18.2" - resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-0.18.2.tgz#c061e31449501a0fcbd48cc3c35f3f613ac1a06c" - integrity sha512-JarlWF9WUp3/qKm73E5dK6BERnqz/fmy+x9r6zeO4YDmLvc1oZV6ufNcXOEN9pmPHh6D0qBWOBJ1IlBHQPIUig== +"@salesforce/agents@^0.19.6": + version "0.19.6" + resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-0.19.6.tgz#70427fbb7868f8a38732e0b7914320a7dd1f4524" + integrity sha512-HbQSULk2m0tB9R3Mf1E1+4hC6MZlVBMADiJ3iyHAKHYVHF9C5h138MK579zPLYaKWydSBJ6OL6ZKnZsOVShzjQ== dependencies: - "@salesforce/core" "^8.19.1" - "@salesforce/kit" "^3.2.3" - "@salesforce/source-deploy-retrieve" "^12.22.2" - "@salesforce/types" "^1.4.0" - fast-xml-parser "^5.2.5" + "@salesforce/core" "^8.23.5" + "@salesforce/kit" "^3.2.4" + "@salesforce/source-deploy-retrieve" "^12.30.0" + "@salesforce/types" "^1.5.0" + fast-xml-parser "^5.3.2" nock "^13.5.6" - yaml "^2.8.1" + yaml "^2.8.2" "@salesforce/apex-node@^8.3.5", "@salesforce/apex-node@^8.3.8": version "8.3.8" @@ -2090,14 +2102,13 @@ strip-ansi "6.0.1" ts-retry-promise "^0.8.1" -"@salesforce/core@^8.18.1", "@salesforce/core@^8.18.7", "@salesforce/core@^8.19.1", "@salesforce/core@^8.23.2", "@salesforce/core@^8.23.3", "@salesforce/core@^8.23.4", "@salesforce/core@^8.23.5", "@salesforce/core@^8.5.1", "@salesforce/core@^8.8.0", "@salesforce/core@^8.8.1", "@salesforce/core@^8.8.5", "@salesforce/core@^8.9.1": - version "8.23.5" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.23.5.tgz#fc4a18a814ff3c6c0c3a138a0369441595ef74a2" - integrity sha512-EOA4JzvYk5KZ7YJ6mnBrHCrR0e1x7ellb6e8s4/+kIGGYU8mMnD0PYIUnc2jjYKXujY1hPgdQh39NLBQiQmt8g== +"@salesforce/core@8.24.0", "@salesforce/core@^8.18.1", "@salesforce/core@^8.18.7", "@salesforce/core@^8.23.3", "@salesforce/core@^8.23.4", "@salesforce/core@^8.23.5", "@salesforce/core@^8.23.7", "@salesforce/core@^8.5.1", "@salesforce/core@^8.8.0", "@salesforce/core@^8.8.1", "@salesforce/core@^8.8.5": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.24.0.tgz#13426f9f3b5ed0ec126b8009e5eda68e03db0401" + integrity sha512-8Ra5RT95bRkmHmaaFgABwkXbnHNSNS7l9gbJzJgO6VQpaEeytGPPyymnAE7TcTM2xp/QwlXn+PgX4biX7Lb7JA== dependencies: "@jsforce/jsforce-node" "^3.10.10" "@salesforce/kit" "^3.2.4" - "@salesforce/schemas" "^1.10.3" "@salesforce/ts-types" "^2.0.12" ajv "^8.17.1" change-case "^4.1.2" @@ -2105,7 +2116,7 @@ faye "^1.4.1" form-data "^4.0.4" js2xmlparser "^4.0.1" - jsonwebtoken "9.0.2" + jsonwebtoken "9.0.3" jszip "3.10.1" memfs "^4.30.1" pino "^9.7.0" @@ -2114,6 +2125,7 @@ proper-lockfile "^4.1.2" semver "^7.7.3" ts-retry-promise "^0.8.1" + zod "^4.1.12" "@salesforce/dev-config@^4.3.1": version "4.3.1" @@ -2187,23 +2199,24 @@ jszip "^3.10.1" object-treeify "^2" -"@salesforce/plugin-agent@1.24.35": - version "1.24.35" - resolved "https://registry.yarnpkg.com/@salesforce/plugin-agent/-/plugin-agent-1.24.35.tgz#efff8b76fac05c020956bd8c0f30d0e50b0238e9" - integrity sha512-JcXxo7xAKFSo0FhR8xAhAvP1/l/0Z35+E19M+Z6hEN3uqSFouxv+ZdfjnDdx6vtuAgN1zHbbqIbVO14azsm6gw== +"@salesforce/plugin-agent@1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@salesforce/plugin-agent/-/plugin-agent-1.25.1.tgz#22c776285ae0b9120a654317c97b8bb9b60eb618" + integrity sha512-6AJsVIjRvpkyC1RxtmQ/0PsLBnb3T3jMOqt+Ra6MoYAbELuOFpcp71nWlL1QWrfnDMytcLM6O6FfLjcraJsQ+A== dependencies: "@inquirer/core" "^10.3.2" "@inquirer/prompts" "^7.10.1" "@oclif/core" "^4" "@oclif/multi-stage-output" "^0.8.29" - "@salesforce/agents" "^0.18.2" - "@salesforce/core" "^8.23.2" + "@salesforce/agents" "^0.19.6" + "@salesforce/core" "^8.23.7" "@salesforce/kit" "^3.2.3" "@salesforce/sf-plugins-core" "^12.2.6" "@salesforce/source-deploy-retrieve" "^12.30.0" "@salesforce/types" "^1.5.0" ansis "^3.3.2" fast-xml-parser "^4.5.1" + glob "^11.0.3" ink "5.0.1" ink-text-input "^6.0.0" inquirer-autocomplete-standalone "^0.8.1" @@ -2525,7 +2538,7 @@ string-width "^7.2.0" terminal-link "^3.0.0" -"@salesforce/source-deploy-retrieve@^12.22.2", "@salesforce/source-deploy-retrieve@^12.24.0", "@salesforce/source-deploy-retrieve@^12.26.1", "@salesforce/source-deploy-retrieve@^12.28.0", "@salesforce/source-deploy-retrieve@^12.30.0": +"@salesforce/source-deploy-retrieve@^12.24.0", "@salesforce/source-deploy-retrieve@^12.26.1", "@salesforce/source-deploy-retrieve@^12.28.0", "@salesforce/source-deploy-retrieve@^12.30.0": version "12.30.0" resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.30.0.tgz#cae4e00b5f9f301f28d9224997f63bfa5a7ede1b" integrity sha512-elfNE4NRw2JNRsYoS/e9Gi2KdaFg7c2JVdRY6ZT20vpxV3z81SvvbYhauiKOYkVvsP3Y+FBEzWiG6AwdF0fSWA== @@ -2599,7 +2612,7 @@ resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-2.0.12.tgz#60420622812a7ec7e46d220667bc29b42dc247ff" integrity sha512-BIJyduJC18Kc8z+arUm5AZ9VkPRyw1KKAm+Tk+9LT99eOzhNilyfKzhZ4t+tG2lIGgnJpmytZfVDZ0e2kFul8g== -"@salesforce/types@^1.2.0", "@salesforce/types@^1.4.0", "@salesforce/types@^1.5.0": +"@salesforce/types@^1.2.0", "@salesforce/types@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@salesforce/types/-/types-1.5.0.tgz#dd1db8651ae9729c133ee5224ec7fbf50b1087ad" integrity sha512-zBihdJ6WwE0JP6BVCXhm7guMQlj4/7nCYqtrkozgxgeKLJq+zKrTRwILeRQbbeqVP4nKjUz/AJr0zCDjrA2IVg== @@ -4158,9 +4171,9 @@ browserslist@^4.23.0, browserslist@^4.24.0: node-releases "^2.0.19" update-browserslist-db "^1.1.1" -buffer-equal-constant-time@1.0.1: +buffer-equal-constant-time@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-from@^1.0.0: @@ -5868,7 +5881,7 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== -fast-xml-parser@5.2.5, fast-xml-parser@^5.2.5: +fast-xml-parser@5.2.5: version "5.2.5" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz#4809fdfb1310494e341098c25cb1341a01a9144a" integrity sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ== @@ -5882,6 +5895,13 @@ fast-xml-parser@^4.5.0, fast-xml-parser@^4.5.1, fast-xml-parser@^4.5.3: dependencies: strnum "^1.1.1" +fast-xml-parser@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.3.2.tgz#78a51945fbf7312e1ff6726cb173f515b4ea11d8" + integrity sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA== + dependencies: + strnum "^2.1.0" + fastest-levenshtein@^1.0.16, fastest-levenshtein@^1.0.7: version "1.0.16" resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" @@ -6046,7 +6066,7 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -foreground-child@^3.1.0, foreground-child@^3.3.0: +foreground-child@^3.1.0, foreground-child@^3.3.0, foreground-child@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== @@ -6318,6 +6338,18 @@ glob@^10.2.2, glob@^10.3.10, glob@^10.4.5: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" +glob@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.1.0.tgz#4f826576e4eb99c7dad383793d2f9f08f67e50a6" + integrity sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw== + dependencies: + foreground-child "^3.3.1" + jackspeak "^4.1.1" + minimatch "^10.1.1" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" + glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -7311,6 +7343,13 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" + integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + jake@^10.8.5: version "10.8.7" resolved "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz" @@ -7466,12 +7505,12 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jsonwebtoken@9.0.2: - version "9.0.2" - resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" - integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== +jsonwebtoken@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#6cd57ab01e9b0ac07cb847d53d3c9b6ee31f7ae2" + integrity sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g== dependencies: - jws "^3.2.2" + jws "^4.0.1" lodash.includes "^4.3.0" lodash.isboolean "^3.0.3" lodash.isinteger "^4.0.4" @@ -7517,21 +7556,21 @@ just-extend@^6.2.0: resolved "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz" integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== +jwa@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" + integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== dependencies: - buffer-equal-constant-time "1.0.1" + buffer-equal-constant-time "^1.0.1" ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== +jws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690" + integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== dependencies: - jwa "^1.4.1" + jwa "^2.0.1" safe-buffer "^5.0.1" keyv@^4.0.0, keyv@^4.5.3: @@ -7916,6 +7955,11 @@ lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== +lru-cache@^11.0.0: + version "11.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d" + integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -8193,6 +8237,13 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" +minimatch@^10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" + integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -9192,6 +9243,14 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" 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== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@^1.7.0: version "1.8.0" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" @@ -11420,10 +11479,10 @@ yallist@^5.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== -yaml@^2.5.1, yaml@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79" - integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== +yaml@^2.5.1, yaml@^2.8.1, yaml@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== yargs-parser@^18.1.2: version "18.1.3" @@ -11531,6 +11590,11 @@ yoga-wasm-web@~0.3.3: resolved "https://registry.yarnpkg.com/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz#eb8e9fcb18e5e651994732f19a220cb885d932ba" integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA== +zod@^4.1.12: + version "4.1.13" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.13.tgz#93699a8afe937ba96badbb0ce8be6033c0a4b6b1" + integrity sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig== + zwitch@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"