@mablhq/mabl-cli 2.94.5 → 2.96.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/api/featureSet.js +5 -1
  2. package/api/mablApiClient.js +8 -0
  3. package/commands/branches/branches_cmds/delete.js +63 -0
  4. package/execution/index.js +2 -2
  5. package/mablscript/importer.js +1 -0
  6. package/package.json +1 -1
  7. package/trainer/cli/CliEventHandler.js +69 -2
  8. package/trainer/cli/CliStateProvider.js +5 -1
  9. package/trainer/cli/CliTestGenerationState.js +25 -0
  10. package/trainer/cli/buildCliArtifacts.js +43 -19
  11. package/trainer/cli/runAgenticGeneration.js +15 -5
  12. package/trainer/generation/AgenticGenerationRunner.js +6 -2
  13. package/trainer/generation/TestGenerationOrchestrator.js +12 -15
  14. package/trainer/generation/toolExecutors/CompleteTaskExecutor.js +23 -11
  15. package/trainer/generation/toolExecutors/DeleteLastStepsExecutor.js +2 -1
  16. package/trainer/generation/toolExecutors/RecordAssertElementExecutor.js +3 -2
  17. package/trainer/generation/toolExecutors/RecordAssertionExecutor.js +13 -35
  18. package/trainer/generation/toolExecutors/RecordClickExecutor.js +4 -4
  19. package/trainer/generation/toolExecutors/RecordEnterTextExecutor.js +1 -1
  20. package/trainer/generation/toolExecutors/RecordHoverExecutor.js +1 -1
  21. package/trainer/generation/toolExecutors/RecordStartTaskExecutor.js +24 -4
  22. package/trainer/generation/toolExecutors/ScrollExecutor.js +6 -2
  23. package/trainer/generation/toolExecutors/VisitUrlExecutor.js +1 -1
  24. package/trainer/generation/toolExecutors/WaitExecutor.js +1 -1
  25. package/trainer/sharedUtils/boundingBoxUtils.js +11 -0
  26. package/trainer/sharedUtils/contextBuilder.js +7 -0
  27. package/trainer/sharedUtils/mablscript/extended/ExecuteStepGroupStep.js +3 -0
  28. package/trainer/sharedUtils/messageConversion.js +31 -0
package/api/featureSet.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FeatureSet = exports.FindImplementationVersion = exports.TEST_EXECUTION_AGENT_FEATURE_FLAG = exports.VISUAL_FIND_EXPERIMENTAL_MODEL_FEATURE_FLAG = exports.AI_ASSERTIONS_IN_DOWNLOADS_FEATURE_FLAG = exports.AI_ASSERTIONS_FEATURE_FLAG = exports.ADVANCED_AUTO_HEALING_FEATURE_FLAG = exports.XRAY_INTEGRATION_FEATURE_FLAG = exports.GENERATIVE_AI_FAILURE_ANALYSIS_FEATURE_FLAG = exports.GENERATIVE_AI_FEATURE_FLAG = void 0;
3
+ exports.FeatureSet = exports.FindImplementationVersion = exports.TEST_EXECUTION_AGENT_FEATURE_FLAG = exports.STEP_GROUPS_FEATURE_FLAG = exports.VISUAL_FIND_EXPERIMENTAL_MODEL_FEATURE_FLAG = exports.AI_ASSERTIONS_IN_DOWNLOADS_FEATURE_FLAG = exports.AI_ASSERTIONS_FEATURE_FLAG = exports.ADVANCED_AUTO_HEALING_FEATURE_FLAG = exports.XRAY_INTEGRATION_FEATURE_FLAG = exports.GENERATIVE_AI_FAILURE_ANALYSIS_FEATURE_FLAG = exports.GENERATIVE_AI_FEATURE_FLAG = void 0;
4
4
  const browserLauncher_1 = require("../browserLauncher");
5
5
  const ACCESSIBILITY_CHECK_FEATURE_FLAG = 'accessibility_checks';
6
6
  const PERFORMANCE_TESTING_FEATURE_FLAG = 'performance_testing';
@@ -12,6 +12,7 @@ exports.ADVANCED_AUTO_HEALING_FEATURE_FLAG = 'advanced_auto_healing';
12
12
  exports.AI_ASSERTIONS_FEATURE_FLAG = 'ai_assertion_steps';
13
13
  exports.AI_ASSERTIONS_IN_DOWNLOADS_FEATURE_FLAG = 'ai_assertions_in_downloads';
14
14
  exports.VISUAL_FIND_EXPERIMENTAL_MODEL_FEATURE_FLAG = 'visual_find_experimental_model';
15
+ exports.STEP_GROUPS_FEATURE_FLAG = 'step_groups';
15
16
  const MABL_TEST_EXECUTION_PROXY_FUNCTIONAL_FEATURE_FLAG = 'mabl_test_execution_proxy_functional';
16
17
  const MABL_TEST_EXECUTION_PROXY_LOCAL_FEATURE_FLAG = 'mabl_test_execution_proxy_local';
17
18
  const MABL_TEST_EXECUTION_PROXY_PERFORMANCE_FEATURE_FLAG = 'mabl_test_execution_proxy_performance';
@@ -54,6 +55,9 @@ class FeatureSet {
54
55
  hasVisualFindExperimentalModel() {
55
56
  return this.featureFlags.has(exports.VISUAL_FIND_EXPERIMENTAL_MODEL_FEATURE_FLAG);
56
57
  }
58
+ hasStepGroups() {
59
+ return this.featureFlags.has(exports.STEP_GROUPS_FEATURE_FLAG);
60
+ }
57
61
  hasTestExecutionAgent() {
58
62
  return this.featureFlags.has(exports.TEST_EXECUTION_AGENT_FEATURE_FLAG);
59
63
  }
@@ -628,6 +628,14 @@ class MablApiClient extends basicApiClient_1.BasicApiClient {
628
628
  throw toApiError(`Failed to get Branches`, error);
629
629
  }
630
630
  }
631
+ async deleteBranch(branchId) {
632
+ try {
633
+ return await this.makeDeleteRequest(`${this.baseApiUrl}/branch/${branchId}`);
634
+ }
635
+ catch (error) {
636
+ throw toApiError(`Failed to delete Branch [${branchId}]`, error);
637
+ }
638
+ }
631
639
  async getFileUploadUrl(fileId) {
632
640
  try {
633
641
  return await this.makeGetRequest(`${this.baseApiUrl}/files/fileUpload/url/${fileId}`);
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
7
+ const util_1 = require("../../commandUtil/util");
8
+ const branches_1 = require("../../commandUtil/branches");
9
+ const constants_1 = require("../../constants");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const loggingProvider_1 = require("../../../providers/logging/loggingProvider");
12
+ exports.command = 'delete <identifier>';
13
+ exports.describe = 'Delete a mabl branch by id or name';
14
+ exports.builder = (yargs) => {
15
+ yargs
16
+ .positional('identifier', {
17
+ describe: 'The branch ID or NAME to delete',
18
+ type: 'string',
19
+ nargs: 1,
20
+ demand: 'Branch identifier is required',
21
+ })
22
+ .option(constants_1.CommandArgName, {
23
+ alias: constants_1.CommandArgAliases.Name,
24
+ describe: 'Use identifier as branch name',
25
+ type: 'boolean',
26
+ default: false,
27
+ })
28
+ .option(constants_1.CommandArgWorkspaceId, {
29
+ alias: constants_1.CommandArgAliases.WorkspaceId,
30
+ describe: 'The workspace ID to delete a branch by name',
31
+ nargs: 1,
32
+ type: 'string',
33
+ });
34
+ };
35
+ exports.handler = (0, util_1.failWrapper)(deleteBranch);
36
+ async function deleteBranch(parsed) {
37
+ try {
38
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
39
+ const branchIdentifier = parsed.identifier;
40
+ const lookupByName = parsed.name;
41
+ let branchId;
42
+ let branchLabel;
43
+ if (lookupByName) {
44
+ if (!(0, branches_1.isValidMablBranchName)(branchIdentifier)) {
45
+ throw new Error(`[${branchIdentifier}] is not a valid mabl branch name. Please specify a valid name`);
46
+ }
47
+ const workspaceId = await (0, util_1.getWorkspaceId)(parsed);
48
+ const branch = await apiClient.getBranchByName(workspaceId, branchIdentifier);
49
+ branchId = branch.id ?? branchIdentifier;
50
+ branchLabel = branch.name ?? branchIdentifier;
51
+ }
52
+ else {
53
+ branchId = branchIdentifier;
54
+ branchLabel = branchIdentifier;
55
+ }
56
+ await apiClient.deleteBranch(branchId);
57
+ loggingProvider_1.logger.info(chalk_1.default.green(`Branch ${chalk_1.default.bold(branchLabel)} DELETED`));
58
+ return branchId;
59
+ }
60
+ catch (error) {
61
+ throw new Error(`Error deleting branch: ${error}`);
62
+ }
63
+ }