@midscene/cli 0.7.2 → 0.7.3-beta-20241104100519.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.
package/dist/es/help.js CHANGED
@@ -9,7 +9,7 @@ var require_package = __commonJS({
9
9
  module.exports = {
10
10
  name: "@midscene/cli",
11
11
  description: "An AI-powered automation SDK can control the page, perform assertions, and extract data in JSON format using natural language. See https://midscenejs.com/ for details.",
12
- version: "0.7.2",
12
+ version: "0.7.3-beta-20241104100519.0",
13
13
  repository: "https://github.com/web-infra-dev/midscene",
14
14
  homepage: "https://midscenejs.com/",
15
15
  "jsnext:source": "./src/index.ts",
@@ -35,7 +35,7 @@ var require_package = __commonJS({
35
35
  yargs: "17.7.2"
36
36
  },
37
37
  devDependencies: {
38
- "@modern-js/module-tools": "2.58.2",
38
+ "@modern-js/module-tools": "2.60.6",
39
39
  "@types/node": "^18.0.0",
40
40
  "@types/yargs": "17.0.32",
41
41
  execa: "9.3.0",
package/dist/es/index.js CHANGED
@@ -1,7 +1,61 @@
1
1
  var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __esm = (fn, res) => function __init() {
3
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
4
+ };
2
5
  var __commonJS = (cb, mod) => function __require() {
3
6
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
7
  };
8
+ var __async = (__this, __arguments, generator) => {
9
+ return new Promise((resolve, reject) => {
10
+ var fulfilled = (value) => {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var rejected = (value) => {
18
+ try {
19
+ step(generator.throw(value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ };
24
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
25
+ step((generator = generator.apply(__this, __arguments)).next());
26
+ });
27
+ };
28
+
29
+ // src/args.ts
30
+ function parse(args) {
31
+ const orderedArgs = [];
32
+ args.forEach((arg, index) => {
33
+ if (arg.startsWith("--")) {
34
+ const key = arg.substring(2);
35
+ let value = args[index + 1] && !args[index + 1].startsWith("--") ? args[index + 1] : true;
36
+ if (typeof value === "string" && /^\d+$/.test(value)) {
37
+ value = Number.parseInt(value, 10);
38
+ }
39
+ orderedArgs.push({ name: key, value });
40
+ }
41
+ });
42
+ return orderedArgs;
43
+ }
44
+ function findOnlyItemInArgs(args, name) {
45
+ const found = args.filter((arg) => arg.name === name);
46
+ if (found.length === 0) {
47
+ return false;
48
+ }
49
+ if (found.length > 1) {
50
+ throw new Error(`Multiple values found for ${name}`);
51
+ }
52
+ return found[0].value;
53
+ }
54
+ var init_args = __esm({
55
+ "src/args.ts"() {
56
+ "use strict";
57
+ }
58
+ });
5
59
 
6
60
  // package.json
7
61
  var require_package = __commonJS({
@@ -9,7 +63,7 @@ var require_package = __commonJS({
9
63
  module.exports = {
10
64
  name: "@midscene/cli",
11
65
  description: "An AI-powered automation SDK can control the page, perform assertions, and extract data in JSON format using natural language. See https://midscenejs.com/ for details.",
12
- version: "0.7.2",
66
+ version: "0.7.3-beta-20241104100519.0",
13
67
  repository: "https://github.com/web-infra-dev/midscene",
14
68
  homepage: "https://midscenejs.com/",
15
69
  "jsnext:source": "./src/index.ts",
@@ -35,7 +89,7 @@ var require_package = __commonJS({
35
89
  yargs: "17.7.2"
36
90
  },
37
91
  devDependencies: {
38
- "@modern-js/module-tools": "2.58.2",
92
+ "@modern-js/module-tools": "2.60.6",
39
93
  "@types/node": "^18.0.0",
40
94
  "@types/yargs": "17.0.32",
41
95
  execa: "9.3.0",
@@ -60,229 +114,207 @@ import { writeFileSync } from "fs";
60
114
  import { PuppeteerAgent } from "@midscene/web/puppeteer";
61
115
  import ora from "ora-classic";
62
116
  import puppeteer from "puppeteer";
63
-
64
- // src/args.ts
65
- function parse(args2) {
66
- const orderedArgs = [];
67
- args2.forEach((arg, index) => {
68
- if (arg.startsWith("--")) {
69
- const key = arg.substring(2);
70
- let value = args2[index + 1] && !args2[index + 1].startsWith("--") ? args2[index + 1] : true;
71
- if (typeof value === "string" && /^\d+$/.test(value)) {
72
- value = Number.parseInt(value, 10);
117
+ var require_src = __commonJS({
118
+ "src/index.ts"(exports) {
119
+ init_args();
120
+ var spinner;
121
+ var stepString = (name, param) => {
122
+ let paramStr;
123
+ if (typeof param === "object") {
124
+ paramStr = JSON.stringify(param, null, 2);
125
+ } else if (name === "sleep") {
126
+ paramStr = `${param}ms`;
127
+ } else {
128
+ paramStr = param;
73
129
  }
74
- orderedArgs.push({ name: key, value });
75
- }
76
- });
77
- return orderedArgs;
78
- }
79
- function findOnlyItemInArgs(args2, name) {
80
- const found = args2.filter((arg) => arg.name === name);
81
- if (found.length === 0) {
82
- return false;
83
- }
84
- if (found.length > 1) {
85
- throw new Error(`Multiple values found for ${name}`);
86
- }
87
- return found[0].value;
88
- }
89
-
90
- // src/index.ts
91
- var spinner;
92
- var stepString = (name, param) => {
93
- let paramStr;
94
- if (typeof param === "object") {
95
- paramStr = JSON.stringify(param, null, 2);
96
- } else if (name === "sleep") {
97
- paramStr = `${param}ms`;
98
- } else {
99
- paramStr = param;
100
- }
101
- return `${name}
130
+ return `${name}
102
131
  ${paramStr ? `${paramStr}` : ""}`;
103
- };
104
- var printStep = (name, param) => {
105
- if (spinner) {
106
- spinner.stop();
107
- }
108
- console.log(`- ${stepString(name, param)}`);
109
- };
110
- var updateSpin = (text) => {
111
- if (!spinner) {
112
- spinner = ora(text);
113
- spinner.start();
114
- } else {
115
- spinner.text = text;
116
- spinner.start();
117
- }
118
- };
119
- var preferenceArgs = {
120
- url: "url",
121
- headed: "headed",
122
- viewportWidth: "viewport-width",
123
- viewportHeight: "viewport-height",
124
- viewportScale: "viewport-scale",
125
- useragent: "user-agent"
126
- // preferCache: 'prefer-cache',
127
- // cookie: 'cookie',
128
- };
129
- var actionArgs = {
130
- action: "action",
131
- assert: "assert",
132
- queryOutput: "query-output",
133
- query: "query",
134
- sleep: "sleep",
135
- waitFor: "wait-for"
136
- };
137
- var defaultUA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36";
138
- var welcome = "\nWelcome to @midscene/cli\n";
139
- console.log(welcome);
140
- var args = parse(process.argv);
141
- if (findOnlyItemInArgs(args, "version")) {
142
- const versionFromPkgJson = require_package().version;
143
- console.log(`@midscene/cli version ${versionFromPkgJson}`);
144
- process.exit(0);
145
- }
146
- args.forEach((arg) => {
147
- assert(
148
- Object.values(preferenceArgs).includes(arg.name) || Object.values(actionArgs).includes(arg.name),
149
- `Unknown argument: ${arg.name}`
150
- );
151
- });
152
- var preferHeaded = findOnlyItemInArgs(args, preferenceArgs.headed);
153
- var userExpectWidth = findOnlyItemInArgs(args, preferenceArgs.viewportWidth);
154
- var userExpectHeight = findOnlyItemInArgs(
155
- args,
156
- preferenceArgs.viewportHeight
157
- );
158
- var userExpectDpr = findOnlyItemInArgs(args, preferenceArgs.viewportScale);
159
- var defaultDpr = process.platform === "darwin" ? 2 : 1;
160
- var viewportConfig = {
161
- width: typeof userExpectWidth === "number" ? userExpectWidth : 1280,
162
- height: typeof userExpectHeight === "number" ? userExpectHeight : 1280,
163
- deviceScaleFactor: typeof userExpectDpr === "number" ? userExpectDpr : defaultDpr
164
- };
165
- var url = findOnlyItemInArgs(args, preferenceArgs.url);
166
- assert(url, "URL is required");
167
- assert(typeof url === "string", "URL must be a string");
168
- var preferredUA = findOnlyItemInArgs(args, preferenceArgs.useragent);
169
- var ua = typeof preferredUA === "string" ? preferredUA : defaultUA;
170
- printStep(preferenceArgs.url, url);
171
- printStep(preferenceArgs.useragent, ua);
172
- printStep("viewport", JSON.stringify(viewportConfig));
173
- if (preferHeaded) {
174
- printStep(preferenceArgs.headed, "true");
175
- }
176
- Promise.resolve(
177
- (async () => {
178
- updateSpin(stepString("launch", "puppeteer"));
179
- const browser = await puppeteer.launch({
180
- headless: !preferHeaded
132
+ };
133
+ var printStep = (name, param) => {
134
+ if (spinner) {
135
+ spinner.stop();
136
+ }
137
+ console.log(`- ${stepString(name, param)}`);
138
+ };
139
+ var updateSpin = (text) => {
140
+ if (!spinner) {
141
+ spinner = ora(text);
142
+ spinner.start();
143
+ } else {
144
+ spinner.text = text;
145
+ spinner.start();
146
+ }
147
+ };
148
+ var preferenceArgs = {
149
+ url: "url",
150
+ headed: "headed",
151
+ viewportWidth: "viewport-width",
152
+ viewportHeight: "viewport-height",
153
+ viewportScale: "viewport-scale",
154
+ useragent: "user-agent"
155
+ // preferCache: 'prefer-cache',
156
+ // cookie: 'cookie',
157
+ };
158
+ var actionArgs = {
159
+ action: "action",
160
+ assert: "assert",
161
+ queryOutput: "query-output",
162
+ query: "query",
163
+ sleep: "sleep",
164
+ waitFor: "wait-for"
165
+ };
166
+ var defaultUA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36";
167
+ var welcome = "\nWelcome to @midscene/cli\n";
168
+ console.log(welcome);
169
+ var args = parse(process.argv);
170
+ if (findOnlyItemInArgs(args, "version")) {
171
+ const versionFromPkgJson = require_package().version;
172
+ console.log(`@midscene/cli version ${versionFromPkgJson}`);
173
+ process.exit(0);
174
+ }
175
+ args.forEach((arg) => {
176
+ assert(
177
+ Object.values(preferenceArgs).includes(arg.name) || Object.values(actionArgs).includes(arg.name),
178
+ `Unknown argument: ${arg.name}`
179
+ );
181
180
  });
182
- const page = await browser.newPage();
183
- await page.setUserAgent(ua);
184
- await page.setViewport(viewportConfig);
185
- let errorWhenRunning;
186
- let argName;
187
- let argValue;
188
- let agent;
189
- try {
190
- updateSpin(stepString("launch", url));
191
- await page.goto(url);
192
- updateSpin(stepString("waitForNetworkIdle", url));
193
- await page.waitForNetworkIdle();
194
- printStep("launched", url);
195
- agent = new PuppeteerAgent(page, {
196
- autoPrintReportMsg: false
197
- });
198
- let index = 0;
199
- let outputPath;
200
- let actionStarted = false;
201
- while (index <= args.length - 1) {
202
- const arg = args[index];
203
- argName = arg.name;
204
- argValue = arg.value;
205
- updateSpin(stepString(argName, String(argValue)));
206
- const validActionArg = Object.values(actionArgs).includes(argName);
207
- if (actionStarted) {
208
- assert(
209
- validActionArg,
210
- `You cannot put --${argName} here. Please change the order of the arguments.`
211
- );
212
- }
213
- if (validActionArg) {
214
- actionStarted = true;
215
- }
216
- switch (argName) {
217
- case actionArgs.action: {
218
- const param = arg.value;
219
- assert(param, "missing action");
220
- assert(typeof param === "string", "action must be a string");
221
- await agent.aiAction(param);
222
- printStep(argName, String(argValue));
223
- break;
224
- }
225
- case actionArgs.assert: {
226
- const param = arg.value;
227
- assert(param, "missing assert");
228
- assert(typeof param === "string", "assert must be a string");
229
- await agent.aiAssert(param);
230
- printStep(argName, String(argValue));
231
- break;
232
- }
233
- case actionArgs.queryOutput: {
234
- const param = arg.value;
235
- assert(param, "missing query-output");
236
- assert(typeof param === "string", "query-output must be a string");
237
- outputPath = param;
238
- printStep(argName, String(argValue));
239
- break;
240
- }
241
- case actionArgs.query: {
242
- const param = arg.value;
243
- assert(param, "missing query");
244
- assert(typeof param === "string", "query must be a string");
245
- const value = await agent.aiQuery(param);
246
- printStep(argName, String(argValue));
247
- printStep("answer", value);
248
- if (outputPath) {
249
- writeFileSync(
250
- outputPath,
251
- typeof value === "object" ? JSON.stringify(value, null, 2) : value
181
+ var preferHeaded = findOnlyItemInArgs(args, preferenceArgs.headed);
182
+ var userExpectWidth = findOnlyItemInArgs(args, preferenceArgs.viewportWidth);
183
+ var userExpectHeight = findOnlyItemInArgs(
184
+ args,
185
+ preferenceArgs.viewportHeight
186
+ );
187
+ var userExpectDpr = findOnlyItemInArgs(args, preferenceArgs.viewportScale);
188
+ var defaultDpr = process.platform === "darwin" ? 2 : 1;
189
+ var viewportConfig = {
190
+ width: typeof userExpectWidth === "number" ? userExpectWidth : 1280,
191
+ height: typeof userExpectHeight === "number" ? userExpectHeight : 1280,
192
+ deviceScaleFactor: typeof userExpectDpr === "number" ? userExpectDpr : defaultDpr
193
+ };
194
+ var url = findOnlyItemInArgs(args, preferenceArgs.url);
195
+ assert(url, "URL is required");
196
+ assert(typeof url === "string", "URL must be a string");
197
+ var preferredUA = findOnlyItemInArgs(args, preferenceArgs.useragent);
198
+ var ua = typeof preferredUA === "string" ? preferredUA : defaultUA;
199
+ printStep(preferenceArgs.url, url);
200
+ printStep(preferenceArgs.useragent, ua);
201
+ printStep("viewport", JSON.stringify(viewportConfig));
202
+ if (preferHeaded) {
203
+ printStep(preferenceArgs.headed, "true");
204
+ }
205
+ Promise.resolve(
206
+ (() => __async(exports, null, function* () {
207
+ updateSpin(stepString("launch", "puppeteer"));
208
+ const browser = yield puppeteer.launch({
209
+ headless: !preferHeaded
210
+ });
211
+ const page = yield browser.newPage();
212
+ yield page.setUserAgent(ua);
213
+ yield page.setViewport(viewportConfig);
214
+ let errorWhenRunning;
215
+ let argName;
216
+ let argValue;
217
+ let agent;
218
+ try {
219
+ updateSpin(stepString("launch", url));
220
+ yield page.goto(url);
221
+ updateSpin(stepString("waitForNetworkIdle", url));
222
+ yield page.waitForNetworkIdle();
223
+ printStep("launched", url);
224
+ agent = new PuppeteerAgent(page, {
225
+ autoPrintReportMsg: false
226
+ });
227
+ let index = 0;
228
+ let outputPath;
229
+ let actionStarted = false;
230
+ while (index <= args.length - 1) {
231
+ const arg = args[index];
232
+ argName = arg.name;
233
+ argValue = arg.value;
234
+ updateSpin(stepString(argName, String(argValue)));
235
+ const validActionArg = Object.values(actionArgs).includes(argName);
236
+ if (actionStarted) {
237
+ assert(
238
+ validActionArg,
239
+ `You cannot put --${argName} here. Please change the order of the arguments.`
252
240
  );
253
241
  }
254
- break;
255
- }
256
- case actionArgs.sleep: {
257
- const param = arg.value;
258
- if (!param)
259
- break;
260
- assert(typeof param === "number", "sleep must be a number");
261
- await new Promise((resolve) => setTimeout(resolve, param));
262
- printStep(argName, String(argValue));
263
- break;
242
+ if (validActionArg) {
243
+ actionStarted = true;
244
+ }
245
+ switch (argName) {
246
+ case actionArgs.action: {
247
+ const param = arg.value;
248
+ assert(param, "missing action");
249
+ assert(typeof param === "string", "action must be a string");
250
+ yield agent.aiAction(param);
251
+ printStep(argName, String(argValue));
252
+ break;
253
+ }
254
+ case actionArgs.assert: {
255
+ const param = arg.value;
256
+ assert(param, "missing assert");
257
+ assert(typeof param === "string", "assert must be a string");
258
+ yield agent.aiAssert(param);
259
+ printStep(argName, String(argValue));
260
+ break;
261
+ }
262
+ case actionArgs.queryOutput: {
263
+ const param = arg.value;
264
+ assert(param, "missing query-output");
265
+ assert(typeof param === "string", "query-output must be a string");
266
+ outputPath = param;
267
+ printStep(argName, String(argValue));
268
+ break;
269
+ }
270
+ case actionArgs.query: {
271
+ const param = arg.value;
272
+ assert(param, "missing query");
273
+ assert(typeof param === "string", "query must be a string");
274
+ const value = yield agent.aiQuery(param);
275
+ printStep(argName, String(argValue));
276
+ printStep("answer", value);
277
+ if (outputPath) {
278
+ writeFileSync(
279
+ outputPath,
280
+ typeof value === "object" ? JSON.stringify(value, null, 2) : value
281
+ );
282
+ }
283
+ break;
284
+ }
285
+ case actionArgs.sleep: {
286
+ const param = arg.value;
287
+ if (!param)
288
+ break;
289
+ assert(typeof param === "number", "sleep must be a number");
290
+ yield new Promise((resolve) => setTimeout(resolve, param));
291
+ printStep(argName, String(argValue));
292
+ break;
293
+ }
294
+ case actionArgs.waitFor: {
295
+ const param = arg.value;
296
+ assert(param, "missing assertion for waitFor");
297
+ assert(typeof param === "string", "assertion must be a string");
298
+ yield agent.aiWaitFor(param);
299
+ printStep(argName, String(argValue));
300
+ break;
301
+ }
302
+ }
303
+ index += 1;
264
304
  }
265
- case actionArgs.waitFor: {
266
- const param = arg.value;
267
- assert(param, "missing assertion for waitFor");
268
- assert(typeof param === "string", "assertion must be a string");
269
- await agent.aiWaitFor(param);
270
- printStep(argName, String(argValue));
271
- break;
305
+ printStep("Done", `report: ${agent.reportFile}`);
306
+ } catch (e) {
307
+ printStep(`${argName} - Failed`, String(argValue));
308
+ if (agent == null ? void 0 : agent.reportFile) {
309
+ printStep("Report", agent.reportFile);
272
310
  }
311
+ printStep("Error", e.message);
312
+ errorWhenRunning = e;
273
313
  }
274
- index += 1;
275
- }
276
- printStep("Done", `report: ${agent.reportFile}`);
277
- } catch (e) {
278
- printStep(`${argName} - Failed`, String(argValue));
279
- if (agent == null ? void 0 : agent.reportFile) {
280
- printStep("Report", agent.reportFile);
281
- }
282
- printStep("Error", e.message);
283
- errorWhenRunning = e;
284
- }
285
- await browser.close();
286
- process.exit(errorWhenRunning ? 1 : 0);
287
- })()
288
- );
314
+ yield browser.close();
315
+ process.exit(errorWhenRunning ? 1 : 0);
316
+ }))()
317
+ );
318
+ }
319
+ });
320
+ export default require_src();
@@ -1,8 +0,0 @@
1
- // src/playground.ts
2
- import { PlaygroundServer } from "@midscene/web/playground";
3
- var server = new PlaygroundServer();
4
- Promise.resolve().then(() => server.launch()).then(() => {
5
- console.log(
6
- `Midscene playground server is running on http://localhost:${server.port}`
7
- );
8
- });
package/dist/lib/help.js CHANGED
@@ -10,7 +10,7 @@ var require_package = __commonJS({
10
10
  module2.exports = {
11
11
  name: "@midscene/cli",
12
12
  description: "An AI-powered automation SDK can control the page, perform assertions, and extract data in JSON format using natural language. See https://midscenejs.com/ for details.",
13
- version: "0.7.2",
13
+ version: "0.7.3-beta-20241104100519.0",
14
14
  repository: "https://github.com/web-infra-dev/midscene",
15
15
  homepage: "https://midscenejs.com/",
16
16
  "jsnext:source": "./src/index.ts",
@@ -36,7 +36,7 @@ var require_package = __commonJS({
36
36
  yargs: "17.7.2"
37
37
  },
38
38
  devDependencies: {
39
- "@modern-js/module-tools": "2.58.2",
39
+ "@modern-js/module-tools": "2.60.6",
40
40
  "@types/node": "^18.0.0",
41
41
  "@types/yargs": "17.0.32",
42
42
  execa: "9.3.0",
package/dist/lib/index.js CHANGED
@@ -24,14 +24,34 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
25
  mod
26
26
  ));
27
+ var __async = (__this, __arguments, generator) => {
28
+ return new Promise((resolve, reject) => {
29
+ var fulfilled = (value) => {
30
+ try {
31
+ step(generator.next(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var rejected = (value) => {
37
+ try {
38
+ step(generator.throw(value));
39
+ } catch (e) {
40
+ reject(e);
41
+ }
42
+ };
43
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
44
+ step((generator = generator.apply(__this, __arguments)).next());
45
+ });
46
+ };
27
47
 
28
48
  // package.json
29
49
  var require_package = __commonJS({
30
- "package.json"(exports, module2) {
50
+ "package.json"(exports2, module2) {
31
51
  module2.exports = {
32
52
  name: "@midscene/cli",
33
53
  description: "An AI-powered automation SDK can control the page, perform assertions, and extract data in JSON format using natural language. See https://midscenejs.com/ for details.",
34
- version: "0.7.2",
54
+ version: "0.7.3-beta-20241104100519.0",
35
55
  repository: "https://github.com/web-infra-dev/midscene",
36
56
  homepage: "https://midscenejs.com/",
37
57
  "jsnext:source": "./src/index.ts",
@@ -57,7 +77,7 @@ var require_package = __commonJS({
57
77
  yargs: "17.7.2"
58
78
  },
59
79
  devDependencies: {
60
- "@modern-js/module-tools": "2.58.2",
80
+ "@modern-js/module-tools": "2.60.6",
61
81
  "@types/node": "^18.0.0",
62
82
  "@types/yargs": "17.0.32",
63
83
  execa: "9.3.0",
@@ -196,23 +216,23 @@ if (preferHeaded) {
196
216
  printStep(preferenceArgs.headed, "true");
197
217
  }
198
218
  Promise.resolve(
199
- (async () => {
219
+ (() => __async(exports, null, function* () {
200
220
  updateSpin(stepString("launch", "puppeteer"));
201
- const browser = await import_puppeteer2.default.launch({
221
+ const browser = yield import_puppeteer2.default.launch({
202
222
  headless: !preferHeaded
203
223
  });
204
- const page = await browser.newPage();
205
- await page.setUserAgent(ua);
206
- await page.setViewport(viewportConfig);
224
+ const page = yield browser.newPage();
225
+ yield page.setUserAgent(ua);
226
+ yield page.setViewport(viewportConfig);
207
227
  let errorWhenRunning;
208
228
  let argName;
209
229
  let argValue;
210
230
  let agent;
211
231
  try {
212
232
  updateSpin(stepString("launch", url));
213
- await page.goto(url);
233
+ yield page.goto(url);
214
234
  updateSpin(stepString("waitForNetworkIdle", url));
215
- await page.waitForNetworkIdle();
235
+ yield page.waitForNetworkIdle();
216
236
  printStep("launched", url);
217
237
  agent = new import_puppeteer.PuppeteerAgent(page, {
218
238
  autoPrintReportMsg: false
@@ -240,7 +260,7 @@ Promise.resolve(
240
260
  const param = arg.value;
241
261
  (0, import_node_assert.default)(param, "missing action");
242
262
  (0, import_node_assert.default)(typeof param === "string", "action must be a string");
243
- await agent.aiAction(param);
263
+ yield agent.aiAction(param);
244
264
  printStep(argName, String(argValue));
245
265
  break;
246
266
  }
@@ -248,7 +268,7 @@ Promise.resolve(
248
268
  const param = arg.value;
249
269
  (0, import_node_assert.default)(param, "missing assert");
250
270
  (0, import_node_assert.default)(typeof param === "string", "assert must be a string");
251
- await agent.aiAssert(param);
271
+ yield agent.aiAssert(param);
252
272
  printStep(argName, String(argValue));
253
273
  break;
254
274
  }
@@ -264,7 +284,7 @@ Promise.resolve(
264
284
  const param = arg.value;
265
285
  (0, import_node_assert.default)(param, "missing query");
266
286
  (0, import_node_assert.default)(typeof param === "string", "query must be a string");
267
- const value = await agent.aiQuery(param);
287
+ const value = yield agent.aiQuery(param);
268
288
  printStep(argName, String(argValue));
269
289
  printStep("answer", value);
270
290
  if (outputPath) {
@@ -280,7 +300,7 @@ Promise.resolve(
280
300
  if (!param)
281
301
  break;
282
302
  (0, import_node_assert.default)(typeof param === "number", "sleep must be a number");
283
- await new Promise((resolve) => setTimeout(resolve, param));
303
+ yield new Promise((resolve) => setTimeout(resolve, param));
284
304
  printStep(argName, String(argValue));
285
305
  break;
286
306
  }
@@ -288,7 +308,7 @@ Promise.resolve(
288
308
  const param = arg.value;
289
309
  (0, import_node_assert.default)(param, "missing assertion for waitFor");
290
310
  (0, import_node_assert.default)(typeof param === "string", "assertion must be a string");
291
- await agent.aiWaitFor(param);
311
+ yield agent.aiWaitFor(param);
292
312
  printStep(argName, String(argValue));
293
313
  break;
294
314
  }
@@ -304,7 +324,7 @@ Promise.resolve(
304
324
  printStep("Error", e.message);
305
325
  errorWhenRunning = e;
306
326
  }
307
- await browser.close();
327
+ yield browser.close();
308
328
  process.exit(errorWhenRunning ? 1 : 0);
309
- })()
329
+ }))()
310
330
  );
@@ -1,10 +1 @@
1
1
  "use strict";
2
-
3
- // src/playground.ts
4
- var import_playground = require("@midscene/web/playground");
5
- var server = new import_playground.PlaygroundServer();
6
- Promise.resolve().then(() => server.launch()).then(() => {
7
- console.log(
8
- `Midscene playground server is running on http://localhost:${server.port}`
9
- );
10
- });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@midscene/cli",
3
3
  "description": "An AI-powered automation SDK can control the page, perform assertions, and extract data in JSON format using natural language. See https://midscenejs.com/ for details.",
4
- "version": "0.7.2",
4
+ "version": "0.7.3-beta-20241104100519.0",
5
5
  "repository": "https://github.com/web-infra-dev/midscene",
6
6
  "homepage": "https://midscenejs.com/",
7
7
  "jsnext:source": "./src/index.ts",
@@ -18,10 +18,10 @@
18
18
  "ora-classic": "5.4.2",
19
19
  "puppeteer": "23.0.2",
20
20
  "yargs": "17.7.2",
21
- "@midscene/web": "0.7.2"
21
+ "@midscene/web": "0.7.3-beta-20241104100519.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@modern-js/module-tools": "2.58.2",
24
+ "@modern-js/module-tools": "2.60.6",
25
25
  "@types/node": "^18.0.0",
26
26
  "@types/yargs": "17.0.32",
27
27
  "execa": "9.3.0",