sfdx-hardis 6.14.1 → 6.14.4-beta202512080425.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5808,243 +5808,6 @@
5808
5808
  "import:files:org:hardis"
5809
5809
  ]
5810
5810
  },
5811
- "hardis:org:fix:listviewmine": {
5812
- "aliases": [],
5813
- "args": {},
5814
- "description": "Fix listviews whose scope Mine has been replaced by Everything\n\n[![Invalid scope:Mine, not allowed ? Deploy your ListViews anyway !](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-invalid-scope-mine.jpg)](https://nicolas.vuillamy.fr/invalid-scope-mine-not-allowed-deploy-your-listviews-anyway-443aceca8ac7)\n\nList of ListViews can be:\n\n- read from .sfdx-hardis.yml file in property **listViewsToSetToMine**\n- sent in argument listviews\n\nNote: property **listViewsToSetToMine** can be auto-generated by command hardis:work:save if .sfdx-hardis.yml contains the following configuration\n\n```yaml\nautoCleanTypes:\n - listViewsMine\n```\n\n- Example of sfdx-hardis.yml property `listViewsToSetToMine`:\n\n```yaml\nlistViewsToSetToMine:\n - \"force-app/main/default/objects/Operation__c/listViews/MyCurrentOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Operation__c/listViews/MyFinalizedOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/Default_Opportunity_Pipeline.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MyCurrentSubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MySubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Account/listViews/MyActivePartners.listView-meta.xml\"\n```\n\n- If manually written, this could also be:\n\n```yaml\nlistViewsToSetToMine:\n - \"Operation__c:MyCurrentOperations\"\n - \"Operation__c:MyFinalizedOperations\"\n - \"Opportunity:Default_Opportunity_Pipeline\"\n - \"Opportunity:MyCurrentSubscriptions\"\n - \"Opportunity:MySubscriptions\"\n - \"Account:MyActivePartners\"\n```\n\nTroubleshooting: if you need to run this command from an alpine-linux based docker image, use this workaround in your dockerfile:\n\n```dockerfile\n# Do not use puppeteer embedded chromium\nRUN apk add --update --no-cache chromium\nENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=\"true\"\nENV CHROMIUM_PATH=\"/usr/bin/chromium-browser\"\nENV PUPPETEER_EXECUTABLE_PATH=\"$\\{CHROMIUM_PATH}\" // remove \\ before {\n```\n",
5815
- "examples": [
5816
- "$ sf hardis:org:fix:listviewmine",
5817
- "$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
5818
- ],
5819
- "flags": {
5820
- "json": {
5821
- "description": "Format output as json.",
5822
- "helpGroup": "GLOBAL",
5823
- "name": "json",
5824
- "allowNo": false,
5825
- "type": "boolean"
5826
- },
5827
- "flags-dir": {
5828
- "helpGroup": "GLOBAL",
5829
- "name": "flags-dir",
5830
- "summary": "Import flag values from a directory.",
5831
- "hasDynamicHelp": false,
5832
- "multiple": false,
5833
- "type": "option"
5834
- },
5835
- "listviews": {
5836
- "char": "l",
5837
- "description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
5838
- "name": "listviews",
5839
- "hasDynamicHelp": false,
5840
- "multiple": false,
5841
- "type": "option"
5842
- },
5843
- "debug": {
5844
- "char": "d",
5845
- "description": "Activate debug mode (more logs)",
5846
- "name": "debug",
5847
- "allowNo": false,
5848
- "type": "boolean"
5849
- },
5850
- "websocket": {
5851
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
5852
- "name": "websocket",
5853
- "hasDynamicHelp": false,
5854
- "multiple": false,
5855
- "type": "option"
5856
- },
5857
- "skipauth": {
5858
- "description": "Skip authentication check when a default username is required",
5859
- "name": "skipauth",
5860
- "allowNo": false,
5861
- "type": "boolean"
5862
- },
5863
- "target-org": {
5864
- "aliases": [
5865
- "targetusername",
5866
- "u"
5867
- ],
5868
- "char": "o",
5869
- "deprecateAliases": true,
5870
- "name": "target-org",
5871
- "noCacheDefault": true,
5872
- "required": true,
5873
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
5874
- "hasDynamicHelp": true,
5875
- "multiple": false,
5876
- "type": "option"
5877
- }
5878
- },
5879
- "hasDynamicHelp": true,
5880
- "hiddenAliases": [],
5881
- "id": "hardis:org:fix:listviewmine",
5882
- "pluginAlias": "sfdx-hardis",
5883
- "pluginName": "sfdx-hardis",
5884
- "pluginType": "core",
5885
- "strict": true,
5886
- "enableJsonFlag": true,
5887
- "title": "Fix listviews with ",
5888
- "requiresProject": true,
5889
- "isESM": true,
5890
- "relativePath": [
5891
- "lib",
5892
- "commands",
5893
- "hardis",
5894
- "org",
5895
- "fix",
5896
- "listviewmine.js"
5897
- ],
5898
- "aliasPermutations": [],
5899
- "permutations": [
5900
- "hardis:org:fix:listviewmine",
5901
- "org:hardis:fix:listviewmine",
5902
- "org:fix:hardis:listviewmine",
5903
- "org:fix:listviewmine:hardis",
5904
- "hardis:fix:org:listviewmine",
5905
- "fix:hardis:org:listviewmine",
5906
- "fix:org:hardis:listviewmine",
5907
- "fix:org:listviewmine:hardis",
5908
- "hardis:fix:listviewmine:org",
5909
- "fix:hardis:listviewmine:org",
5910
- "fix:listviewmine:hardis:org",
5911
- "fix:listviewmine:org:hardis",
5912
- "hardis:org:listviewmine:fix",
5913
- "org:hardis:listviewmine:fix",
5914
- "org:listviewmine:hardis:fix",
5915
- "org:listviewmine:fix:hardis",
5916
- "hardis:listviewmine:org:fix",
5917
- "listviewmine:hardis:org:fix",
5918
- "listviewmine:org:hardis:fix",
5919
- "listviewmine:org:fix:hardis",
5920
- "hardis:listviewmine:fix:org",
5921
- "listviewmine:hardis:fix:org",
5922
- "listviewmine:fix:hardis:org",
5923
- "listviewmine:fix:org:hardis"
5924
- ]
5925
- },
5926
- "hardis:org:generate:packagexmlfull": {
5927
- "aliases": [],
5928
- "args": {},
5929
- "description": "\n## Command Behavior\n\n**Generates a comprehensive `package.xml` file for a Salesforce org, including all metadata components, even managed ones.**\n\nThis command is essential for various Salesforce development and administration tasks, especially when you need a complete snapshot of an org's metadata. It goes beyond typical source tracking by including managed package components, which is crucial for understanding the full metadata footprint of an org.\n\nKey functionalities:\n\n- **Full Org Metadata Retrieval:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a complete list of all metadata types and their members.\n- **Managed Package Inclusion:** Unlike standard source retrieval, this command explicitly includes metadata from managed packages, providing a truly comprehensive `package.xml`.\n- **Customizable Output:** Allows you to specify the output file path for the generated `package.xml`.\n- **Interactive Org Selection:** If no target org is specified, it interactively prompts the user to choose an org. (or use --no-prompt to skip this step)\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Salesforce Metadata API Interaction:** It leverages the Salesforce Metadata API to list all available metadata types and then retrieve all components for each type.\n- **`buildOrgManifest` Utility:** The core logic for querying the org's metadata and constructing the `package.xml` is encapsulated within the `buildOrgManifest` utility function.\n- **XML Generation:** It dynamically builds the XML structure of the `package.xml` file, including the `types` and `members` elements for all retrieved metadata.\n- **File System Operations:** It writes the generated `package.xml` file to the specified output path.\n- **Interactive Prompts:** Uses `promptOrgUsernameDefault` to guide the user in selecting the target Salesforce org.\n</details>\n",
5930
- "examples": [
5931
- "$ sf hardis:org:generate:packagexmlfull",
5932
- "$ sf hardis:org:generate:packagexmlfull --outputfile /tmp/packagexmlfull.xml",
5933
- "$ sf hardis:org:generate:packagexmlfull --target-org nico@example.com"
5934
- ],
5935
- "flags": {
5936
- "json": {
5937
- "description": "Format output as json.",
5938
- "helpGroup": "GLOBAL",
5939
- "name": "json",
5940
- "allowNo": false,
5941
- "type": "boolean"
5942
- },
5943
- "flags-dir": {
5944
- "helpGroup": "GLOBAL",
5945
- "name": "flags-dir",
5946
- "summary": "Import flag values from a directory.",
5947
- "hasDynamicHelp": false,
5948
- "multiple": false,
5949
- "type": "option"
5950
- },
5951
- "outputfile": {
5952
- "description": "Output package.xml file",
5953
- "name": "outputfile",
5954
- "hasDynamicHelp": false,
5955
- "multiple": false,
5956
- "type": "option"
5957
- },
5958
- "debug": {
5959
- "char": "d",
5960
- "description": "Activate debug mode (more logs)",
5961
- "name": "debug",
5962
- "allowNo": false,
5963
- "type": "boolean"
5964
- },
5965
- "no-prompt": {
5966
- "char": "n",
5967
- "description": "Do not prompt for org username, use the default one",
5968
- "name": "no-prompt",
5969
- "allowNo": false,
5970
- "type": "boolean"
5971
- },
5972
- "websocket": {
5973
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
5974
- "name": "websocket",
5975
- "hasDynamicHelp": false,
5976
- "multiple": false,
5977
- "type": "option"
5978
- },
5979
- "skipauth": {
5980
- "description": "Skip authentication check when a default username is required",
5981
- "name": "skipauth",
5982
- "allowNo": false,
5983
- "type": "boolean"
5984
- },
5985
- "target-org": {
5986
- "aliases": [
5987
- "targetusername",
5988
- "u"
5989
- ],
5990
- "char": "o",
5991
- "deprecateAliases": true,
5992
- "name": "target-org",
5993
- "noCacheDefault": true,
5994
- "required": true,
5995
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
5996
- "hasDynamicHelp": true,
5997
- "multiple": false,
5998
- "type": "option"
5999
- }
6000
- },
6001
- "hasDynamicHelp": true,
6002
- "hiddenAliases": [],
6003
- "id": "hardis:org:generate:packagexmlfull",
6004
- "pluginAlias": "sfdx-hardis",
6005
- "pluginName": "sfdx-hardis",
6006
- "pluginType": "core",
6007
- "strict": true,
6008
- "enableJsonFlag": true,
6009
- "title": "Generate Full Org package.xml",
6010
- "requiresProject": false,
6011
- "isESM": true,
6012
- "relativePath": [
6013
- "lib",
6014
- "commands",
6015
- "hardis",
6016
- "org",
6017
- "generate",
6018
- "packagexmlfull.js"
6019
- ],
6020
- "aliasPermutations": [],
6021
- "permutations": [
6022
- "hardis:org:generate:packagexmlfull",
6023
- "org:hardis:generate:packagexmlfull",
6024
- "org:generate:hardis:packagexmlfull",
6025
- "org:generate:packagexmlfull:hardis",
6026
- "hardis:generate:org:packagexmlfull",
6027
- "generate:hardis:org:packagexmlfull",
6028
- "generate:org:hardis:packagexmlfull",
6029
- "generate:org:packagexmlfull:hardis",
6030
- "hardis:generate:packagexmlfull:org",
6031
- "generate:hardis:packagexmlfull:org",
6032
- "generate:packagexmlfull:hardis:org",
6033
- "generate:packagexmlfull:org:hardis",
6034
- "hardis:org:packagexmlfull:generate",
6035
- "org:hardis:packagexmlfull:generate",
6036
- "org:packagexmlfull:hardis:generate",
6037
- "org:packagexmlfull:generate:hardis",
6038
- "hardis:packagexmlfull:org:generate",
6039
- "packagexmlfull:hardis:org:generate",
6040
- "packagexmlfull:org:hardis:generate",
6041
- "packagexmlfull:org:generate:hardis",
6042
- "hardis:packagexmlfull:generate:org",
6043
- "packagexmlfull:hardis:generate:org",
6044
- "packagexmlfull:generate:hardis:org",
6045
- "packagexmlfull:generate:org:hardis"
6046
- ]
6047
- },
6048
5811
  "hardis:org:diagnose:audittrail": {
6049
5812
  "aliases": [],
6050
5813
  "args": {},
@@ -7443,12 +7206,13 @@
7443
7206
  "unusedusers:diagnose:org:hardis"
7444
7207
  ]
7445
7208
  },
7446
- "hardis:org:monitor:all": {
7209
+ "hardis:org:fix:listviewmine": {
7447
7210
  "aliases": [],
7448
7211
  "args": {},
7449
- "description": "Monitor org, generate reports and sends notifications\n\nYou can disable some commands defining either a **monitoringDisable** property in `.sfdx-hardis.yml`, or a comma separated list in env variable **MONITORING_DISABLE**\n\nExample in .sfdx-hardis.yml:\n \n```yaml\nmonitoringDisable:\n - METADATA_STATUS\n - MISSING_ATTRIBUTES\n - UNUSED_METADATAS\n```\n \nExample in env var:\n\n```sh\nMONITORING_DISABLE=METADATA_STATUS,MISSING_ATTRIBUTES,UNUSED_METADATAS\n```\n\nA [default list of monitoring commands](https://sfdx-hardis.cloudity.com/salesforce-monitoring-home/#monitoring-commands) is used, if you want to override it you can define property **monitoringCommands** in your .sfdx-hardis.yml file\n\nExample:\n\n```yaml\nmonitoringCommands:\n - title: My Custom command\n command: sf my:custom:command\n - title: My Custom command 2\n command: sf my:other:custom:command\n```\n\nYou can force the daily run of all commands by defining env var `MONITORING_IGNORE_FREQUENCY=true`\n\nThe default list of commands is the following:\n\n| Key | Description | Command | Frequency |\n| :---: | :---- | :---- | :-----: |\n| [AUDIT_TRAIL](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/audittrail) | Detect suspect setup actions in major org | [sf hardis:org:diagnose:audittrail](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/audittrail) | daily |\n| [LEGACY_API](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/legacyapi) | Detect calls to deprecated API versions | [sf hardis:org:diagnose:legacyapi](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/legacyapi) | daily |\n| [ORG_LIMITS](https://sfdx-hardis.cloudity.com/hardis/org/monitor/limits) | Detect if org limits are close to be reached | [sf hardis:org:monitor:limits](https://sfdx-hardis.cloudity.com/hardis/org/monitor/limits) | daily |\n| [UNSECURED_CONNECTED_APPS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unsecure-connected-apps) | Detect unsecured Connected Apps in an org | [sf hardis:org:diagnose:unsecure-connected-apps](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unsecure-connected-apps) | daily |\n| [LICENSES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/licenses) | Extract licenses information | [sf hardis:org:diagnose:licenses](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/licenses) | weekly |\n| [LINT_ACCESS](https://sfdx-hardis.cloudity.com/hardis/lint/access) | Detect custom elements with no access rights defined in permission sets | [sf hardis:lint:access](https://sfdx-hardis.cloudity.com/hardis/lint/access) | weekly |\n| [UNUSED_LICENSES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedlicenses) | Detect permission set licenses that are assigned to users that do not need them | [sf hardis:org:diagnose:unusedlicenses](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedlicenses) | weekly |\n| [UNUSED_USERS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | Detect active users without recent logins | [sf hardis:org:diagnose:unusedusers](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | weekly |\n| [ACTIVE_USERS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | Detect active users with recent logins | [sf hardis:org:diagnose:unusedusers --returnactiveusers](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | weekly |\n| [ORG_INFO](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/instanceupgrade) | Get org info + SF instance info + next major upgrade date | [sf hardis:org:diagnose:instanceupgrade](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/instanceupgrade) | weekly |\n| [RELEASE_UPDATES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/releaseupdates) | Gather warnings about incoming and overdue Release Updates | [sf hardis:org:diagnose:releaseupdates](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/releaseupdates) | weekly |\n| [UNUSED_METADATAS](https://sfdx-hardis.cloudity.com/hardis/lint/unusedmetadatas) | Detect custom labels and custom permissions that are not in use | [sf hardis:lint:unusedmetadatas](https://sfdx-hardis.cloudity.com/hardis/lint/unusedmetadatas) | weekly |\n| [UNUSED_APEX_CLASSES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-apex-classes) | Detect unused Apex classes in an org | [sf hardis:org:diagnose:unused-apex-classes](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-apex-classes) | weekly |\n| [CONNECTED_APPS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-connected-apps) | Detect unused Connected Apps in an org | [sf hardis:org:diagnose:unused-connected-apps](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-connected-apps) | weekly |\n| [METADATA_STATUS](https://sfdx-hardis.cloudity.com/hardis/lint/metadatastatus) | Detect inactive metadata | [sf hardis:lint:metadatastatus](https://sfdx-hardis.cloudity.com/hardis/lint/metadatastatus) | weekly |\n| [MISSING_ATTRIBUTES](https://sfdx-hardis.cloudity.com/hardis/lint/missingattributes) | Detect missing description on custom field | [sf hardis:lint:missingattributes](https://sfdx-hardis.cloudity.com/hardis/lint/missingattributes) | weekly |\n\n",
7212
+ "description": "Fix listviews whose scope Mine has been replaced by Everything\n\n[![Invalid scope:Mine, not allowed ? Deploy your ListViews anyway !](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-invalid-scope-mine.jpg)](https://nicolas.vuillamy.fr/invalid-scope-mine-not-allowed-deploy-your-listviews-anyway-443aceca8ac7)\n\nList of ListViews can be:\n\n- read from .sfdx-hardis.yml file in property **listViewsToSetToMine**\n- sent in argument listviews\n\nNote: property **listViewsToSetToMine** can be auto-generated by command hardis:work:save if .sfdx-hardis.yml contains the following configuration\n\n```yaml\nautoCleanTypes:\n - listViewsMine\n```\n\n- Example of sfdx-hardis.yml property `listViewsToSetToMine`:\n\n```yaml\nlistViewsToSetToMine:\n - \"force-app/main/default/objects/Operation__c/listViews/MyCurrentOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Operation__c/listViews/MyFinalizedOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/Default_Opportunity_Pipeline.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MyCurrentSubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MySubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Account/listViews/MyActivePartners.listView-meta.xml\"\n```\n\n- If manually written, this could also be:\n\n```yaml\nlistViewsToSetToMine:\n - \"Operation__c:MyCurrentOperations\"\n - \"Operation__c:MyFinalizedOperations\"\n - \"Opportunity:Default_Opportunity_Pipeline\"\n - \"Opportunity:MyCurrentSubscriptions\"\n - \"Opportunity:MySubscriptions\"\n - \"Account:MyActivePartners\"\n```\n\nTroubleshooting: if you need to run this command from an alpine-linux based docker image, use this workaround in your dockerfile:\n\n```dockerfile\n# Do not use puppeteer embedded chromium\nRUN apk add --update --no-cache chromium\nENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=\"true\"\nENV CHROMIUM_PATH=\"/usr/bin/chromium-browser\"\nENV PUPPETEER_EXECUTABLE_PATH=\"$\\{CHROMIUM_PATH}\" // remove \\ before {\n```\n",
7450
7213
  "examples": [
7451
- "$ sf hardis:org:monitor:all"
7214
+ "$ sf hardis:org:fix:listviewmine",
7215
+ "$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
7452
7216
  ],
7453
7217
  "flags": {
7454
7218
  "json": {
@@ -7466,6 +7230,14 @@
7466
7230
  "multiple": false,
7467
7231
  "type": "option"
7468
7232
  },
7233
+ "listviews": {
7234
+ "char": "l",
7235
+ "description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
7236
+ "name": "listviews",
7237
+ "hasDynamicHelp": false,
7238
+ "multiple": false,
7239
+ "type": "option"
7240
+ },
7469
7241
  "debug": {
7470
7242
  "char": "d",
7471
7243
  "description": "Activate debug mode (more logs)",
@@ -7504,14 +7276,242 @@
7504
7276
  },
7505
7277
  "hasDynamicHelp": true,
7506
7278
  "hiddenAliases": [],
7507
- "id": "hardis:org:monitor:all",
7279
+ "id": "hardis:org:fix:listviewmine",
7508
7280
  "pluginAlias": "sfdx-hardis",
7509
7281
  "pluginName": "sfdx-hardis",
7510
7282
  "pluginType": "core",
7511
7283
  "strict": true,
7512
7284
  "enableJsonFlag": true,
7513
- "title": "Monitor org",
7514
- "monitoringCommandsDefault": [
7285
+ "title": "Fix listviews with ",
7286
+ "requiresProject": true,
7287
+ "isESM": true,
7288
+ "relativePath": [
7289
+ "lib",
7290
+ "commands",
7291
+ "hardis",
7292
+ "org",
7293
+ "fix",
7294
+ "listviewmine.js"
7295
+ ],
7296
+ "aliasPermutations": [],
7297
+ "permutations": [
7298
+ "hardis:org:fix:listviewmine",
7299
+ "org:hardis:fix:listviewmine",
7300
+ "org:fix:hardis:listviewmine",
7301
+ "org:fix:listviewmine:hardis",
7302
+ "hardis:fix:org:listviewmine",
7303
+ "fix:hardis:org:listviewmine",
7304
+ "fix:org:hardis:listviewmine",
7305
+ "fix:org:listviewmine:hardis",
7306
+ "hardis:fix:listviewmine:org",
7307
+ "fix:hardis:listviewmine:org",
7308
+ "fix:listviewmine:hardis:org",
7309
+ "fix:listviewmine:org:hardis",
7310
+ "hardis:org:listviewmine:fix",
7311
+ "org:hardis:listviewmine:fix",
7312
+ "org:listviewmine:hardis:fix",
7313
+ "org:listviewmine:fix:hardis",
7314
+ "hardis:listviewmine:org:fix",
7315
+ "listviewmine:hardis:org:fix",
7316
+ "listviewmine:org:hardis:fix",
7317
+ "listviewmine:org:fix:hardis",
7318
+ "hardis:listviewmine:fix:org",
7319
+ "listviewmine:hardis:fix:org",
7320
+ "listviewmine:fix:hardis:org",
7321
+ "listviewmine:fix:org:hardis"
7322
+ ]
7323
+ },
7324
+ "hardis:org:generate:packagexmlfull": {
7325
+ "aliases": [],
7326
+ "args": {},
7327
+ "description": "\n## Command Behavior\n\n**Generates a comprehensive `package.xml` file for a Salesforce org, including all metadata components, even managed ones.**\n\nThis command is essential for various Salesforce development and administration tasks, especially when you need a complete snapshot of an org's metadata. It goes beyond typical source tracking by including managed package components, which is crucial for understanding the full metadata footprint of an org.\n\nKey functionalities:\n\n- **Full Org Metadata Retrieval:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a complete list of all metadata types and their members.\n- **Managed Package Inclusion:** Unlike standard source retrieval, this command explicitly includes metadata from managed packages, providing a truly comprehensive `package.xml`.\n- **Customizable Output:** Allows you to specify the output file path for the generated `package.xml`.\n- **Interactive Org Selection:** If no target org is specified, it interactively prompts the user to choose an org. (or use --no-prompt to skip this step)\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Salesforce Metadata API Interaction:** It leverages the Salesforce Metadata API to list all available metadata types and then retrieve all components for each type.\n- **`buildOrgManifest` Utility:** The core logic for querying the org's metadata and constructing the `package.xml` is encapsulated within the `buildOrgManifest` utility function.\n- **XML Generation:** It dynamically builds the XML structure of the `package.xml` file, including the `types` and `members` elements for all retrieved metadata.\n- **File System Operations:** It writes the generated `package.xml` file to the specified output path.\n- **Interactive Prompts:** Uses `promptOrgUsernameDefault` to guide the user in selecting the target Salesforce org.\n</details>\n",
7328
+ "examples": [
7329
+ "$ sf hardis:org:generate:packagexmlfull",
7330
+ "$ sf hardis:org:generate:packagexmlfull --outputfile /tmp/packagexmlfull.xml",
7331
+ "$ sf hardis:org:generate:packagexmlfull --target-org nico@example.com"
7332
+ ],
7333
+ "flags": {
7334
+ "json": {
7335
+ "description": "Format output as json.",
7336
+ "helpGroup": "GLOBAL",
7337
+ "name": "json",
7338
+ "allowNo": false,
7339
+ "type": "boolean"
7340
+ },
7341
+ "flags-dir": {
7342
+ "helpGroup": "GLOBAL",
7343
+ "name": "flags-dir",
7344
+ "summary": "Import flag values from a directory.",
7345
+ "hasDynamicHelp": false,
7346
+ "multiple": false,
7347
+ "type": "option"
7348
+ },
7349
+ "outputfile": {
7350
+ "description": "Output package.xml file",
7351
+ "name": "outputfile",
7352
+ "hasDynamicHelp": false,
7353
+ "multiple": false,
7354
+ "type": "option"
7355
+ },
7356
+ "debug": {
7357
+ "char": "d",
7358
+ "description": "Activate debug mode (more logs)",
7359
+ "name": "debug",
7360
+ "allowNo": false,
7361
+ "type": "boolean"
7362
+ },
7363
+ "no-prompt": {
7364
+ "char": "n",
7365
+ "description": "Do not prompt for org username, use the default one",
7366
+ "name": "no-prompt",
7367
+ "allowNo": false,
7368
+ "type": "boolean"
7369
+ },
7370
+ "websocket": {
7371
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7372
+ "name": "websocket",
7373
+ "hasDynamicHelp": false,
7374
+ "multiple": false,
7375
+ "type": "option"
7376
+ },
7377
+ "skipauth": {
7378
+ "description": "Skip authentication check when a default username is required",
7379
+ "name": "skipauth",
7380
+ "allowNo": false,
7381
+ "type": "boolean"
7382
+ },
7383
+ "target-org": {
7384
+ "aliases": [
7385
+ "targetusername",
7386
+ "u"
7387
+ ],
7388
+ "char": "o",
7389
+ "deprecateAliases": true,
7390
+ "name": "target-org",
7391
+ "noCacheDefault": true,
7392
+ "required": true,
7393
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7394
+ "hasDynamicHelp": true,
7395
+ "multiple": false,
7396
+ "type": "option"
7397
+ }
7398
+ },
7399
+ "hasDynamicHelp": true,
7400
+ "hiddenAliases": [],
7401
+ "id": "hardis:org:generate:packagexmlfull",
7402
+ "pluginAlias": "sfdx-hardis",
7403
+ "pluginName": "sfdx-hardis",
7404
+ "pluginType": "core",
7405
+ "strict": true,
7406
+ "enableJsonFlag": true,
7407
+ "title": "Generate Full Org package.xml",
7408
+ "requiresProject": false,
7409
+ "isESM": true,
7410
+ "relativePath": [
7411
+ "lib",
7412
+ "commands",
7413
+ "hardis",
7414
+ "org",
7415
+ "generate",
7416
+ "packagexmlfull.js"
7417
+ ],
7418
+ "aliasPermutations": [],
7419
+ "permutations": [
7420
+ "hardis:org:generate:packagexmlfull",
7421
+ "org:hardis:generate:packagexmlfull",
7422
+ "org:generate:hardis:packagexmlfull",
7423
+ "org:generate:packagexmlfull:hardis",
7424
+ "hardis:generate:org:packagexmlfull",
7425
+ "generate:hardis:org:packagexmlfull",
7426
+ "generate:org:hardis:packagexmlfull",
7427
+ "generate:org:packagexmlfull:hardis",
7428
+ "hardis:generate:packagexmlfull:org",
7429
+ "generate:hardis:packagexmlfull:org",
7430
+ "generate:packagexmlfull:hardis:org",
7431
+ "generate:packagexmlfull:org:hardis",
7432
+ "hardis:org:packagexmlfull:generate",
7433
+ "org:hardis:packagexmlfull:generate",
7434
+ "org:packagexmlfull:hardis:generate",
7435
+ "org:packagexmlfull:generate:hardis",
7436
+ "hardis:packagexmlfull:org:generate",
7437
+ "packagexmlfull:hardis:org:generate",
7438
+ "packagexmlfull:org:hardis:generate",
7439
+ "packagexmlfull:org:generate:hardis",
7440
+ "hardis:packagexmlfull:generate:org",
7441
+ "packagexmlfull:hardis:generate:org",
7442
+ "packagexmlfull:generate:hardis:org",
7443
+ "packagexmlfull:generate:org:hardis"
7444
+ ]
7445
+ },
7446
+ "hardis:org:monitor:all": {
7447
+ "aliases": [],
7448
+ "args": {},
7449
+ "description": "Monitor org, generate reports and sends notifications\n\nYou can disable some commands defining either a **monitoringDisable** property in `.sfdx-hardis.yml`, or a comma separated list in env variable **MONITORING_DISABLE**\n\nExample in .sfdx-hardis.yml:\n \n```yaml\nmonitoringDisable:\n - METADATA_STATUS\n - MISSING_ATTRIBUTES\n - UNUSED_METADATAS\n```\n \nExample in env var:\n\n```sh\nMONITORING_DISABLE=METADATA_STATUS,MISSING_ATTRIBUTES,UNUSED_METADATAS\n```\n\nA [default list of monitoring commands](https://sfdx-hardis.cloudity.com/salesforce-monitoring-home/#monitoring-commands) is used, if you want to override it you can define property **monitoringCommands** in your .sfdx-hardis.yml file\n\nExample:\n\n```yaml\nmonitoringCommands:\n - title: My Custom command\n command: sf my:custom:command\n - title: My Custom command 2\n command: sf my:other:custom:command\n```\n\nYou can force the daily run of all commands by defining env var `MONITORING_IGNORE_FREQUENCY=true`\n\nThe default list of commands is the following:\n\n| Key | Description | Command | Frequency |\n| :---: | :---- | :---- | :-----: |\n| [AUDIT_TRAIL](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/audittrail) | Detect suspect setup actions in major org | [sf hardis:org:diagnose:audittrail](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/audittrail) | daily |\n| [LEGACY_API](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/legacyapi) | Detect calls to deprecated API versions | [sf hardis:org:diagnose:legacyapi](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/legacyapi) | daily |\n| [ORG_LIMITS](https://sfdx-hardis.cloudity.com/hardis/org/monitor/limits) | Detect if org limits are close to be reached | [sf hardis:org:monitor:limits](https://sfdx-hardis.cloudity.com/hardis/org/monitor/limits) | daily |\n| [UNSECURED_CONNECTED_APPS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unsecure-connected-apps) | Detect unsecured Connected Apps in an org | [sf hardis:org:diagnose:unsecure-connected-apps](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unsecure-connected-apps) | daily |\n| [LICENSES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/licenses) | Extract licenses information | [sf hardis:org:diagnose:licenses](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/licenses) | weekly |\n| [LINT_ACCESS](https://sfdx-hardis.cloudity.com/hardis/lint/access) | Detect custom elements with no access rights defined in permission sets | [sf hardis:lint:access](https://sfdx-hardis.cloudity.com/hardis/lint/access) | weekly |\n| [UNUSED_LICENSES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedlicenses) | Detect permission set licenses that are assigned to users that do not need them | [sf hardis:org:diagnose:unusedlicenses](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedlicenses) | weekly |\n| [UNUSED_USERS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | Detect active users without recent logins | [sf hardis:org:diagnose:unusedusers](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | weekly |\n| [ACTIVE_USERS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | Detect active users with recent logins | [sf hardis:org:diagnose:unusedusers --returnactiveusers](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unusedusers) | weekly |\n| [ORG_INFO](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/instanceupgrade) | Get org info + SF instance info + next major upgrade date | [sf hardis:org:diagnose:instanceupgrade](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/instanceupgrade) | weekly |\n| [RELEASE_UPDATES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/releaseupdates) | Gather warnings about incoming and overdue Release Updates | [sf hardis:org:diagnose:releaseupdates](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/releaseupdates) | weekly |\n| [UNUSED_METADATAS](https://sfdx-hardis.cloudity.com/hardis/lint/unusedmetadatas) | Detect custom labels and custom permissions that are not in use | [sf hardis:lint:unusedmetadatas](https://sfdx-hardis.cloudity.com/hardis/lint/unusedmetadatas) | weekly |\n| [UNUSED_APEX_CLASSES](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-apex-classes) | Detect unused Apex classes in an org | [sf hardis:org:diagnose:unused-apex-classes](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-apex-classes) | weekly |\n| [CONNECTED_APPS](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-connected-apps) | Detect unused Connected Apps in an org | [sf hardis:org:diagnose:unused-connected-apps](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unused-connected-apps) | weekly |\n| [METADATA_STATUS](https://sfdx-hardis.cloudity.com/hardis/lint/metadatastatus) | Detect inactive metadata | [sf hardis:lint:metadatastatus](https://sfdx-hardis.cloudity.com/hardis/lint/metadatastatus) | weekly |\n| [MISSING_ATTRIBUTES](https://sfdx-hardis.cloudity.com/hardis/lint/missingattributes) | Detect missing description on custom field | [sf hardis:lint:missingattributes](https://sfdx-hardis.cloudity.com/hardis/lint/missingattributes) | weekly |\n\n",
7450
+ "examples": [
7451
+ "$ sf hardis:org:monitor:all"
7452
+ ],
7453
+ "flags": {
7454
+ "json": {
7455
+ "description": "Format output as json.",
7456
+ "helpGroup": "GLOBAL",
7457
+ "name": "json",
7458
+ "allowNo": false,
7459
+ "type": "boolean"
7460
+ },
7461
+ "flags-dir": {
7462
+ "helpGroup": "GLOBAL",
7463
+ "name": "flags-dir",
7464
+ "summary": "Import flag values from a directory.",
7465
+ "hasDynamicHelp": false,
7466
+ "multiple": false,
7467
+ "type": "option"
7468
+ },
7469
+ "debug": {
7470
+ "char": "d",
7471
+ "description": "Activate debug mode (more logs)",
7472
+ "name": "debug",
7473
+ "allowNo": false,
7474
+ "type": "boolean"
7475
+ },
7476
+ "websocket": {
7477
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7478
+ "name": "websocket",
7479
+ "hasDynamicHelp": false,
7480
+ "multiple": false,
7481
+ "type": "option"
7482
+ },
7483
+ "skipauth": {
7484
+ "description": "Skip authentication check when a default username is required",
7485
+ "name": "skipauth",
7486
+ "allowNo": false,
7487
+ "type": "boolean"
7488
+ },
7489
+ "target-org": {
7490
+ "aliases": [
7491
+ "targetusername",
7492
+ "u"
7493
+ ],
7494
+ "char": "o",
7495
+ "deprecateAliases": true,
7496
+ "name": "target-org",
7497
+ "noCacheDefault": true,
7498
+ "required": true,
7499
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7500
+ "hasDynamicHelp": true,
7501
+ "multiple": false,
7502
+ "type": "option"
7503
+ }
7504
+ },
7505
+ "hasDynamicHelp": true,
7506
+ "hiddenAliases": [],
7507
+ "id": "hardis:org:monitor:all",
7508
+ "pluginAlias": "sfdx-hardis",
7509
+ "pluginName": "sfdx-hardis",
7510
+ "pluginType": "core",
7511
+ "strict": true,
7512
+ "enableJsonFlag": true,
7513
+ "title": "Monitor org",
7514
+ "monitoringCommandsDefault": [
7515
7515
  {
7516
7516
  "key": "AUDIT_TRAIL",
7517
7517
  "title": "Detect suspect setup actions in major org",
@@ -7924,13 +7924,16 @@
7924
7924
  "limits:monitor:org:hardis"
7925
7925
  ]
7926
7926
  },
7927
- "hardis:org:purge:apexlog": {
7927
+ "hardis:org:refresh:after-refresh": {
7928
7928
  "aliases": [],
7929
7929
  "args": {},
7930
- "description": "\n**Purges Apex debug logs from a Salesforce org.**\n\nThis command provides a quick and efficient way to clear out accumulated Apex debug logs from your Salesforce environment. This is particularly useful for:\n\n- **Storage Management:** Freeing up valuable data storage space in your Salesforce org.\n- **Performance Optimization:** Reducing the overhead associated with large volumes of debug logs.\n- **Troubleshooting:** Ensuring that new debug logs are generated cleanly without interference from old, irrelevant logs.\n\nKey functionalities:\n\n- **Log Identification:** Queries the `ApexLog` object to identify all existing debug logs.\n- **Confirmation Prompt:** Before deletion, it prompts for user confirmation, displaying the number of Apex logs that will be deleted.\n- **Bulk Deletion:** Uses the Salesforce Bulk API to efficiently delete a large number of Apex logs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Query:** It executes a SOQL query (`SELECT Id FROM ApexLog LIMIT 50000`) to retrieve the IDs of Apex logs to be deleted. The limit is set to 50,000 to handle large volumes of logs.\n- **CSV Export:** The retrieved log IDs are temporarily exported to a CSV file (`ApexLogsToDelete_*.csv`) in the `./tmp` directory.\n- **User Confirmation:** It uses the `prompts` library to ask for user confirmation before proceeding with the deletion, displaying the count of logs to be purged.\n- **Bulk API Deletion:** It then uses the Salesforce CLI's `sf data delete bulk` command, pointing to the generated CSV file, to perform the mass deletion of Apex logs.\n- **File System Operations:** It uses `fs-extra` to create the temporary directory and manage the CSV file.\n- **Error Handling:** Includes error handling for the query and deletion operations.\n</details>\n",
7930
+ "description": "\n## Command Behavior\n\n**Restores all previously backed-up Connected Apps (including Consumer Secrets), certificates, custom settings, records and other metadata to a Salesforce org after a sandbox refresh.**\n\nThis command is the second step in the sandbox refresh process. It scans the backup folder created before the refresh, allows interactive or flag-driven selection of items to restore, and automates cleanup and redeployment to the refreshed org while preserving credentials and configuration.\n\nKey functionalities:\n\n- **Choose a backup to restore:** Lets you pick the saved sandbox project that contains the artifacts to restore.\n- **Select which items to restore:** Finds Connected App XMLs, certificates, custom settings and other artifacts and lets you pick what to restore (or restore all).\n- **Safety checks and validation:** Confirms files exist and prompts before making changes to the target org.\n- **Prepare org for restore:** Optionally cleans up existing Connected Apps so saved apps can be re-deployed without conflict.\n- **Redeploy saved artifacts:** Restores Connected Apps (with saved secrets), certificates, SAML SSO configs, custom settings and other metadata.\n- **Handle SAML configs:** Cleans and updates SAML XML files and helps you choose certificates to wire into restored configs.\n- **Restore records:** Optionally runs data import from selected SFDMU workspaces to restore record data.\n- **Reporting & persistence:** Sends restore reports and can update project config to record what was restored.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is intended to be run after a sandbox refresh to re-apply saved metadata, credentials and data.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Backup Folder Handling:** Reads the immediate subfolders of `scripts/sandbox-refresh/` and validates the chosen project contains the expected `manifest/` and `force-app` layout.\n- **Metadata & Deployment APIs:** Uses `sf project deploy start --manifest` for package-based deploys, `sf project deploy start --metadata-dir` for MDAPI artifacts (certificates), and utility functions for Connected App deployment that preserve consumer secrets.\n- **SAML Handling:** Queries active certificates via tooling API, updates SAML XML files, and deploys using `sf project deploy start -m SamlSsoConfig`.\n- **Records Handling:** Uses interactive selection of SFDMU workspaces and runs data import utilities to restore records.\n- **Error Handling & Summary:** Aggregates results, logs success/warnings/errors, and returns a structured result indicating which items were restored and any failures.\n\n</details>\n",
7931
7931
  "examples": [
7932
- "$ sf hardis:org:purge:apexlog",
7933
- "$ sf hardis:org:purge:apexlog --target-org nicolas.vuillamy@gmail.com"
7932
+ "$ sf hardis:org:refresh:after-refresh",
7933
+ "$ sf hardis:org:refresh:after-refresh --name \"MyConnectedApp\" // Process specific app, no selection prompt",
7934
+ "$ sf hardis:org:refresh:after-refresh --name \"App1,App2,App3\" // Process multiple apps, no selection prompt",
7935
+ "$ sf hardis:org:refresh:after-refresh --all // Process all apps, no selection prompt",
7936
+ "$ sf hardis:org:refresh:after-refresh --target-org myDevOrg"
7934
7937
  ],
7935
7938
  "flags": {
7936
7939
  "json": {
@@ -7948,12 +7951,248 @@
7948
7951
  "multiple": false,
7949
7952
  "type": "option"
7950
7953
  },
7951
- "prompt": {
7952
- "char": "z",
7953
- "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7954
- "name": "prompt",
7955
- "allowNo": true,
7956
- "type": "boolean"
7954
+ "target-org": {
7955
+ "char": "o",
7956
+ "name": "target-org",
7957
+ "noCacheDefault": true,
7958
+ "required": true,
7959
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7960
+ "hasDynamicHelp": true,
7961
+ "multiple": false,
7962
+ "type": "option"
7963
+ },
7964
+ "name": {
7965
+ "char": "n",
7966
+ "description": "Connected App name(s) to process (bypasses selection prompt). For multiple apps, separate with commas (e.g., \"App1,App2\")",
7967
+ "name": "name",
7968
+ "summary": "Filter according to Name criteria",
7969
+ "hasDynamicHelp": false,
7970
+ "multiple": false,
7971
+ "type": "option"
7972
+ },
7973
+ "all": {
7974
+ "char": "a",
7975
+ "description": "If set, all Connected Apps from the local repository will be processed. Takes precedence over --name if both are specified.",
7976
+ "name": "all",
7977
+ "summary": "Process all Connected Apps without selection prompt",
7978
+ "allowNo": false,
7979
+ "type": "boolean"
7980
+ },
7981
+ "websocket": {
7982
+ "description": "WebSocket host:port for VS Code SFDX Hardis UI integration",
7983
+ "name": "websocket",
7984
+ "summary": "Websocket host:port for VsCode SFDX Hardis UI integration",
7985
+ "hasDynamicHelp": false,
7986
+ "multiple": false,
7987
+ "type": "option"
7988
+ },
7989
+ "skipauth": {
7990
+ "description": "Skip authentication check when a default username is required",
7991
+ "name": "skipauth",
7992
+ "summary": "Skip authentication check when a default username is required",
7993
+ "allowNo": false,
7994
+ "type": "boolean"
7995
+ }
7996
+ },
7997
+ "hasDynamicHelp": true,
7998
+ "hiddenAliases": [],
7999
+ "id": "hardis:org:refresh:after-refresh",
8000
+ "pluginAlias": "sfdx-hardis",
8001
+ "pluginName": "sfdx-hardis",
8002
+ "pluginType": "core",
8003
+ "strict": true,
8004
+ "enableJsonFlag": true,
8005
+ "title": "Restore Connected Apps after org refresh",
8006
+ "requiresProject": true,
8007
+ "isESM": true,
8008
+ "relativePath": [
8009
+ "lib",
8010
+ "commands",
8011
+ "hardis",
8012
+ "org",
8013
+ "refresh",
8014
+ "after-refresh.js"
8015
+ ],
8016
+ "aliasPermutations": [],
8017
+ "permutations": [
8018
+ "hardis:org:refresh:after-refresh",
8019
+ "org:hardis:refresh:after-refresh",
8020
+ "org:refresh:hardis:after-refresh",
8021
+ "org:refresh:after-refresh:hardis",
8022
+ "hardis:refresh:org:after-refresh",
8023
+ "refresh:hardis:org:after-refresh",
8024
+ "refresh:org:hardis:after-refresh",
8025
+ "refresh:org:after-refresh:hardis",
8026
+ "hardis:refresh:after-refresh:org",
8027
+ "refresh:hardis:after-refresh:org",
8028
+ "refresh:after-refresh:hardis:org",
8029
+ "refresh:after-refresh:org:hardis",
8030
+ "hardis:org:after-refresh:refresh",
8031
+ "org:hardis:after-refresh:refresh",
8032
+ "org:after-refresh:hardis:refresh",
8033
+ "org:after-refresh:refresh:hardis",
8034
+ "hardis:after-refresh:org:refresh",
8035
+ "after-refresh:hardis:org:refresh",
8036
+ "after-refresh:org:hardis:refresh",
8037
+ "after-refresh:org:refresh:hardis",
8038
+ "hardis:after-refresh:refresh:org",
8039
+ "after-refresh:hardis:refresh:org",
8040
+ "after-refresh:refresh:hardis:org",
8041
+ "after-refresh:refresh:org:hardis"
8042
+ ]
8043
+ },
8044
+ "hardis:org:refresh:before-refresh": {
8045
+ "aliases": [],
8046
+ "args": {},
8047
+ "description": "\n## Command Behavior\n\n**Backs up all Connected Apps (including Consumer Secrets), certificates, custom settings, records and other metadata from a Salesforce org before a sandbox refresh, enabling full restoration after the refresh.**\n\nThis command prepares a complete backup prior to a sandbox refresh. It creates a dedicated project under `scripts/sandbox-refresh/<sandbox-folder>`, retrieves metadata and data, attempts to capture Connected App consumer secrets, and can optionally delete the apps so they can be reuploaded after the refresh.\n\nKey functionalities:\n\n- **Create a save project:** Generates a dedicated project folder to store all artifacts for the sandbox backup.\n- **Find and select Connected Apps:** Lists Connected Apps in the org and lets you pick specific apps, use a name filter, or process all apps.\n- **Save metadata for restore:** Builds a manifest and retrieves the metadata types you choose so they can be restored after the refresh.\n- **Capture Consumer Secrets:** Attempts to capture Connected App consumer secrets automatically (opens a browser session when possible) and falls back to a short manual prompt when needed.\n- **Collect certificates:** Saves certificate files and their definitions so they can be redeployed later.\n- **Export custom settings & records:** Lets you pick custom settings to export as JSON and optionally export records using configured data workspaces.\n- **Persist choices & report:** Stores your backup choices in project config and sends report files for traceability.\n- **Optional cleanup:** Can delete backed-up Connected Apps from the org so they can be re-uploaded cleanly after the refresh.\n- **Interactive safety checks:** Prompts you to confirm package contents and other potentially destructive actions; sensible defaults are chosen where appropriate.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is intended to be run before a sandbox refresh so that all credentials, certificates, metadata and data can be restored afterwards.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Salesforce CLI Integration:** Uses `sf org list metadata`, `sf project retrieve start`, `sf project generate`, `sf project deploy start`, and `sf data tree export`/`import` where applicable.\n- **Metadata Handling:** Writes and reads package XML files under the generated project (`manifest/`), copies MDAPI certificate artifacts into `force-app/main/default/certs`, and produces `package-metadata-to-restore.xml` for post-refresh deployment.\n- **Consumer Secret Handling:** Uses `puppeteer-core` with an executable path from `getChromeExecutablePath()` (env var `PUPPETEER_EXECUTABLE_PATH` may be required). Falls back to manual prompt when browser automation cannot be used.\n- **Data & Records:** Exports custom settings to JSON and supports exporting records through SFDMU workspaces chosen interactively.\n- **Config & Reporting:** Updates project/user config under `config/.sfdx-hardis.yml#refreshSandboxConfig` and reports artifacts to the WebSocket client.\n- **Error Handling:** Provides clear error messages and a summary response object indicating success/failure and which secrets were captured.\n\n</details>\n",
8048
+ "examples": [
8049
+ "$ sf hardis:org:refresh:before-refresh",
8050
+ "$ sf hardis:org:refresh:before-refresh --name \"MyConnectedApp\"",
8051
+ "$ sf hardis:org:refresh:before-refresh --name \"App1,App2,App3\"",
8052
+ "$ sf hardis:org:refresh:before-refresh --all",
8053
+ "$ sf hardis:org:refresh:before-refresh --delete"
8054
+ ],
8055
+ "flags": {
8056
+ "json": {
8057
+ "description": "Format output as json.",
8058
+ "helpGroup": "GLOBAL",
8059
+ "name": "json",
8060
+ "allowNo": false,
8061
+ "type": "boolean"
8062
+ },
8063
+ "flags-dir": {
8064
+ "helpGroup": "GLOBAL",
8065
+ "name": "flags-dir",
8066
+ "summary": "Import flag values from a directory.",
8067
+ "hasDynamicHelp": false,
8068
+ "multiple": false,
8069
+ "type": "option"
8070
+ },
8071
+ "target-org": {
8072
+ "char": "o",
8073
+ "name": "target-org",
8074
+ "noCacheDefault": true,
8075
+ "required": true,
8076
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8077
+ "hasDynamicHelp": true,
8078
+ "multiple": false,
8079
+ "type": "option"
8080
+ },
8081
+ "delete": {
8082
+ "char": "d",
8083
+ "description": "By default, Connected Apps are not deleted from the org after saving. Set this flag to force their deletion so they will be able to be reuploaded again after refreshing the org.",
8084
+ "name": "delete",
8085
+ "summary": "Delete Connected Apps from org after saving",
8086
+ "allowNo": false,
8087
+ "type": "boolean"
8088
+ },
8089
+ "name": {
8090
+ "char": "n",
8091
+ "description": "Connected App name(s) to process. For multiple apps, separate with commas (e.g., \"App1,App2\")",
8092
+ "name": "name",
8093
+ "summary": "Filter according to Name criteria",
8094
+ "hasDynamicHelp": false,
8095
+ "multiple": false,
8096
+ "type": "option"
8097
+ },
8098
+ "all": {
8099
+ "char": "a",
8100
+ "description": "If set, all Connected Apps from the org will be processed. Takes precedence over --name if both are specified.",
8101
+ "name": "all",
8102
+ "summary": "Process all Connected Apps without selection prompt",
8103
+ "allowNo": false,
8104
+ "type": "boolean"
8105
+ },
8106
+ "websocket": {
8107
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8108
+ "name": "websocket",
8109
+ "hasDynamicHelp": false,
8110
+ "multiple": false,
8111
+ "type": "option"
8112
+ },
8113
+ "skipauth": {
8114
+ "description": "Skip authentication check when a default username is required",
8115
+ "name": "skipauth",
8116
+ "allowNo": false,
8117
+ "type": "boolean"
8118
+ }
8119
+ },
8120
+ "hasDynamicHelp": true,
8121
+ "hiddenAliases": [],
8122
+ "id": "hardis:org:refresh:before-refresh",
8123
+ "pluginAlias": "sfdx-hardis",
8124
+ "pluginName": "sfdx-hardis",
8125
+ "pluginType": "core",
8126
+ "strict": true,
8127
+ "enableJsonFlag": true,
8128
+ "requiresProject": true,
8129
+ "isESM": true,
8130
+ "relativePath": [
8131
+ "lib",
8132
+ "commands",
8133
+ "hardis",
8134
+ "org",
8135
+ "refresh",
8136
+ "before-refresh.js"
8137
+ ],
8138
+ "aliasPermutations": [],
8139
+ "permutations": [
8140
+ "hardis:org:refresh:before-refresh",
8141
+ "org:hardis:refresh:before-refresh",
8142
+ "org:refresh:hardis:before-refresh",
8143
+ "org:refresh:before-refresh:hardis",
8144
+ "hardis:refresh:org:before-refresh",
8145
+ "refresh:hardis:org:before-refresh",
8146
+ "refresh:org:hardis:before-refresh",
8147
+ "refresh:org:before-refresh:hardis",
8148
+ "hardis:refresh:before-refresh:org",
8149
+ "refresh:hardis:before-refresh:org",
8150
+ "refresh:before-refresh:hardis:org",
8151
+ "refresh:before-refresh:org:hardis",
8152
+ "hardis:org:before-refresh:refresh",
8153
+ "org:hardis:before-refresh:refresh",
8154
+ "org:before-refresh:hardis:refresh",
8155
+ "org:before-refresh:refresh:hardis",
8156
+ "hardis:before-refresh:org:refresh",
8157
+ "before-refresh:hardis:org:refresh",
8158
+ "before-refresh:org:hardis:refresh",
8159
+ "before-refresh:org:refresh:hardis",
8160
+ "hardis:before-refresh:refresh:org",
8161
+ "before-refresh:hardis:refresh:org",
8162
+ "before-refresh:refresh:hardis:org",
8163
+ "before-refresh:refresh:org:hardis"
8164
+ ]
8165
+ },
8166
+ "hardis:org:purge:apexlog": {
8167
+ "aliases": [],
8168
+ "args": {},
8169
+ "description": "\n**Purges Apex debug logs from a Salesforce org.**\n\nThis command provides a quick and efficient way to clear out accumulated Apex debug logs from your Salesforce environment. This is particularly useful for:\n\n- **Storage Management:** Freeing up valuable data storage space in your Salesforce org.\n- **Performance Optimization:** Reducing the overhead associated with large volumes of debug logs.\n- **Troubleshooting:** Ensuring that new debug logs are generated cleanly without interference from old, irrelevant logs.\n\nKey functionalities:\n\n- **Log Identification:** Queries the `ApexLog` object to identify all existing debug logs.\n- **Confirmation Prompt:** Before deletion, it prompts for user confirmation, displaying the number of Apex logs that will be deleted.\n- **Bulk Deletion:** Uses the Salesforce Bulk API to efficiently delete a large number of Apex logs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Query:** It executes a SOQL query (`SELECT Id FROM ApexLog LIMIT 50000`) to retrieve the IDs of Apex logs to be deleted. The limit is set to 50,000 to handle large volumes of logs.\n- **CSV Export:** The retrieved log IDs are temporarily exported to a CSV file (`ApexLogsToDelete_*.csv`) in the `./tmp` directory.\n- **User Confirmation:** It uses the `prompts` library to ask for user confirmation before proceeding with the deletion, displaying the count of logs to be purged.\n- **Bulk API Deletion:** It then uses the Salesforce CLI's `sf data delete bulk` command, pointing to the generated CSV file, to perform the mass deletion of Apex logs.\n- **File System Operations:** It uses `fs-extra` to create the temporary directory and manage the CSV file.\n- **Error Handling:** Includes error handling for the query and deletion operations.\n</details>\n",
8170
+ "examples": [
8171
+ "$ sf hardis:org:purge:apexlog",
8172
+ "$ sf hardis:org:purge:apexlog --target-org nicolas.vuillamy@gmail.com"
8173
+ ],
8174
+ "flags": {
8175
+ "json": {
8176
+ "description": "Format output as json.",
8177
+ "helpGroup": "GLOBAL",
8178
+ "name": "json",
8179
+ "allowNo": false,
8180
+ "type": "boolean"
8181
+ },
8182
+ "flags-dir": {
8183
+ "helpGroup": "GLOBAL",
8184
+ "name": "flags-dir",
8185
+ "summary": "Import flag values from a directory.",
8186
+ "hasDynamicHelp": false,
8187
+ "multiple": false,
8188
+ "type": "option"
8189
+ },
8190
+ "prompt": {
8191
+ "char": "z",
8192
+ "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
8193
+ "name": "prompt",
8194
+ "allowNo": true,
8195
+ "type": "boolean"
7957
8196
  },
7958
8197
  "debug": {
7959
8198
  "char": "d",
@@ -8306,16 +8545,13 @@
8306
8545
  "profile:purge:org:hardis"
8307
8546
  ]
8308
8547
  },
8309
- "hardis:org:refresh:after-refresh": {
8548
+ "hardis:org:retrieve:packageconfig": {
8310
8549
  "aliases": [],
8311
8550
  "args": {},
8312
- "description": "\n## Command Behavior\n\n**Restores all previously backed-up Connected Apps (including Consumer Secrets), certificates, custom settings, records and other metadata to a Salesforce org after a sandbox refresh.**\n\nThis command is the second step in the sandbox refresh process. It scans the backup folder created before the refresh, allows interactive or flag-driven selection of items to restore, and automates cleanup and redeployment to the refreshed org while preserving credentials and configuration.\n\nKey functionalities:\n\n- **Choose a backup to restore:** Lets you pick the saved sandbox project that contains the artifacts to restore.\n- **Select which items to restore:** Finds Connected App XMLs, certificates, custom settings and other artifacts and lets you pick what to restore (or restore all).\n- **Safety checks and validation:** Confirms files exist and prompts before making changes to the target org.\n- **Prepare org for restore:** Optionally cleans up existing Connected Apps so saved apps can be re-deployed without conflict.\n- **Redeploy saved artifacts:** Restores Connected Apps (with saved secrets), certificates, SAML SSO configs, custom settings and other metadata.\n- **Handle SAML configs:** Cleans and updates SAML XML files and helps you choose certificates to wire into restored configs.\n- **Restore records:** Optionally runs data import from selected SFDMU workspaces to restore record data.\n- **Reporting & persistence:** Sends restore reports and can update project config to record what was restored.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is intended to be run after a sandbox refresh to re-apply saved metadata, credentials and data.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Backup Folder Handling:** Reads the immediate subfolders of `scripts/sandbox-refresh/` and validates the chosen project contains the expected `manifest/` and `force-app` layout.\n- **Metadata & Deployment APIs:** Uses `sf project deploy start --manifest` for package-based deploys, `sf project deploy start --metadata-dir` for MDAPI artifacts (certificates), and utility functions for Connected App deployment that preserve consumer secrets.\n- **SAML Handling:** Queries active certificates via tooling API, updates SAML XML files, and deploys using `sf project deploy start -m SamlSsoConfig`.\n- **Records Handling:** Uses interactive selection of SFDMU workspaces and runs data import utilities to restore records.\n- **Error Handling & Summary:** Aggregates results, logs success/warnings/errors, and returns a structured result indicating which items were restored and any failures.\n\n</details>\n",
8551
+ "description": "\n**Retrieves the installed package configuration from a Salesforce org and optionally updates the local project configuration.**\n\nThis command is useful for maintaining an accurate record of installed packages within your Salesforce project, which is crucial for managing dependencies and ensuring consistent deployments across environments.\n\nKey functionalities:\n\n- **Package Listing:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a list of all installed packages.\n- **Configuration Update:** Offers the option to update your local project's configuration with the retrieved list of installed packages. This can be beneficial for automating package installations during environment setup or CI/CD processes.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Org Connection:** It establishes a connection to the target Salesforce org using the provided or prompted username.\n- **Metadata Retrieval:** It utilizes `MetadataUtils.listInstalledPackages` to query the Salesforce org and obtain details about the installed packages.\n- **Interactive Prompt:** It uses the `prompts` library to ask the user whether they want to update their local project configuration with the retrieved package list.\n- **Configuration Management:** If the user confirms, it calls `managePackageConfig` to update the project's configuration file (likely `.sfdx-hardis.yml`) with the new package information.\n- **User Feedback:** Provides clear messages to the user about the success of the package retrieval and configuration update.\n</details>\n",
8313
8552
  "examples": [
8314
- "$ sf hardis:org:refresh:after-refresh",
8315
- "$ sf hardis:org:refresh:after-refresh --name \"MyConnectedApp\" // Process specific app, no selection prompt",
8316
- "$ sf hardis:org:refresh:after-refresh --name \"App1,App2,App3\" // Process multiple apps, no selection prompt",
8317
- "$ sf hardis:org:refresh:after-refresh --all // Process all apps, no selection prompt",
8318
- "$ sf hardis:org:refresh:after-refresh --target-org myDevOrg"
8553
+ "$ sf hardis:org:retrieve:packageconfig",
8554
+ "sf hardis:org:retrieve:packageconfig -u myOrg"
8319
8555
  ],
8320
8556
  "flags": {
8321
8557
  "json": {
@@ -8333,37 +8569,16 @@
8333
8569
  "multiple": false,
8334
8570
  "type": "option"
8335
8571
  },
8336
- "target-org": {
8337
- "char": "o",
8338
- "name": "target-org",
8339
- "noCacheDefault": true,
8340
- "required": true,
8341
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8342
- "hasDynamicHelp": true,
8343
- "multiple": false,
8344
- "type": "option"
8345
- },
8346
- "name": {
8347
- "char": "n",
8348
- "description": "Connected App name(s) to process (bypasses selection prompt). For multiple apps, separate with commas (e.g., \"App1,App2\")",
8349
- "name": "name",
8350
- "summary": "Filter according to Name criteria",
8351
- "hasDynamicHelp": false,
8352
- "multiple": false,
8353
- "type": "option"
8354
- },
8355
- "all": {
8356
- "char": "a",
8357
- "description": "If set, all Connected Apps from the local repository will be processed. Takes precedence over --name if both are specified.",
8358
- "name": "all",
8359
- "summary": "Process all Connected Apps without selection prompt",
8572
+ "debug": {
8573
+ "char": "d",
8574
+ "description": "Activate debug mode (more logs)",
8575
+ "name": "debug",
8360
8576
  "allowNo": false,
8361
8577
  "type": "boolean"
8362
8578
  },
8363
8579
  "websocket": {
8364
- "description": "WebSocket host:port for VS Code SFDX Hardis UI integration",
8580
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8365
8581
  "name": "websocket",
8366
- "summary": "Websocket host:port for VsCode SFDX Hardis UI integration",
8367
8582
  "hasDynamicHelp": false,
8368
8583
  "multiple": false,
8369
8584
  "type": "option"
@@ -8371,87 +8586,16 @@
8371
8586
  "skipauth": {
8372
8587
  "description": "Skip authentication check when a default username is required",
8373
8588
  "name": "skipauth",
8374
- "summary": "Skip authentication check when a default username is required",
8375
- "allowNo": false,
8376
- "type": "boolean"
8377
- }
8378
- },
8379
- "hasDynamicHelp": true,
8380
- "hiddenAliases": [],
8381
- "id": "hardis:org:refresh:after-refresh",
8382
- "pluginAlias": "sfdx-hardis",
8383
- "pluginName": "sfdx-hardis",
8384
- "pluginType": "core",
8385
- "strict": true,
8386
- "enableJsonFlag": true,
8387
- "title": "Restore Connected Apps after org refresh",
8388
- "requiresProject": true,
8389
- "isESM": true,
8390
- "relativePath": [
8391
- "lib",
8392
- "commands",
8393
- "hardis",
8394
- "org",
8395
- "refresh",
8396
- "after-refresh.js"
8397
- ],
8398
- "aliasPermutations": [],
8399
- "permutations": [
8400
- "hardis:org:refresh:after-refresh",
8401
- "org:hardis:refresh:after-refresh",
8402
- "org:refresh:hardis:after-refresh",
8403
- "org:refresh:after-refresh:hardis",
8404
- "hardis:refresh:org:after-refresh",
8405
- "refresh:hardis:org:after-refresh",
8406
- "refresh:org:hardis:after-refresh",
8407
- "refresh:org:after-refresh:hardis",
8408
- "hardis:refresh:after-refresh:org",
8409
- "refresh:hardis:after-refresh:org",
8410
- "refresh:after-refresh:hardis:org",
8411
- "refresh:after-refresh:org:hardis",
8412
- "hardis:org:after-refresh:refresh",
8413
- "org:hardis:after-refresh:refresh",
8414
- "org:after-refresh:hardis:refresh",
8415
- "org:after-refresh:refresh:hardis",
8416
- "hardis:after-refresh:org:refresh",
8417
- "after-refresh:hardis:org:refresh",
8418
- "after-refresh:org:hardis:refresh",
8419
- "after-refresh:org:refresh:hardis",
8420
- "hardis:after-refresh:refresh:org",
8421
- "after-refresh:hardis:refresh:org",
8422
- "after-refresh:refresh:hardis:org",
8423
- "after-refresh:refresh:org:hardis"
8424
- ]
8425
- },
8426
- "hardis:org:refresh:before-refresh": {
8427
- "aliases": [],
8428
- "args": {},
8429
- "description": "\n## Command Behavior\n\n**Backs up all Connected Apps (including Consumer Secrets), certificates, custom settings, records and other metadata from a Salesforce org before a sandbox refresh, enabling full restoration after the refresh.**\n\nThis command prepares a complete backup prior to a sandbox refresh. It creates a dedicated project under `scripts/sandbox-refresh/<sandbox-folder>`, retrieves metadata and data, attempts to capture Connected App consumer secrets, and can optionally delete the apps so they can be reuploaded after the refresh.\n\nKey functionalities:\n\n- **Create a save project:** Generates a dedicated project folder to store all artifacts for the sandbox backup.\n- **Find and select Connected Apps:** Lists Connected Apps in the org and lets you pick specific apps, use a name filter, or process all apps.\n- **Save metadata for restore:** Builds a manifest and retrieves the metadata types you choose so they can be restored after the refresh.\n- **Capture Consumer Secrets:** Attempts to capture Connected App consumer secrets automatically (opens a browser session when possible) and falls back to a short manual prompt when needed.\n- **Collect certificates:** Saves certificate files and their definitions so they can be redeployed later.\n- **Export custom settings & records:** Lets you pick custom settings to export as JSON and optionally export records using configured data workspaces.\n- **Persist choices & report:** Stores your backup choices in project config and sends report files for traceability.\n- **Optional cleanup:** Can delete backed-up Connected Apps from the org so they can be re-uploaded cleanly after the refresh.\n- **Interactive safety checks:** Prompts you to confirm package contents and other potentially destructive actions; sensible defaults are chosen where appropriate.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is intended to be run before a sandbox refresh so that all credentials, certificates, metadata and data can be restored afterwards.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Salesforce CLI Integration:** Uses `sf org list metadata`, `sf project retrieve start`, `sf project generate`, `sf project deploy start`, and `sf data tree export`/`import` where applicable.\n- **Metadata Handling:** Writes and reads package XML files under the generated project (`manifest/`), copies MDAPI certificate artifacts into `force-app/main/default/certs`, and produces `package-metadata-to-restore.xml` for post-refresh deployment.\n- **Consumer Secret Handling:** Uses `puppeteer-core` with an executable path from `getChromeExecutablePath()` (env var `PUPPETEER_EXECUTABLE_PATH` may be required). Falls back to manual prompt when browser automation cannot be used.\n- **Data & Records:** Exports custom settings to JSON and supports exporting records through SFDMU workspaces chosen interactively.\n- **Config & Reporting:** Updates project/user config under `config/.sfdx-hardis.yml#refreshSandboxConfig` and reports artifacts to the WebSocket client.\n- **Error Handling:** Provides clear error messages and a summary response object indicating success/failure and which secrets were captured.\n\n</details>\n",
8430
- "examples": [
8431
- "$ sf hardis:org:refresh:before-refresh",
8432
- "$ sf hardis:org:refresh:before-refresh --name \"MyConnectedApp\"",
8433
- "$ sf hardis:org:refresh:before-refresh --name \"App1,App2,App3\"",
8434
- "$ sf hardis:org:refresh:before-refresh --all",
8435
- "$ sf hardis:org:refresh:before-refresh --delete"
8436
- ],
8437
- "flags": {
8438
- "json": {
8439
- "description": "Format output as json.",
8440
- "helpGroup": "GLOBAL",
8441
- "name": "json",
8442
8589
  "allowNo": false,
8443
8590
  "type": "boolean"
8444
8591
  },
8445
- "flags-dir": {
8446
- "helpGroup": "GLOBAL",
8447
- "name": "flags-dir",
8448
- "summary": "Import flag values from a directory.",
8449
- "hasDynamicHelp": false,
8450
- "multiple": false,
8451
- "type": "option"
8452
- },
8453
8592
  "target-org": {
8593
+ "aliases": [
8594
+ "targetusername",
8595
+ "u"
8596
+ ],
8454
8597
  "char": "o",
8598
+ "deprecateAliases": true,
8455
8599
  "name": "target-org",
8456
8600
  "noCacheDefault": true,
8457
8601
  "required": true,
@@ -8459,90 +8603,53 @@
8459
8603
  "hasDynamicHelp": true,
8460
8604
  "multiple": false,
8461
8605
  "type": "option"
8462
- },
8463
- "delete": {
8464
- "char": "d",
8465
- "description": "By default, Connected Apps are not deleted from the org after saving. Set this flag to force their deletion so they will be able to be reuploaded again after refreshing the org.",
8466
- "name": "delete",
8467
- "summary": "Delete Connected Apps from org after saving",
8468
- "allowNo": false,
8469
- "type": "boolean"
8470
- },
8471
- "name": {
8472
- "char": "n",
8473
- "description": "Connected App name(s) to process. For multiple apps, separate with commas (e.g., \"App1,App2\")",
8474
- "name": "name",
8475
- "summary": "Filter according to Name criteria",
8476
- "hasDynamicHelp": false,
8477
- "multiple": false,
8478
- "type": "option"
8479
- },
8480
- "all": {
8481
- "char": "a",
8482
- "description": "If set, all Connected Apps from the org will be processed. Takes precedence over --name if both are specified.",
8483
- "name": "all",
8484
- "summary": "Process all Connected Apps without selection prompt",
8485
- "allowNo": false,
8486
- "type": "boolean"
8487
- },
8488
- "websocket": {
8489
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8490
- "name": "websocket",
8491
- "hasDynamicHelp": false,
8492
- "multiple": false,
8493
- "type": "option"
8494
- },
8495
- "skipauth": {
8496
- "description": "Skip authentication check when a default username is required",
8497
- "name": "skipauth",
8498
- "allowNo": false,
8499
- "type": "boolean"
8500
8606
  }
8501
8607
  },
8502
8608
  "hasDynamicHelp": true,
8503
8609
  "hiddenAliases": [],
8504
- "id": "hardis:org:refresh:before-refresh",
8610
+ "id": "hardis:org:retrieve:packageconfig",
8505
8611
  "pluginAlias": "sfdx-hardis",
8506
8612
  "pluginName": "sfdx-hardis",
8507
8613
  "pluginType": "core",
8508
8614
  "strict": true,
8509
8615
  "enableJsonFlag": true,
8510
- "requiresProject": true,
8616
+ "title": "Retrieve package configuration from an org",
8617
+ "requiresProject": false,
8511
8618
  "isESM": true,
8512
8619
  "relativePath": [
8513
8620
  "lib",
8514
8621
  "commands",
8515
8622
  "hardis",
8516
8623
  "org",
8517
- "refresh",
8518
- "before-refresh.js"
8624
+ "retrieve",
8625
+ "packageconfig.js"
8519
8626
  ],
8520
8627
  "aliasPermutations": [],
8521
8628
  "permutations": [
8522
- "hardis:org:refresh:before-refresh",
8523
- "org:hardis:refresh:before-refresh",
8524
- "org:refresh:hardis:before-refresh",
8525
- "org:refresh:before-refresh:hardis",
8526
- "hardis:refresh:org:before-refresh",
8527
- "refresh:hardis:org:before-refresh",
8528
- "refresh:org:hardis:before-refresh",
8529
- "refresh:org:before-refresh:hardis",
8530
- "hardis:refresh:before-refresh:org",
8531
- "refresh:hardis:before-refresh:org",
8532
- "refresh:before-refresh:hardis:org",
8533
- "refresh:before-refresh:org:hardis",
8534
- "hardis:org:before-refresh:refresh",
8535
- "org:hardis:before-refresh:refresh",
8536
- "org:before-refresh:hardis:refresh",
8537
- "org:before-refresh:refresh:hardis",
8538
- "hardis:before-refresh:org:refresh",
8539
- "before-refresh:hardis:org:refresh",
8540
- "before-refresh:org:hardis:refresh",
8541
- "before-refresh:org:refresh:hardis",
8542
- "hardis:before-refresh:refresh:org",
8543
- "before-refresh:hardis:refresh:org",
8544
- "before-refresh:refresh:hardis:org",
8545
- "before-refresh:refresh:org:hardis"
8629
+ "hardis:org:retrieve:packageconfig",
8630
+ "org:hardis:retrieve:packageconfig",
8631
+ "org:retrieve:hardis:packageconfig",
8632
+ "org:retrieve:packageconfig:hardis",
8633
+ "hardis:retrieve:org:packageconfig",
8634
+ "retrieve:hardis:org:packageconfig",
8635
+ "retrieve:org:hardis:packageconfig",
8636
+ "retrieve:org:packageconfig:hardis",
8637
+ "hardis:retrieve:packageconfig:org",
8638
+ "retrieve:hardis:packageconfig:org",
8639
+ "retrieve:packageconfig:hardis:org",
8640
+ "retrieve:packageconfig:org:hardis",
8641
+ "hardis:org:packageconfig:retrieve",
8642
+ "org:hardis:packageconfig:retrieve",
8643
+ "org:packageconfig:hardis:retrieve",
8644
+ "org:packageconfig:retrieve:hardis",
8645
+ "hardis:packageconfig:org:retrieve",
8646
+ "packageconfig:hardis:org:retrieve",
8647
+ "packageconfig:org:hardis:retrieve",
8648
+ "packageconfig:org:retrieve:hardis",
8649
+ "hardis:packageconfig:retrieve:org",
8650
+ "packageconfig:hardis:retrieve:org",
8651
+ "packageconfig:retrieve:hardis:org",
8652
+ "packageconfig:retrieve:org:hardis"
8546
8653
  ]
8547
8654
  },
8548
8655
  "hardis:org:test:apex": {
@@ -8634,142 +8741,35 @@
8634
8741
  "commands",
8635
8742
  "hardis",
8636
8743
  "org",
8637
- "test",
8638
- "apex.js"
8639
- ],
8640
- "aliasPermutations": [],
8641
- "permutations": [
8642
- "hardis:org:test:apex",
8643
- "org:hardis:test:apex",
8644
- "org:test:hardis:apex",
8645
- "org:test:apex:hardis",
8646
- "hardis:test:org:apex",
8647
- "test:hardis:org:apex",
8648
- "test:org:hardis:apex",
8649
- "test:org:apex:hardis",
8650
- "hardis:test:apex:org",
8651
- "test:hardis:apex:org",
8652
- "test:apex:hardis:org",
8653
- "test:apex:org:hardis",
8654
- "hardis:org:apex:test",
8655
- "org:hardis:apex:test",
8656
- "org:apex:hardis:test",
8657
- "org:apex:test:hardis",
8658
- "hardis:apex:org:test",
8659
- "apex:hardis:org:test",
8660
- "apex:org:hardis:test",
8661
- "apex:org:test:hardis",
8662
- "hardis:apex:test:org",
8663
- "apex:hardis:test:org",
8664
- "apex:test:hardis:org",
8665
- "apex:test:org:hardis"
8666
- ]
8667
- },
8668
- "hardis:org:retrieve:packageconfig": {
8669
- "aliases": [],
8670
- "args": {},
8671
- "description": "\n**Retrieves the installed package configuration from a Salesforce org and optionally updates the local project configuration.**\n\nThis command is useful for maintaining an accurate record of installed packages within your Salesforce project, which is crucial for managing dependencies and ensuring consistent deployments across environments.\n\nKey functionalities:\n\n- **Package Listing:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a list of all installed packages.\n- **Configuration Update:** Offers the option to update your local project's configuration with the retrieved list of installed packages. This can be beneficial for automating package installations during environment setup or CI/CD processes.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Org Connection:** It establishes a connection to the target Salesforce org using the provided or prompted username.\n- **Metadata Retrieval:** It utilizes `MetadataUtils.listInstalledPackages` to query the Salesforce org and obtain details about the installed packages.\n- **Interactive Prompt:** It uses the `prompts` library to ask the user whether they want to update their local project configuration with the retrieved package list.\n- **Configuration Management:** If the user confirms, it calls `managePackageConfig` to update the project's configuration file (likely `.sfdx-hardis.yml`) with the new package information.\n- **User Feedback:** Provides clear messages to the user about the success of the package retrieval and configuration update.\n</details>\n",
8672
- "examples": [
8673
- "$ sf hardis:org:retrieve:packageconfig",
8674
- "sf hardis:org:retrieve:packageconfig -u myOrg"
8675
- ],
8676
- "flags": {
8677
- "json": {
8678
- "description": "Format output as json.",
8679
- "helpGroup": "GLOBAL",
8680
- "name": "json",
8681
- "allowNo": false,
8682
- "type": "boolean"
8683
- },
8684
- "flags-dir": {
8685
- "helpGroup": "GLOBAL",
8686
- "name": "flags-dir",
8687
- "summary": "Import flag values from a directory.",
8688
- "hasDynamicHelp": false,
8689
- "multiple": false,
8690
- "type": "option"
8691
- },
8692
- "debug": {
8693
- "char": "d",
8694
- "description": "Activate debug mode (more logs)",
8695
- "name": "debug",
8696
- "allowNo": false,
8697
- "type": "boolean"
8698
- },
8699
- "websocket": {
8700
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8701
- "name": "websocket",
8702
- "hasDynamicHelp": false,
8703
- "multiple": false,
8704
- "type": "option"
8705
- },
8706
- "skipauth": {
8707
- "description": "Skip authentication check when a default username is required",
8708
- "name": "skipauth",
8709
- "allowNo": false,
8710
- "type": "boolean"
8711
- },
8712
- "target-org": {
8713
- "aliases": [
8714
- "targetusername",
8715
- "u"
8716
- ],
8717
- "char": "o",
8718
- "deprecateAliases": true,
8719
- "name": "target-org",
8720
- "noCacheDefault": true,
8721
- "required": true,
8722
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8723
- "hasDynamicHelp": true,
8724
- "multiple": false,
8725
- "type": "option"
8726
- }
8727
- },
8728
- "hasDynamicHelp": true,
8729
- "hiddenAliases": [],
8730
- "id": "hardis:org:retrieve:packageconfig",
8731
- "pluginAlias": "sfdx-hardis",
8732
- "pluginName": "sfdx-hardis",
8733
- "pluginType": "core",
8734
- "strict": true,
8735
- "enableJsonFlag": true,
8736
- "title": "Retrieve package configuration from an org",
8737
- "requiresProject": false,
8738
- "isESM": true,
8739
- "relativePath": [
8740
- "lib",
8741
- "commands",
8742
- "hardis",
8743
- "org",
8744
- "retrieve",
8745
- "packageconfig.js"
8744
+ "test",
8745
+ "apex.js"
8746
8746
  ],
8747
8747
  "aliasPermutations": [],
8748
8748
  "permutations": [
8749
- "hardis:org:retrieve:packageconfig",
8750
- "org:hardis:retrieve:packageconfig",
8751
- "org:retrieve:hardis:packageconfig",
8752
- "org:retrieve:packageconfig:hardis",
8753
- "hardis:retrieve:org:packageconfig",
8754
- "retrieve:hardis:org:packageconfig",
8755
- "retrieve:org:hardis:packageconfig",
8756
- "retrieve:org:packageconfig:hardis",
8757
- "hardis:retrieve:packageconfig:org",
8758
- "retrieve:hardis:packageconfig:org",
8759
- "retrieve:packageconfig:hardis:org",
8760
- "retrieve:packageconfig:org:hardis",
8761
- "hardis:org:packageconfig:retrieve",
8762
- "org:hardis:packageconfig:retrieve",
8763
- "org:packageconfig:hardis:retrieve",
8764
- "org:packageconfig:retrieve:hardis",
8765
- "hardis:packageconfig:org:retrieve",
8766
- "packageconfig:hardis:org:retrieve",
8767
- "packageconfig:org:hardis:retrieve",
8768
- "packageconfig:org:retrieve:hardis",
8769
- "hardis:packageconfig:retrieve:org",
8770
- "packageconfig:hardis:retrieve:org",
8771
- "packageconfig:retrieve:hardis:org",
8772
- "packageconfig:retrieve:org:hardis"
8749
+ "hardis:org:test:apex",
8750
+ "org:hardis:test:apex",
8751
+ "org:test:hardis:apex",
8752
+ "org:test:apex:hardis",
8753
+ "hardis:test:org:apex",
8754
+ "test:hardis:org:apex",
8755
+ "test:org:hardis:apex",
8756
+ "test:org:apex:hardis",
8757
+ "hardis:test:apex:org",
8758
+ "test:hardis:apex:org",
8759
+ "test:apex:hardis:org",
8760
+ "test:apex:org:hardis",
8761
+ "hardis:org:apex:test",
8762
+ "org:hardis:apex:test",
8763
+ "org:apex:hardis:test",
8764
+ "org:apex:test:hardis",
8765
+ "hardis:apex:org:test",
8766
+ "apex:hardis:org:test",
8767
+ "apex:org:hardis:test",
8768
+ "apex:org:test:hardis",
8769
+ "hardis:apex:test:org",
8770
+ "apex:hardis:test:org",
8771
+ "apex:test:hardis:org",
8772
+ "apex:test:org:hardis"
8773
8773
  ]
8774
8774
  },
8775
8775
  "hardis:org:user:activateinvalid": {
@@ -10068,6 +10068,109 @@
10068
10068
  "auth:configure:project:hardis"
10069
10069
  ]
10070
10070
  },
10071
+ "hardis:project:convert:profilestopermsets": {
10072
+ "aliases": [],
10073
+ "args": {},
10074
+ "description": "\n## Command Behavior\n\n**Converts existing Salesforce Profiles into Permission Sets, facilitating a more granular and recommended security model.**\n\nThis command helps in migrating permissions from Profiles to Permission Sets, which is a best practice for managing user access in Salesforce. It creates a new Permission Set for each specified Profile, adopting a naming convention of `PS_PROFILENAME`.\n\nKey functionalities:\n\n- **Profile to Permission Set Conversion:** Automatically extracts permissions from a Profile and creates a corresponding Permission Set.\n- **Naming Convention:** New Permission Sets are named with a `PS_` prefix followed by the Profile name (e.g., `PS_Standard_User`).\n- **Exclusion Filter:** Allows you to exclude specific Profiles from the conversion process using the `--except` flag.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **External Plugin Integration:** It relies on the `shane-sfdx-plugins` (specifically the `sf shane:profile:convert` command) to perform the actual conversion.\n- **File System Scan:** It reads the contents of the `force-app/main/default/profiles` directory to identify all available Profile metadata files.\n- **Command Execution:** For each identified Profile (that is not excluded), it constructs and executes the `sf shane:profile:convert` command with the appropriate Profile name and desired Permission Set name.\n- **Error Handling:** Includes basic error handling for the external command execution.\n</details>\n",
10075
+ "examples": [
10076
+ "$ sf hardis:project:convert:profilestopermsets"
10077
+ ],
10078
+ "flags": {
10079
+ "json": {
10080
+ "description": "Format output as json.",
10081
+ "helpGroup": "GLOBAL",
10082
+ "name": "json",
10083
+ "allowNo": false,
10084
+ "type": "boolean"
10085
+ },
10086
+ "flags-dir": {
10087
+ "helpGroup": "GLOBAL",
10088
+ "name": "flags-dir",
10089
+ "summary": "Import flag values from a directory.",
10090
+ "hasDynamicHelp": false,
10091
+ "multiple": false,
10092
+ "type": "option"
10093
+ },
10094
+ "except": {
10095
+ "char": "e",
10096
+ "description": "List of filters",
10097
+ "name": "except",
10098
+ "default": [],
10099
+ "hasDynamicHelp": false,
10100
+ "multiple": true,
10101
+ "type": "option"
10102
+ },
10103
+ "debug": {
10104
+ "char": "d",
10105
+ "description": "Activate debug mode (more logs)",
10106
+ "name": "debug",
10107
+ "allowNo": false,
10108
+ "type": "boolean"
10109
+ },
10110
+ "websocket": {
10111
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
10112
+ "name": "websocket",
10113
+ "hasDynamicHelp": false,
10114
+ "multiple": false,
10115
+ "type": "option"
10116
+ },
10117
+ "skipauth": {
10118
+ "description": "Skip authentication check when a default username is required",
10119
+ "name": "skipauth",
10120
+ "allowNo": false,
10121
+ "type": "boolean"
10122
+ }
10123
+ },
10124
+ "hasDynamicHelp": false,
10125
+ "hiddenAliases": [],
10126
+ "id": "hardis:project:convert:profilestopermsets",
10127
+ "pluginAlias": "sfdx-hardis",
10128
+ "pluginName": "sfdx-hardis",
10129
+ "pluginType": "core",
10130
+ "strict": true,
10131
+ "enableJsonFlag": true,
10132
+ "title": "Convert Profiles into Permission Sets",
10133
+ "requiresProject": true,
10134
+ "requiresSfdxPlugins": [
10135
+ "shane-sfdx-plugins"
10136
+ ],
10137
+ "isESM": true,
10138
+ "relativePath": [
10139
+ "lib",
10140
+ "commands",
10141
+ "hardis",
10142
+ "project",
10143
+ "convert",
10144
+ "profilestopermsets.js"
10145
+ ],
10146
+ "aliasPermutations": [],
10147
+ "permutations": [
10148
+ "hardis:project:convert:profilestopermsets",
10149
+ "project:hardis:convert:profilestopermsets",
10150
+ "project:convert:hardis:profilestopermsets",
10151
+ "project:convert:profilestopermsets:hardis",
10152
+ "hardis:convert:project:profilestopermsets",
10153
+ "convert:hardis:project:profilestopermsets",
10154
+ "convert:project:hardis:profilestopermsets",
10155
+ "convert:project:profilestopermsets:hardis",
10156
+ "hardis:convert:profilestopermsets:project",
10157
+ "convert:hardis:profilestopermsets:project",
10158
+ "convert:profilestopermsets:hardis:project",
10159
+ "convert:profilestopermsets:project:hardis",
10160
+ "hardis:project:profilestopermsets:convert",
10161
+ "project:hardis:profilestopermsets:convert",
10162
+ "project:profilestopermsets:hardis:convert",
10163
+ "project:profilestopermsets:convert:hardis",
10164
+ "hardis:profilestopermsets:project:convert",
10165
+ "profilestopermsets:hardis:project:convert",
10166
+ "profilestopermsets:project:hardis:convert",
10167
+ "profilestopermsets:project:convert:hardis",
10168
+ "hardis:profilestopermsets:convert:project",
10169
+ "profilestopermsets:hardis:convert:project",
10170
+ "profilestopermsets:convert:hardis:project",
10171
+ "profilestopermsets:convert:project:hardis"
10172
+ ]
10173
+ },
10071
10174
  "hardis:project:clean:emptyitems": {
10072
10175
  "aliases": [],
10073
10176
  "args": {},
@@ -11654,109 +11757,6 @@
11654
11757
  "xml:clean:project:hardis"
11655
11758
  ]
11656
11759
  },
11657
- "hardis:project:convert:profilestopermsets": {
11658
- "aliases": [],
11659
- "args": {},
11660
- "description": "\n## Command Behavior\n\n**Converts existing Salesforce Profiles into Permission Sets, facilitating a more granular and recommended security model.**\n\nThis command helps in migrating permissions from Profiles to Permission Sets, which is a best practice for managing user access in Salesforce. It creates a new Permission Set for each specified Profile, adopting a naming convention of `PS_PROFILENAME`.\n\nKey functionalities:\n\n- **Profile to Permission Set Conversion:** Automatically extracts permissions from a Profile and creates a corresponding Permission Set.\n- **Naming Convention:** New Permission Sets are named with a `PS_` prefix followed by the Profile name (e.g., `PS_Standard_User`).\n- **Exclusion Filter:** Allows you to exclude specific Profiles from the conversion process using the `--except` flag.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **External Plugin Integration:** It relies on the `shane-sfdx-plugins` (specifically the `sf shane:profile:convert` command) to perform the actual conversion.\n- **File System Scan:** It reads the contents of the `force-app/main/default/profiles` directory to identify all available Profile metadata files.\n- **Command Execution:** For each identified Profile (that is not excluded), it constructs and executes the `sf shane:profile:convert` command with the appropriate Profile name and desired Permission Set name.\n- **Error Handling:** Includes basic error handling for the external command execution.\n</details>\n",
11661
- "examples": [
11662
- "$ sf hardis:project:convert:profilestopermsets"
11663
- ],
11664
- "flags": {
11665
- "json": {
11666
- "description": "Format output as json.",
11667
- "helpGroup": "GLOBAL",
11668
- "name": "json",
11669
- "allowNo": false,
11670
- "type": "boolean"
11671
- },
11672
- "flags-dir": {
11673
- "helpGroup": "GLOBAL",
11674
- "name": "flags-dir",
11675
- "summary": "Import flag values from a directory.",
11676
- "hasDynamicHelp": false,
11677
- "multiple": false,
11678
- "type": "option"
11679
- },
11680
- "except": {
11681
- "char": "e",
11682
- "description": "List of filters",
11683
- "name": "except",
11684
- "default": [],
11685
- "hasDynamicHelp": false,
11686
- "multiple": true,
11687
- "type": "option"
11688
- },
11689
- "debug": {
11690
- "char": "d",
11691
- "description": "Activate debug mode (more logs)",
11692
- "name": "debug",
11693
- "allowNo": false,
11694
- "type": "boolean"
11695
- },
11696
- "websocket": {
11697
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
11698
- "name": "websocket",
11699
- "hasDynamicHelp": false,
11700
- "multiple": false,
11701
- "type": "option"
11702
- },
11703
- "skipauth": {
11704
- "description": "Skip authentication check when a default username is required",
11705
- "name": "skipauth",
11706
- "allowNo": false,
11707
- "type": "boolean"
11708
- }
11709
- },
11710
- "hasDynamicHelp": false,
11711
- "hiddenAliases": [],
11712
- "id": "hardis:project:convert:profilestopermsets",
11713
- "pluginAlias": "sfdx-hardis",
11714
- "pluginName": "sfdx-hardis",
11715
- "pluginType": "core",
11716
- "strict": true,
11717
- "enableJsonFlag": true,
11718
- "title": "Convert Profiles into Permission Sets",
11719
- "requiresProject": true,
11720
- "requiresSfdxPlugins": [
11721
- "shane-sfdx-plugins"
11722
- ],
11723
- "isESM": true,
11724
- "relativePath": [
11725
- "lib",
11726
- "commands",
11727
- "hardis",
11728
- "project",
11729
- "convert",
11730
- "profilestopermsets.js"
11731
- ],
11732
- "aliasPermutations": [],
11733
- "permutations": [
11734
- "hardis:project:convert:profilestopermsets",
11735
- "project:hardis:convert:profilestopermsets",
11736
- "project:convert:hardis:profilestopermsets",
11737
- "project:convert:profilestopermsets:hardis",
11738
- "hardis:convert:project:profilestopermsets",
11739
- "convert:hardis:project:profilestopermsets",
11740
- "convert:project:hardis:profilestopermsets",
11741
- "convert:project:profilestopermsets:hardis",
11742
- "hardis:convert:profilestopermsets:project",
11743
- "convert:hardis:profilestopermsets:project",
11744
- "convert:profilestopermsets:hardis:project",
11745
- "convert:profilestopermsets:project:hardis",
11746
- "hardis:project:profilestopermsets:convert",
11747
- "project:hardis:profilestopermsets:convert",
11748
- "project:profilestopermsets:hardis:convert",
11749
- "project:profilestopermsets:convert:hardis",
11750
- "hardis:profilestopermsets:project:convert",
11751
- "profilestopermsets:hardis:project:convert",
11752
- "profilestopermsets:project:hardis:convert",
11753
- "profilestopermsets:project:convert:hardis",
11754
- "hardis:profilestopermsets:convert:project",
11755
- "profilestopermsets:hardis:convert:project",
11756
- "profilestopermsets:convert:hardis:project",
11757
- "profilestopermsets:convert:project:hardis"
11758
- ]
11759
- },
11760
11760
  "hardis:project:deploy:notify": {
11761
11761
  "aliases": [],
11762
11762
  "args": {},
@@ -15719,5 +15719,5 @@
15719
15719
  ]
15720
15720
  }
15721
15721
  },
15722
- "version": "6.14.1"
15722
+ "version": "6.14.4-beta202512080425.0"
15723
15723
  }