@midscene/web 0.16.4 → 0.16.6

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 (46) hide show
  1. package/dist/es/agent.js +78 -14
  2. package/dist/es/agent.js.map +1 -1
  3. package/dist/es/bridge-mode-browser.js +3 -3
  4. package/dist/es/bridge-mode-browser.js.map +1 -1
  5. package/dist/es/bridge-mode.js +82 -18
  6. package/dist/es/bridge-mode.js.map +1 -1
  7. package/dist/es/chrome-extension.js +79 -15
  8. package/dist/es/chrome-extension.js.map +1 -1
  9. package/dist/es/index.js +110 -14
  10. package/dist/es/index.js.map +1 -1
  11. package/dist/es/midscene-playground.js +78 -14
  12. package/dist/es/midscene-playground.js.map +1 -1
  13. package/dist/es/playground.js +78 -14
  14. package/dist/es/playground.js.map +1 -1
  15. package/dist/es/playwright.js +110 -14
  16. package/dist/es/playwright.js.map +1 -1
  17. package/dist/es/puppeteer-agent-launcher.js +78 -14
  18. package/dist/es/puppeteer-agent-launcher.js.map +1 -1
  19. package/dist/es/puppeteer.js +78 -14
  20. package/dist/es/puppeteer.js.map +1 -1
  21. package/dist/es/ui-utils.js.map +1 -1
  22. package/dist/lib/agent.js +77 -10
  23. package/dist/lib/agent.js.map +1 -1
  24. package/dist/lib/bridge-mode-browser.js +3 -3
  25. package/dist/lib/bridge-mode-browser.js.map +1 -1
  26. package/dist/lib/bridge-mode.js +81 -14
  27. package/dist/lib/bridge-mode.js.map +1 -1
  28. package/dist/lib/chrome-extension.js +78 -11
  29. package/dist/lib/chrome-extension.js.map +1 -1
  30. package/dist/lib/index.js +109 -10
  31. package/dist/lib/index.js.map +1 -1
  32. package/dist/lib/midscene-playground.js +77 -10
  33. package/dist/lib/midscene-playground.js.map +1 -1
  34. package/dist/lib/playground.js +77 -10
  35. package/dist/lib/playground.js.map +1 -1
  36. package/dist/lib/playwright.js +109 -10
  37. package/dist/lib/playwright.js.map +1 -1
  38. package/dist/lib/puppeteer-agent-launcher.js +77 -10
  39. package/dist/lib/puppeteer-agent-launcher.js.map +1 -1
  40. package/dist/lib/puppeteer.js +77 -10
  41. package/dist/lib/puppeteer.js.map +1 -1
  42. package/dist/lib/ui-utils.js.map +1 -1
  43. package/dist/types/agent.d.ts +8 -0
  44. package/dist/types/playwright.d.ts +16 -0
  45. package/dist/types/ui-utils.d.ts +1 -1
  46. package/package.json +4 -5
@@ -1504,17 +1504,23 @@ var PageTaskExecutor = class {
1504
1504
  executor: taskExecutor
1505
1505
  };
1506
1506
  }
1507
- async query(demand) {
1508
- const description = typeof demand === "string" ? demand : JSON.stringify(demand);
1509
- const taskExecutor = new import_core.Executor(taskTitleStr("Query", description), {
1510
- onTaskStart: this.onTaskStartCallback
1511
- });
1507
+ async createTypeQueryTask(type, demand) {
1508
+ const taskExecutor = new import_core.Executor(
1509
+ taskTitleStr(
1510
+ type,
1511
+ typeof demand === "string" ? demand : JSON.stringify(demand)
1512
+ ),
1513
+ {
1514
+ onTaskStart: this.onTaskStartCallback
1515
+ }
1516
+ );
1512
1517
  const queryTask = {
1513
1518
  type: "Insight",
1514
- subType: "Query",
1519
+ subType: type,
1515
1520
  locate: null,
1516
1521
  param: {
1517
1522
  dataDemand: demand
1523
+ // for user param presentation in report right sidebar
1518
1524
  },
1519
1525
  executor: async (param) => {
1520
1526
  let insightDump;
@@ -1522,11 +1528,21 @@ var PageTaskExecutor = class {
1522
1528
  insightDump = dump;
1523
1529
  };
1524
1530
  this.insight.onceDumpUpdatedFn = dumpCollector;
1525
- const { data, usage } = await this.insight.extract(
1526
- param.dataDemand
1527
- );
1531
+ const ifTypeRestricted = type !== "Query";
1532
+ let demandInput = demand;
1533
+ if (ifTypeRestricted) {
1534
+ demandInput = {
1535
+ result: `${type}, ${demand}`
1536
+ };
1537
+ }
1538
+ const { data, usage } = await this.insight.extract(demandInput);
1539
+ let outputResult = data;
1540
+ if (ifTypeRestricted) {
1541
+ (0, import_utils9.assert)(data?.result !== void 0, "No result in query data");
1542
+ outputResult = data.result;
1543
+ }
1528
1544
  return {
1529
- output: data,
1545
+ output: outputResult,
1530
1546
  log: { dump: insightDump },
1531
1547
  usage
1532
1548
  };
@@ -1539,6 +1555,18 @@ var PageTaskExecutor = class {
1539
1555
  executor: taskExecutor
1540
1556
  };
1541
1557
  }
1558
+ async query(demand) {
1559
+ return this.createTypeQueryTask("Query", demand);
1560
+ }
1561
+ async boolean(prompt) {
1562
+ return this.createTypeQueryTask("Boolean", prompt);
1563
+ }
1564
+ async number(prompt) {
1565
+ return this.createTypeQueryTask("Number", prompt);
1566
+ }
1567
+ async string(prompt) {
1568
+ return this.createTypeQueryTask("String", prompt);
1569
+ }
1542
1570
  async assert(assertion) {
1543
1571
  const description = `assert: ${assertion}`;
1544
1572
  const taskExecutor = new import_core.Executor(taskTitleStr("Assert", description), {
@@ -1725,6 +1753,16 @@ function buildPlans(type, locateParam, param) {
1725
1753
  };
1726
1754
  returnPlans = [sleepPlan];
1727
1755
  }
1756
+ if (type === "Locate") {
1757
+ (0, import_utils10.assert)(locateParam, `missing locate info for action "${type}"`);
1758
+ const locatePlan2 = {
1759
+ type,
1760
+ param: locateParam,
1761
+ locate: locateParam,
1762
+ thought: ""
1763
+ };
1764
+ returnPlans = [locatePlan2];
1765
+ }
1728
1766
  if (returnPlans) {
1729
1767
  debug3("buildPlans", returnPlans);
1730
1768
  return returnPlans;
@@ -1924,6 +1962,35 @@ ${errorTask?.errorStack}`);
1924
1962
  this.afterTaskRunning(executor);
1925
1963
  return output;
1926
1964
  }
1965
+ async aiBoolean(prompt) {
1966
+ const { output, executor } = await this.taskExecutor.boolean(prompt);
1967
+ this.afterTaskRunning(executor);
1968
+ return output;
1969
+ }
1970
+ async aiNumber(prompt) {
1971
+ const { output, executor } = await this.taskExecutor.number(prompt);
1972
+ this.afterTaskRunning(executor);
1973
+ return output;
1974
+ }
1975
+ async aiString(prompt) {
1976
+ const { output, executor } = await this.taskExecutor.string(prompt);
1977
+ this.afterTaskRunning(executor);
1978
+ return output;
1979
+ }
1980
+ async aiLocate(prompt, opt) {
1981
+ const detailedLocateParam = this.buildDetailedLocateParam(prompt, opt);
1982
+ const plans = buildPlans("Locate", detailedLocateParam);
1983
+ const { executor, output } = await this.taskExecutor.runPlans(
1984
+ taskTitleStr("Locate", locateParamStr(detailedLocateParam)),
1985
+ plans
1986
+ );
1987
+ this.afterTaskRunning(executor);
1988
+ const { element } = output;
1989
+ return {
1990
+ rect: element?.rect,
1991
+ center: element?.center
1992
+ };
1993
+ }
1927
1994
  async aiAssert(assertion, msg, opt) {
1928
1995
  const { output, executor } = await this.taskExecutor.assert(assertion);
1929
1996
  this.afterTaskRunning(executor, true);