@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
@@ -1550,17 +1550,23 @@ var PageTaskExecutor = class {
1550
1550
  executor: taskExecutor
1551
1551
  };
1552
1552
  }
1553
- async query(demand) {
1554
- const description = typeof demand === "string" ? demand : JSON.stringify(demand);
1555
- const taskExecutor = new import_core.Executor(taskTitleStr("Query", description), {
1556
- onTaskStart: this.onTaskStartCallback
1557
- });
1553
+ async createTypeQueryTask(type, demand) {
1554
+ const taskExecutor = new import_core.Executor(
1555
+ taskTitleStr(
1556
+ type,
1557
+ typeof demand === "string" ? demand : JSON.stringify(demand)
1558
+ ),
1559
+ {
1560
+ onTaskStart: this.onTaskStartCallback
1561
+ }
1562
+ );
1558
1563
  const queryTask = {
1559
1564
  type: "Insight",
1560
- subType: "Query",
1565
+ subType: type,
1561
1566
  locate: null,
1562
1567
  param: {
1563
1568
  dataDemand: demand
1569
+ // for user param presentation in report right sidebar
1564
1570
  },
1565
1571
  executor: async (param) => {
1566
1572
  let insightDump;
@@ -1568,11 +1574,21 @@ var PageTaskExecutor = class {
1568
1574
  insightDump = dump;
1569
1575
  };
1570
1576
  this.insight.onceDumpUpdatedFn = dumpCollector;
1571
- const { data, usage } = await this.insight.extract(
1572
- param.dataDemand
1573
- );
1577
+ const ifTypeRestricted = type !== "Query";
1578
+ let demandInput = demand;
1579
+ if (ifTypeRestricted) {
1580
+ demandInput = {
1581
+ result: `${type}, ${demand}`
1582
+ };
1583
+ }
1584
+ const { data, usage } = await this.insight.extract(demandInput);
1585
+ let outputResult = data;
1586
+ if (ifTypeRestricted) {
1587
+ (0, import_utils9.assert)(data?.result !== void 0, "No result in query data");
1588
+ outputResult = data.result;
1589
+ }
1574
1590
  return {
1575
- output: data,
1591
+ output: outputResult,
1576
1592
  log: { dump: insightDump },
1577
1593
  usage
1578
1594
  };
@@ -1585,6 +1601,18 @@ var PageTaskExecutor = class {
1585
1601
  executor: taskExecutor
1586
1602
  };
1587
1603
  }
1604
+ async query(demand) {
1605
+ return this.createTypeQueryTask("Query", demand);
1606
+ }
1607
+ async boolean(prompt) {
1608
+ return this.createTypeQueryTask("Boolean", prompt);
1609
+ }
1610
+ async number(prompt) {
1611
+ return this.createTypeQueryTask("Number", prompt);
1612
+ }
1613
+ async string(prompt) {
1614
+ return this.createTypeQueryTask("String", prompt);
1615
+ }
1588
1616
  async assert(assertion) {
1589
1617
  const description = `assert: ${assertion}`;
1590
1618
  const taskExecutor = new import_core.Executor(taskTitleStr("Assert", description), {
@@ -1771,6 +1799,16 @@ function buildPlans(type, locateParam, param) {
1771
1799
  };
1772
1800
  returnPlans = [sleepPlan];
1773
1801
  }
1802
+ if (type === "Locate") {
1803
+ (0, import_utils10.assert)(locateParam, `missing locate info for action "${type}"`);
1804
+ const locatePlan2 = {
1805
+ type,
1806
+ param: locateParam,
1807
+ locate: locateParam,
1808
+ thought: ""
1809
+ };
1810
+ returnPlans = [locatePlan2];
1811
+ }
1774
1812
  if (returnPlans) {
1775
1813
  debug3("buildPlans", returnPlans);
1776
1814
  return returnPlans;
@@ -1970,6 +2008,35 @@ ${errorTask?.errorStack}`);
1970
2008
  this.afterTaskRunning(executor);
1971
2009
  return output;
1972
2010
  }
2011
+ async aiBoolean(prompt) {
2012
+ const { output, executor } = await this.taskExecutor.boolean(prompt);
2013
+ this.afterTaskRunning(executor);
2014
+ return output;
2015
+ }
2016
+ async aiNumber(prompt) {
2017
+ const { output, executor } = await this.taskExecutor.number(prompt);
2018
+ this.afterTaskRunning(executor);
2019
+ return output;
2020
+ }
2021
+ async aiString(prompt) {
2022
+ const { output, executor } = await this.taskExecutor.string(prompt);
2023
+ this.afterTaskRunning(executor);
2024
+ return output;
2025
+ }
2026
+ async aiLocate(prompt, opt) {
2027
+ const detailedLocateParam = this.buildDetailedLocateParam(prompt, opt);
2028
+ const plans = buildPlans("Locate", detailedLocateParam);
2029
+ const { executor, output } = await this.taskExecutor.runPlans(
2030
+ taskTitleStr("Locate", locateParamStr(detailedLocateParam)),
2031
+ plans
2032
+ );
2033
+ this.afterTaskRunning(executor);
2034
+ const { element } = output;
2035
+ return {
2036
+ rect: element?.rect,
2037
+ center: element?.center
2038
+ };
2039
+ }
1973
2040
  async aiAssert(assertion, msg, opt) {
1974
2041
  const { output, executor } = await this.taskExecutor.assert(assertion);
1975
2042
  this.afterTaskRunning(executor, true);
@@ -2258,7 +2325,7 @@ function sleep2(ms) {
2258
2325
  var ChromeExtensionProxyPage = class {
2259
2326
  constructor(forceSameTabNavigation) {
2260
2327
  this.pageType = "chrome-extension-proxy";
2261
- this.version = "0.16.4";
2328
+ this.version = "0.16.6";
2262
2329
  this.activeTabId = null;
2263
2330
  this.tabIdOfDebuggerAttached = null;
2264
2331
  this.attachingDebugger = null;