automation_model 1.0.783-dev → 1.0.784-dev

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.
@@ -1,118 +1,54 @@
1
- import * as fs from "fs"; // sync fs
2
- import { promises as fsAsync } from "fs"; // async fs
1
+ import fs from "fs";
3
2
  import { _commandError, _commandFinally, _preCommand } from "./command_common.js";
4
3
  import { Types } from "./stable_browser.js";
5
4
  const checkFileAccess = (filePath, accessMode) => {
6
- return new Promise((resolve) => {
5
+ return new Promise((resolve, reject) => {
7
6
  fs.access(filePath, accessMode, (err) => {
8
- resolve(!err);
7
+ if (err) {
8
+ resolve(false);
9
+ }
10
+ else {
11
+ resolve(true);
12
+ }
9
13
  });
10
14
  });
11
15
  };
12
16
  const getFileName = (filePath) => {
13
17
  const platform = process.platform;
14
- return platform === "win32" ? filePath.split("\\").pop() || "" : filePath.split("/").pop() || "";
18
+ let fileName = "";
19
+ if (platform === "win32") {
20
+ fileName = filePath.split("\\").pop() || "";
21
+ }
22
+ else {
23
+ fileName = filePath.split("/").pop() || "";
24
+ }
25
+ return fileName;
15
26
  };
16
- // Simplified regex check
17
- function testForRegex(text) {
18
- return text.startsWith("regex:");
19
- }
20
27
  export const verifyFileExists = async (filePath, options, context, world) => {
21
- if (!options)
28
+ //First check if the file exists and is accessible
29
+ if (!options) {
22
30
  options = {};
23
- const fileName = getFileName(filePath);
24
- let isSoft = false;
25
- const match = filePath.match(/(soft:)?(regex:|exact:|contains:)(.*)/);
26
- if (match) {
27
- isSoft = !!match[1]; // true if 'soft:' is present
28
31
  }
32
+ const fileName = getFileName(filePath);
29
33
  const state = {
30
34
  locate: false,
31
35
  scroll: false,
32
36
  screenshot: false,
33
37
  highlight: false,
34
- throwError: !isSoft, // don't throw error for soft assertions
38
+ throwError: true,
35
39
  operation: "verifyFileExists",
36
40
  value: filePath,
37
41
  text: `Verify file ${fileName} exists`,
38
42
  options,
39
43
  type: Types.VERIFY_FILE_EXISTS,
40
- world,
44
+ world
41
45
  };
42
46
  await _preCommand(state, context.web);
47
+ let fileAccessible = false;
43
48
  try {
44
- let pathToMatch = filePath;
45
- if (isSoft) {
46
- pathToMatch = filePath.replace(/^soft:/, ""); // remove soft: prefix for parsing
47
- }
48
- let dir;
49
- let input;
50
- if (pathToMatch.includes("regex:")) {
51
- const regexIndex = pathToMatch.indexOf("regex:");
52
- dir = pathToMatch.substring(0, regexIndex - 1); // remove trailing slash
53
- input = pathToMatch.substring(regexIndex);
54
- }
55
- else {
56
- const lastSlashIndex = pathToMatch.lastIndexOf("/");
57
- dir = pathToMatch.substring(0, lastSlashIndex);
58
- input = pathToMatch.substring(lastSlashIndex + 1);
59
- }
60
- if (isSoft) {
61
- dir = dir.slice(0, -5);
62
- }
63
- const files = await fsAsync.readdir(dir);
64
- let found = false;
65
- if (input.startsWith("exact:")) {
66
- const target = input.replace("exact:", "");
67
- found = files.includes(target);
68
- }
69
- else if (input.startsWith("contains:")) {
70
- const target = input.replace("contains:", "");
71
- found = files.some((f) => f.includes(target));
72
- }
73
- else if (input.startsWith("format:")) {
74
- const extension = input.replace("format:", "");
75
- found = files.some((f) => f.endsWith(`.${extension}`));
76
- }
77
- else if (testForRegex(input)) {
78
- let raw = input.replace("regex:", "").trim(); // e.g. "/file/i" or "file.*::i"
79
- let pattern = raw;
80
- let flags = "";
81
- if (raw.startsWith("/") && raw.lastIndexOf("/") > 0) {
82
- const lastSlash = raw.lastIndexOf("/");
83
- flags = raw.substring(lastSlash + 1);
84
- pattern = raw.substring(1, lastSlash);
85
- }
86
- else if (raw.includes("::")) {
87
- [pattern, flags] = raw.split("::");
88
- }
89
- console.log(`Regex pattern: ${pattern}, flags: ${flags}`);
90
- try {
91
- const regex = new RegExp(pattern, flags);
92
- found = files.some((f) => {
93
- const matched = regex.test(f);
94
- return matched;
95
- });
96
- }
97
- catch (regexError) {
98
- throw new Error(`Invalid regex pattern: ${pattern}`);
99
- }
100
- }
101
- else {
102
- // Fallback to exact path check
103
- found = await checkFileAccess(pathToMatch, fs.constants.F_OK);
104
- }
105
- if (!found) {
106
- console.log(`Available files in '${dir}':`, files);
107
- if (!isSoft) {
108
- throw new Error(`No file matched the pattern: ${filePath}`);
109
- }
110
- else {
111
- console.warn(`Soft assertion failed for pattern: ${filePath}`);
112
- }
113
- }
114
- else {
115
- console.log(`File verification successful for pattern: ${input}`);
49
+ fileAccessible = await checkFileAccess(filePath, fs.constants.F_OK);
50
+ if (!fileAccessible) {
51
+ throw new Error(`File ${fileName} does not exist or is not accessible.`);
116
52
  }
117
53
  }
118
54
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"file_checker.js","sourceRoot":"","sources":["../../src/file_checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,UAAU;AAEpC,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,WAAW;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAoB,EAAE;IACjF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YACtC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACnG,CAAC,CAAC;AAEF,yBAAyB;AACzB,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAY,EAAE,OAAY,EAAE,KAAU,EAAE,EAAE;IACjG,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAEtE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;IACpD,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,CAAC,MAAM,EAAE,wCAAwC;QAC7D,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,eAAe,QAAQ,SAAS;QACtC,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,kBAAkB;QAC9B,KAAK;KACN,CAAC;IAEF,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,kCAAkC;QAClF,CAAC;QAED,IAAI,GAAW,CAAC;QAChB,IAAI,KAAa,CAAC;QAElB,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjD,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB;YACxE,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACpD,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC/C,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,IAAG,MAAM,EAAE,CAAC;YACR,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,KAAK,GAAa,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3C,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,gCAAgC;YAC9E,IAAI,OAAO,GAAG,GAAG,CAAC;YAClB,IAAI,KAAK,GAAG,EAAE,CAAC;YAEf,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACrC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,YAAY,KAAK,EAAE,CAAC,CAAC;YAE1D,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC9B,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,KAAK,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;YAAS,CAAC;QACT,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"file_checker.js","sourceRoot":"","sources":["../../src/file_checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAG3C,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAoB,EAAE;IAC/E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YACpC,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CACA,CAAC;AACN,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;SAAM,CAAC;QACJ,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAY,EAAE,OAAY,EAAE,KAAU,EAAC,EAAE;IAC9F,kDAAkD;IAClD,IAAG,CAAC,OAAO,EAAC,CAAC;QACT,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,eAAe,QAAQ,SAAS;QACtC,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,kBAAkB;QAC9B,KAAK;KACR,CAAC;IACF,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC;QACD,cAAc,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,uCAAuC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IACD,OAAM,GAAG,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;YACM,CAAC;QACJ,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "automation_model",
3
- "version": "1.0.783-dev",
3
+ "version": "1.0.784-dev",
4
4
  "description": "An automation infrastructure module to be use for generative AI automation projects.",
5
5
  "main": "lib/index.js",
6
6
  "type": "module",