@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.
- package/dist/es/agent.js +25 -22
- package/dist/es/agent.js.map +1 -1
- package/dist/es/bridge-mode-browser.js +3 -3
- package/dist/es/bridge-mode-browser.js.map +1 -1
- package/dist/es/bridge-mode.js +27 -24
- package/dist/es/bridge-mode.js.map +1 -1
- package/dist/es/chrome-extension.js +26 -23
- package/dist/es/chrome-extension.js.map +1 -1
- package/dist/es/index.js +25 -22
- package/dist/es/index.js.map +1 -1
- package/dist/es/midscene-playground.js +25 -22
- package/dist/es/midscene-playground.js.map +1 -1
- package/dist/es/playground.js +25 -22
- package/dist/es/playground.js.map +1 -1
- package/dist/es/playwright.js +25 -22
- package/dist/es/playwright.js.map +1 -1
- package/dist/es/puppeteer-agent-launcher.js +25 -22
- package/dist/es/puppeteer-agent-launcher.js.map +1 -1
- package/dist/es/puppeteer.js +25 -22
- package/dist/es/puppeteer.js.map +1 -1
- package/dist/es/yaml.js +15 -15
- package/dist/es/yaml.js.map +1 -1
- package/dist/lib/agent.js +25 -22
- package/dist/lib/agent.js.map +1 -1
- package/dist/lib/bridge-mode-browser.js +3 -3
- package/dist/lib/bridge-mode-browser.js.map +1 -1
- package/dist/lib/bridge-mode.js +27 -24
- package/dist/lib/bridge-mode.js.map +1 -1
- package/dist/lib/chrome-extension.js +26 -23
- package/dist/lib/chrome-extension.js.map +1 -1
- package/dist/lib/index.js +25 -22
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/midscene-playground.js +25 -22
- package/dist/lib/midscene-playground.js.map +1 -1
- package/dist/lib/playground.js +25 -22
- package/dist/lib/playground.js.map +1 -1
- package/dist/lib/playwright.js +25 -22
- package/dist/lib/playwright.js.map +1 -1
- package/dist/lib/puppeteer-agent-launcher.js +25 -22
- package/dist/lib/puppeteer-agent-launcher.js.map +1 -1
- package/dist/lib/puppeteer.js +25 -22
- package/dist/lib/puppeteer.js.map +1 -1
- package/dist/lib/yaml.js +15 -15
- package/dist/lib/yaml.js.map +1 -1
- package/dist/types/agent.d.ts +3 -1
- package/iife-script/htmlElement.js +5 -4
- package/iife-script/htmlElementDebug.js +5 -4
- 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 (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
175
|
+
} else if ("aiTap" in flowItem) {
|
|
176
176
|
const tapTask = flowItem;
|
|
177
177
|
await agent.aiTap(tapTask.aiTap, tapTask);
|
|
178
|
-
} else if (flowItem
|
|
178
|
+
} else if ("aiHover" in flowItem) {
|
|
179
179
|
const hoverTask = flowItem;
|
|
180
180
|
await agent.aiHover(hoverTask.aiHover, hoverTask);
|
|
181
|
-
} else if (flowItem
|
|
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
|
|
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 (
|
|
191
|
+
} else if ("aiScroll" in flowItem) {
|
|
192
192
|
const scrollTask = flowItem;
|
|
193
193
|
await agent.aiScroll(scrollTask, scrollTask.locate, scrollTask);
|
|
194
|
-
} else if (
|
|
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.
|
|
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
|
{
|