@midscene/web 0.16.5 → 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 (49) 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 +100 -21
  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 +99 -18
  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/bridge-mode-browser.d.ts +1 -1
  45. package/dist/types/bridge-mode.d.ts +1 -2
  46. package/dist/types/{browser-0beaa7a7.d.ts → browser-a8afbca5.d.ts} +1 -2
  47. package/dist/types/playwright.d.ts +16 -0
  48. package/dist/types/ui-utils.d.ts +1 -1
  49. package/package.json +4 -3
@@ -411,10 +411,7 @@ import { sleep } from "@midscene/core/utils";
411
411
  import { UITarsModelVersion } from "@midscene/shared/env";
412
412
  import { uiTarsModelVersion } from "@midscene/shared/env";
413
413
  import { vlLocateMode } from "@midscene/shared/env";
414
- import {
415
- imageInfo,
416
- resizeImgBase64 as resizeImgBase642
417
- } from "@midscene/shared/img";
414
+ import { imageInfo, resizeImgBase64 as resizeImgBase642 } from "@midscene/shared/img";
418
415
  import { getDebug as getDebug2 } from "@midscene/shared/logger";
419
416
  import { assert as assert4 } from "@midscene/shared/utils";
420
417
 
@@ -1530,17 +1527,23 @@ var PageTaskExecutor = class {
1530
1527
  executor: taskExecutor
1531
1528
  };
1532
1529
  }
1533
- async query(demand) {
1534
- const description = typeof demand === "string" ? demand : JSON.stringify(demand);
1535
- const taskExecutor = new Executor(taskTitleStr("Query", description), {
1536
- onTaskStart: this.onTaskStartCallback
1537
- });
1530
+ async createTypeQueryTask(type, demand) {
1531
+ const taskExecutor = new Executor(
1532
+ taskTitleStr(
1533
+ type,
1534
+ typeof demand === "string" ? demand : JSON.stringify(demand)
1535
+ ),
1536
+ {
1537
+ onTaskStart: this.onTaskStartCallback
1538
+ }
1539
+ );
1538
1540
  const queryTask = {
1539
1541
  type: "Insight",
1540
- subType: "Query",
1542
+ subType: type,
1541
1543
  locate: null,
1542
1544
  param: {
1543
1545
  dataDemand: demand
1546
+ // for user param presentation in report right sidebar
1544
1547
  },
1545
1548
  executor: async (param) => {
1546
1549
  let insightDump;
@@ -1548,11 +1551,21 @@ var PageTaskExecutor = class {
1548
1551
  insightDump = dump;
1549
1552
  };
1550
1553
  this.insight.onceDumpUpdatedFn = dumpCollector;
1551
- const { data, usage } = await this.insight.extract(
1552
- param.dataDemand
1553
- );
1554
+ const ifTypeRestricted = type !== "Query";
1555
+ let demandInput = demand;
1556
+ if (ifTypeRestricted) {
1557
+ demandInput = {
1558
+ result: `${type}, ${demand}`
1559
+ };
1560
+ }
1561
+ const { data, usage } = await this.insight.extract(demandInput);
1562
+ let outputResult = data;
1563
+ if (ifTypeRestricted) {
1564
+ assert4(data?.result !== void 0, "No result in query data");
1565
+ outputResult = data.result;
1566
+ }
1554
1567
  return {
1555
- output: data,
1568
+ output: outputResult,
1556
1569
  log: { dump: insightDump },
1557
1570
  usage
1558
1571
  };
@@ -1565,6 +1578,18 @@ var PageTaskExecutor = class {
1565
1578
  executor: taskExecutor
1566
1579
  };
1567
1580
  }
1581
+ async query(demand) {
1582
+ return this.createTypeQueryTask("Query", demand);
1583
+ }
1584
+ async boolean(prompt) {
1585
+ return this.createTypeQueryTask("Boolean", prompt);
1586
+ }
1587
+ async number(prompt) {
1588
+ return this.createTypeQueryTask("Number", prompt);
1589
+ }
1590
+ async string(prompt) {
1591
+ return this.createTypeQueryTask("String", prompt);
1592
+ }
1568
1593
  async assert(assertion) {
1569
1594
  const description = `assert: ${assertion}`;
1570
1595
  const taskExecutor = new Executor(taskTitleStr("Assert", description), {
@@ -1751,6 +1776,16 @@ function buildPlans(type, locateParam, param) {
1751
1776
  };
1752
1777
  returnPlans = [sleepPlan];
1753
1778
  }
1779
+ if (type === "Locate") {
1780
+ assert5(locateParam, `missing locate info for action "${type}"`);
1781
+ const locatePlan2 = {
1782
+ type,
1783
+ param: locateParam,
1784
+ locate: locateParam,
1785
+ thought: ""
1786
+ };
1787
+ returnPlans = [locatePlan2];
1788
+ }
1754
1789
  if (returnPlans) {
1755
1790
  debug3("buildPlans", returnPlans);
1756
1791
  return returnPlans;
@@ -1950,6 +1985,35 @@ ${errorTask?.errorStack}`);
1950
1985
  this.afterTaskRunning(executor);
1951
1986
  return output;
1952
1987
  }
1988
+ async aiBoolean(prompt) {
1989
+ const { output, executor } = await this.taskExecutor.boolean(prompt);
1990
+ this.afterTaskRunning(executor);
1991
+ return output;
1992
+ }
1993
+ async aiNumber(prompt) {
1994
+ const { output, executor } = await this.taskExecutor.number(prompt);
1995
+ this.afterTaskRunning(executor);
1996
+ return output;
1997
+ }
1998
+ async aiString(prompt) {
1999
+ const { output, executor } = await this.taskExecutor.string(prompt);
2000
+ this.afterTaskRunning(executor);
2001
+ return output;
2002
+ }
2003
+ async aiLocate(prompt, opt) {
2004
+ const detailedLocateParam = this.buildDetailedLocateParam(prompt, opt);
2005
+ const plans = buildPlans("Locate", detailedLocateParam);
2006
+ const { executor, output } = await this.taskExecutor.runPlans(
2007
+ taskTitleStr("Locate", locateParamStr(detailedLocateParam)),
2008
+ plans
2009
+ );
2010
+ this.afterTaskRunning(executor);
2011
+ const { element } = output;
2012
+ return {
2013
+ rect: element?.rect,
2014
+ center: element?.center
2015
+ };
2016
+ }
1953
2017
  async aiAssert(assertion, msg, opt) {
1954
2018
  const { output, executor } = await this.taskExecutor.assert(assertion);
1955
2019
  this.afterTaskRunning(executor, true);
@@ -2240,7 +2304,7 @@ function sleep2(ms) {
2240
2304
  var ChromeExtensionProxyPage = class {
2241
2305
  constructor(forceSameTabNavigation) {
2242
2306
  this.pageType = "chrome-extension-proxy";
2243
- this.version = "0.16.5";
2307
+ this.version = "0.16.6";
2244
2308
  this.activeTabId = null;
2245
2309
  this.tabIdOfDebuggerAttached = null;
2246
2310
  this.attachingDebugger = null;