@midscene/web 0.17.1 → 0.17.2-beta-20250521115451.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.
Files changed (48) hide show
  1. package/dist/es/agent.js +25 -22
  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 +27 -24
  6. package/dist/es/bridge-mode.js.map +1 -1
  7. package/dist/es/chrome-extension.js +26 -23
  8. package/dist/es/chrome-extension.js.map +1 -1
  9. package/dist/es/index.js +25 -22
  10. package/dist/es/index.js.map +1 -1
  11. package/dist/es/midscene-playground.js +25 -22
  12. package/dist/es/midscene-playground.js.map +1 -1
  13. package/dist/es/playground.js +25 -22
  14. package/dist/es/playground.js.map +1 -1
  15. package/dist/es/playwright.js +25 -22
  16. package/dist/es/playwright.js.map +1 -1
  17. package/dist/es/puppeteer-agent-launcher.js +25 -22
  18. package/dist/es/puppeteer-agent-launcher.js.map +1 -1
  19. package/dist/es/puppeteer.js +25 -22
  20. package/dist/es/puppeteer.js.map +1 -1
  21. package/dist/es/yaml.js +15 -15
  22. package/dist/es/yaml.js.map +1 -1
  23. package/dist/lib/agent.js +25 -22
  24. package/dist/lib/agent.js.map +1 -1
  25. package/dist/lib/bridge-mode-browser.js +3 -3
  26. package/dist/lib/bridge-mode-browser.js.map +1 -1
  27. package/dist/lib/bridge-mode.js +27 -24
  28. package/dist/lib/bridge-mode.js.map +1 -1
  29. package/dist/lib/chrome-extension.js +26 -23
  30. package/dist/lib/chrome-extension.js.map +1 -1
  31. package/dist/lib/index.js +25 -22
  32. package/dist/lib/index.js.map +1 -1
  33. package/dist/lib/midscene-playground.js +25 -22
  34. package/dist/lib/midscene-playground.js.map +1 -1
  35. package/dist/lib/playground.js +25 -22
  36. package/dist/lib/playground.js.map +1 -1
  37. package/dist/lib/playwright.js +25 -22
  38. package/dist/lib/playwright.js.map +1 -1
  39. package/dist/lib/puppeteer-agent-launcher.js +25 -22
  40. package/dist/lib/puppeteer-agent-launcher.js.map +1 -1
  41. package/dist/lib/puppeteer.js +25 -22
  42. package/dist/lib/puppeteer.js.map +1 -1
  43. package/dist/lib/yaml.js +15 -15
  44. package/dist/lib/yaml.js.map +1 -1
  45. package/dist/types/agent.d.ts +3 -1
  46. package/iife-script/htmlElement.js +5 -4
  47. package/iife-script/htmlElementDebug.js +5 -4
  48. package/package.json +3 -3
package/dist/es/agent.js CHANGED
@@ -82,7 +82,7 @@ var ScriptPlayer = class {
82
82
  const currentStep = Number.parseInt(flowItemIndex, 10);
83
83
  taskStatus.currentStep = currentStep;
84
84
  const flowItem = flow[flowItemIndex];
85
- if (flowItem.aiAction || flowItem.ai) {
85
+ if ("aiAction" in flowItem || "ai" in flowItem) {
86
86
  const actionTask = flowItem;
87
87
  const prompt = actionTask.aiAction || actionTask.ai;
88
88
  assert(prompt, "missing prompt for ai (aiAction)");
@@ -91,7 +91,7 @@ var ScriptPlayer = class {
91
91
  "prompt for aiAction must be a string"
92
92
  );
93
93
  await agent.aiAction(prompt);
94
- } else if (flowItem.aiAssert) {
94
+ } else if ("aiAssert" in flowItem) {
95
95
  const assertTask = flowItem;
96
96
  const prompt = assertTask.aiAssert;
97
97
  assert(prompt, "missing prompt for aiAssert");
@@ -100,7 +100,7 @@ var ScriptPlayer = class {
100
100
  "prompt for aiAssert must be a string"
101
101
  );
102
102
  await agent.aiAssert(prompt);
103
- } else if (flowItem.aiQuery) {
103
+ } else if ("aiQuery" in flowItem) {
104
104
  const queryTask = flowItem;
105
105
  const prompt = queryTask.aiQuery;
106
106
  assert(prompt, "missing prompt for aiQuery");
@@ -110,7 +110,7 @@ var ScriptPlayer = class {
110
110
  );
111
111
  const queryResult = await agent.aiQuery(prompt);
112
112
  this.setResult(queryTask.name, queryResult);
113
- } else if (flowItem.aiNumber) {
113
+ } else if ("aiNumber" in flowItem) {
114
114
  const numberTask = flowItem;
115
115
  const prompt = numberTask.aiNumber;
116
116
  assert(prompt, "missing prompt for number");
@@ -120,7 +120,7 @@ var ScriptPlayer = class {
120
120
  );
121
121
  const numberResult = await agent.aiNumber(prompt);
122
122
  this.setResult(numberTask.name, numberResult);
123
- } else if (flowItem.aiString) {
123
+ } else if ("aiString" in flowItem) {
124
124
  const stringTask = flowItem;
125
125
  const prompt = stringTask.aiString;
126
126
  assert(prompt, "missing prompt for string");
@@ -130,7 +130,7 @@ var ScriptPlayer = class {
130
130
  );
131
131
  const stringResult = await agent.aiString(prompt);
132
132
  this.setResult(stringTask.name, stringResult);
133
- } else if (flowItem.aiBoolean) {
133
+ } else if ("aiBoolean" in flowItem) {
134
134
  const booleanTask = flowItem;
135
135
  const prompt = booleanTask.aiBoolean;
136
136
  assert(prompt, "missing prompt for boolean");
@@ -140,7 +140,7 @@ var ScriptPlayer = class {
140
140
  );
141
141
  const booleanResult = await agent.aiBoolean(prompt);
142
142
  this.setResult(booleanTask.name, booleanResult);
143
- } else if (flowItem.aiLocate) {
143
+ } else if ("aiLocate" in flowItem) {
144
144
  const locateTask = flowItem;
145
145
  const prompt = locateTask.aiLocate;
146
146
  assert(prompt, "missing prompt for aiLocate");
@@ -150,7 +150,7 @@ var ScriptPlayer = class {
150
150
  );
151
151
  const locateResult = await agent.aiLocate(prompt);
152
152
  this.setResult(locateTask.name, locateResult);
153
- } else if (flowItem.aiWaitFor) {
153
+ } else if ("aiWaitFor" in flowItem) {
154
154
  const waitForTask = flowItem;
155
155
  const prompt = waitForTask.aiWaitFor;
156
156
  assert(prompt, "missing prompt for aiWaitFor");
@@ -160,7 +160,7 @@ var ScriptPlayer = class {
160
160
  );
161
161
  const timeout = waitForTask.timeout;
162
162
  await agent.aiWaitFor(prompt, { timeoutMs: timeout });
163
- } else if (flowItem.sleep) {
163
+ } else if ("sleep" in flowItem) {
164
164
  const sleepTask = flowItem;
165
165
  const ms = sleepTask.sleep;
166
166
  let msNumber = ms;
@@ -172,26 +172,26 @@ var ScriptPlayer = class {
172
172
  `ms for sleep must be greater than 0, but got ${ms}`
173
173
  );
174
174
  await new Promise((resolve2) => setTimeout(resolve2, msNumber));
175
- } else if (flowItem.aiTap) {
175
+ } else if ("aiTap" in flowItem) {
176
176
  const tapTask = flowItem;
177
177
  await agent.aiTap(tapTask.aiTap, tapTask);
178
- } else if (flowItem.aiHover) {
178
+ } else if ("aiHover" in flowItem) {
179
179
  const hoverTask = flowItem;
180
180
  await agent.aiHover(hoverTask.aiHover, hoverTask);
181
- } else if (flowItem.aiInput) {
181
+ } else if ("aiInput" in flowItem) {
182
182
  const inputTask = flowItem;
183
183
  await agent.aiInput(inputTask.aiInput, inputTask.locate, inputTask);
184
- } else if (flowItem.aiKeyboardPress) {
184
+ } else if ("aiKeyboardPress" in flowItem) {
185
185
  const keyboardPressTask = flowItem;
186
186
  await agent.aiKeyboardPress(
187
187
  keyboardPressTask.aiKeyboardPress,
188
188
  keyboardPressTask.locate,
189
189
  keyboardPressTask
190
190
  );
191
- } else if (typeof flowItem.aiScroll !== "undefined") {
191
+ } else if ("aiScroll" in flowItem) {
192
192
  const scrollTask = flowItem;
193
193
  await agent.aiScroll(scrollTask, scrollTask.locate, scrollTask);
194
- } else if (typeof flowItem.javascript !== "undefined") {
194
+ } else if ("javascript" in flowItem) {
195
195
  const evaluateJavaScriptTask = flowItem;
196
196
  const result = await agent.evaluateJavaScript(
197
197
  evaluateJavaScriptTask.javascript
@@ -680,7 +680,7 @@ var PageTaskExecutor = class {
680
680
  const xpaths = locateCacheRecord?.cacheContent?.xpaths;
681
681
  let elementFromCache = null;
682
682
  try {
683
- if (xpaths?.length && this.taskCache?.isCacheResultUsed) {
683
+ if (xpaths?.length && this.taskCache?.isCacheResultUsed && param?.cacheable !== false) {
684
684
  const elementInfosScriptContent = getElementInfosScriptContent();
685
685
  const element2 = await this.page.evaluateJavaScript?.(
686
686
  `${elementInfosScriptContent}midscene_element_inspector.getElementInfoByXpath('${xpaths[0]}')`
@@ -706,7 +706,7 @@ var PageTaskExecutor = class {
706
706
  context: pageContext
707
707
  })).element;
708
708
  const aiCost = Date.now() - startTime;
709
- if (element && this.taskCache && !cacheHitFlag) {
709
+ if (element && this.taskCache && !cacheHitFlag && param?.cacheable !== false) {
710
710
  const elementXpaths = await this.getElementXpath(
711
711
  pageContext,
712
712
  element
@@ -1630,7 +1630,7 @@ import yaml3 from "js-yaml";
1630
1630
  import semver from "semver";
1631
1631
 
1632
1632
  // package.json
1633
- var version = "0.17.1";
1633
+ var version = "0.17.2-beta-20250521115451.0";
1634
1634
 
1635
1635
  // src/common/task-cache.ts
1636
1636
  var debug3 = getDebug3("cache");
@@ -1900,9 +1900,11 @@ ${errorTask?.errorStack}`);
1900
1900
  if (typeof opt === "object") {
1901
1901
  const prompt = opt.prompt || locatePrompt;
1902
1902
  const deepThink = opt.deepThink || false;
1903
+ const cacheable = opt.cacheable || true;
1903
1904
  return {
1904
1905
  prompt,
1905
- deepThink
1906
+ deepThink,
1907
+ cacheable
1906
1908
  };
1907
1909
  }
1908
1910
  return {
@@ -1979,9 +1981,10 @@ ${errorTask?.errorStack}`);
1979
1981
  this.afterTaskRunning(executor);
1980
1982
  return output;
1981
1983
  }
1982
- async aiAction(taskPrompt) {
1984
+ async aiAction(taskPrompt, opt) {
1985
+ const cacheable = opt?.cacheable;
1983
1986
  const isVlmUiTars = vlLocateMode() === "vlm-ui-tars";
1984
- const matchedCache = isVlmUiTars ? void 0 : this.taskCache?.matchPlanCache(taskPrompt);
1987
+ const matchedCache = isVlmUiTars || cacheable === false ? void 0 : this.taskCache?.matchPlanCache(taskPrompt);
1985
1988
  if (matchedCache && this.taskCache?.isCacheResultUsed) {
1986
1989
  const { executor: executor2 } = await this.taskExecutor.loadYamlFlowAsPlanning(
1987
1990
  taskPrompt,
@@ -1993,7 +1996,7 @@ ${errorTask?.errorStack}`);
1993
1996
  return this.runYaml(yaml5);
1994
1997
  }
1995
1998
  const { output, executor } = await (isVlmUiTars ? this.taskExecutor.actionToGoal(taskPrompt) : this.taskExecutor.action(taskPrompt, this.opts.aiActionContext));
1996
- if (this.taskCache && output?.yamlFlow) {
1999
+ if (this.taskCache && output?.yamlFlow && cacheable !== false) {
1997
2000
  const yamlContent = {
1998
2001
  tasks: [
1999
2002
  {