test-wuying-agentbay-sdk 0.13.1-beta.20251223203147 → 0.13.1-beta.20251224094729
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/index.cjs +445 -295
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +75 -119
- package/dist/index.d.ts +75 -119
- package/dist/index.mjs +445 -295
- package/dist/index.mjs.map +1 -1
- package/docs/api/common-features/advanced/agent.md +5 -3
- package/docs/api/common-features/advanced/mobile-use-agent.md +161 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2311,11 +2311,20 @@ var LOG_LEVEL_VALUES = {
|
|
|
2311
2311
|
};
|
|
2312
2312
|
var currentRequestId = "";
|
|
2313
2313
|
var currentLogLevel = process.env.LOG_LEVEL || process.env.AGENTBAY_LOG_LEVEL || "INFO";
|
|
2314
|
+
var currentLogFormat = process.env.AGENTBAY_LOG_FORMAT || "pretty";
|
|
2315
|
+
if (["sls", "compact"].includes(String(currentLogFormat).toLowerCase())) {
|
|
2316
|
+
currentLogFormat = "sls";
|
|
2317
|
+
} else {
|
|
2318
|
+
currentLogFormat = "pretty";
|
|
2319
|
+
}
|
|
2314
2320
|
var fileLoggingEnabled = false;
|
|
2315
2321
|
var logFilePath = null;
|
|
2316
2322
|
var logFileMaxSize = 10 * 1024 * 1024;
|
|
2317
2323
|
var consoleLoggingEnabled = true;
|
|
2318
2324
|
function shouldUseColors() {
|
|
2325
|
+
if (currentLogFormat === "sls") {
|
|
2326
|
+
return false;
|
|
2327
|
+
}
|
|
2319
2328
|
if (process.env.DISABLE_COLORS === "true") {
|
|
2320
2329
|
return false;
|
|
2321
2330
|
}
|
|
@@ -2357,6 +2366,9 @@ var SENSITIVE_FIELDS = [
|
|
|
2357
2366
|
"authorization"
|
|
2358
2367
|
];
|
|
2359
2368
|
function getLogLevelEmoji(level) {
|
|
2369
|
+
if (currentLogFormat === "sls") {
|
|
2370
|
+
return level;
|
|
2371
|
+
}
|
|
2360
2372
|
switch (level) {
|
|
2361
2373
|
case "DEBUG":
|
|
2362
2374
|
return "\u{1F41B} DEBUG";
|
|
@@ -2376,6 +2388,13 @@ function shouldLog(level) {
|
|
|
2376
2388
|
}
|
|
2377
2389
|
_chunk4IPTHWLMcjs.__name.call(void 0, shouldLog, "shouldLog");
|
|
2378
2390
|
function formatLogMessage(level, message, forFile = false) {
|
|
2391
|
+
if (currentLogFormat === "sls") {
|
|
2392
|
+
let formattedMessage2 = `${level}: ${message}`;
|
|
2393
|
+
if (currentRequestId) {
|
|
2394
|
+
formattedMessage2 += ` [RequestId=${currentRequestId}]`;
|
|
2395
|
+
}
|
|
2396
|
+
return formattedMessage2;
|
|
2397
|
+
}
|
|
2379
2398
|
let formattedMessage = `${getLogLevelEmoji(level)}: ${message}`;
|
|
2380
2399
|
if (currentRequestId) {
|
|
2381
2400
|
formattedMessage += ` [RequestId=${currentRequestId}]`;
|
|
@@ -2523,6 +2542,23 @@ function setupLogger(config) {
|
|
|
2523
2542
|
if (config.enableConsole !== void 0) {
|
|
2524
2543
|
consoleLoggingEnabled = config.enableConsole;
|
|
2525
2544
|
}
|
|
2545
|
+
if (config.format) {
|
|
2546
|
+
if (["sls", "compact"].includes(String(config.format).toLowerCase())) {
|
|
2547
|
+
currentLogFormat = "sls";
|
|
2548
|
+
} else {
|
|
2549
|
+
currentLogFormat = "pretty";
|
|
2550
|
+
}
|
|
2551
|
+
} else {
|
|
2552
|
+
const envFormat = process.env.AGENTBAY_LOG_FORMAT;
|
|
2553
|
+
if (envFormat) {
|
|
2554
|
+
if (["sls", "compact"].includes(String(envFormat).toLowerCase())) {
|
|
2555
|
+
currentLogFormat = "sls";
|
|
2556
|
+
} else {
|
|
2557
|
+
currentLogFormat = "pretty";
|
|
2558
|
+
}
|
|
2559
|
+
}
|
|
2560
|
+
}
|
|
2561
|
+
useColors = shouldUseColors();
|
|
2526
2562
|
}
|
|
2527
2563
|
_chunk4IPTHWLMcjs.__name.call(void 0, setupLogger, "setupLogger");
|
|
2528
2564
|
function log(message, ...args) {
|
|
@@ -2630,6 +2666,22 @@ ${error.stack}`;
|
|
|
2630
2666
|
_chunk4IPTHWLMcjs.__name.call(void 0, logError, "logError");
|
|
2631
2667
|
function logAPICall(apiName, requestData) {
|
|
2632
2668
|
if (!shouldLog("INFO")) return;
|
|
2669
|
+
if (currentLogFormat === "sls") {
|
|
2670
|
+
let message2 = `API Call: ${apiName}`;
|
|
2671
|
+
if (requestData) {
|
|
2672
|
+
const maskedData = maskSensitiveData(requestData);
|
|
2673
|
+
if (typeof maskedData === "string") {
|
|
2674
|
+
message2 += `, ${maskedData}`;
|
|
2675
|
+
} else {
|
|
2676
|
+
message2 += `, ${JSON.stringify(maskedData)}`;
|
|
2677
|
+
}
|
|
2678
|
+
}
|
|
2679
|
+
if (consoleLoggingEnabled) {
|
|
2680
|
+
process.stdout.write(message2 + "\n");
|
|
2681
|
+
}
|
|
2682
|
+
writeToFile(message2);
|
|
2683
|
+
return;
|
|
2684
|
+
}
|
|
2633
2685
|
const message = `\u{1F517} API Call: ${apiName}`;
|
|
2634
2686
|
const savedRequestId = currentRequestId;
|
|
2635
2687
|
currentRequestId = "";
|
|
@@ -2647,6 +2699,35 @@ function logAPICall(apiName, requestData) {
|
|
|
2647
2699
|
}
|
|
2648
2700
|
_chunk4IPTHWLMcjs.__name.call(void 0, logAPICall, "logAPICall");
|
|
2649
2701
|
function logAPIResponseWithDetails(apiName, requestId, success = true, keyFields, fullResponse) {
|
|
2702
|
+
if (currentLogFormat === "sls") {
|
|
2703
|
+
if (!shouldLog(success ? "INFO" : "ERROR")) return;
|
|
2704
|
+
const status = success ? "API Response" : "API Response Failed";
|
|
2705
|
+
let msg = `${status}: ${apiName}`;
|
|
2706
|
+
if (requestId) {
|
|
2707
|
+
msg += `, RequestId=${requestId}`;
|
|
2708
|
+
}
|
|
2709
|
+
if (keyFields) {
|
|
2710
|
+
for (const [key, value] of Object.entries(keyFields)) {
|
|
2711
|
+
const maskedValue = maskSensitiveData({ [key]: value });
|
|
2712
|
+
msg += `, ${key}=${maskedValue[key]}`;
|
|
2713
|
+
}
|
|
2714
|
+
}
|
|
2715
|
+
if (success) {
|
|
2716
|
+
if (consoleLoggingEnabled) {
|
|
2717
|
+
process.stdout.write(msg + "\n");
|
|
2718
|
+
}
|
|
2719
|
+
writeToFile(msg);
|
|
2720
|
+
} else {
|
|
2721
|
+
if (consoleLoggingEnabled) {
|
|
2722
|
+
process.stderr.write(msg + "\n");
|
|
2723
|
+
}
|
|
2724
|
+
writeToFile(msg);
|
|
2725
|
+
}
|
|
2726
|
+
if (fullResponse && shouldLog("DEBUG")) {
|
|
2727
|
+
logDebug(`Full Response: ${fullResponse}`);
|
|
2728
|
+
}
|
|
2729
|
+
return;
|
|
2730
|
+
}
|
|
2650
2731
|
if (success) {
|
|
2651
2732
|
if (shouldLog("INFO")) {
|
|
2652
2733
|
let mainMessage = `\u2705 API Response: ${apiName}`;
|
|
@@ -2718,6 +2799,16 @@ function logCodeExecutionOutput(requestId, rawOutput) {
|
|
|
2718
2799
|
return;
|
|
2719
2800
|
}
|
|
2720
2801
|
const actualOutput = texts.join("");
|
|
2802
|
+
if (currentLogFormat === "sls") {
|
|
2803
|
+
const header2 = `Code Execution Output (RequestID: ${requestId}):`;
|
|
2804
|
+
if (consoleLoggingEnabled) {
|
|
2805
|
+
process.stdout.write(header2 + "\n");
|
|
2806
|
+
process.stdout.write(actualOutput + "\n");
|
|
2807
|
+
}
|
|
2808
|
+
writeToFile(header2);
|
|
2809
|
+
writeToFile(actualOutput);
|
|
2810
|
+
return;
|
|
2811
|
+
}
|
|
2721
2812
|
const header = `\u{1F4CB} Code Execution Output (RequestID: ${requestId}):`;
|
|
2722
2813
|
if (useColors) {
|
|
2723
2814
|
process.stdout.write(`${ANSI_GREEN}\u2139\uFE0F INFO: ${header}${ANSI_RESET}
|
|
@@ -2747,6 +2838,10 @@ function logCodeExecutionOutput(requestId, rawOutput) {
|
|
|
2747
2838
|
_chunk4IPTHWLMcjs.__name.call(void 0, logCodeExecutionOutput, "logCodeExecutionOutput");
|
|
2748
2839
|
function logInfoWithColor(message, color = ANSI_RED) {
|
|
2749
2840
|
if (!shouldLog("INFO")) return;
|
|
2841
|
+
if (currentLogFormat === "sls") {
|
|
2842
|
+
logInfo(message);
|
|
2843
|
+
return;
|
|
2844
|
+
}
|
|
2750
2845
|
const emoji = "\u2139\uFE0F INFO";
|
|
2751
2846
|
const fullMessage = `${emoji}: ${message}`;
|
|
2752
2847
|
if (useColors) {
|
|
@@ -3872,41 +3967,35 @@ _chunk4IPTHWLMcjs.init_cjs_shims.call(void 0, );
|
|
|
3872
3967
|
|
|
3873
3968
|
// src/agent/agent.ts
|
|
3874
3969
|
_chunk4IPTHWLMcjs.init_cjs_shims.call(void 0, );
|
|
3875
|
-
var
|
|
3876
|
-
/**
|
|
3877
|
-
* Initialize an Computer Agent object.
|
|
3878
|
-
*
|
|
3879
|
-
* @param session - The Session instance that this Agent belongs to.
|
|
3880
|
-
*/
|
|
3970
|
+
var _BaseTaskAgent = class _BaseTaskAgent {
|
|
3881
3971
|
constructor(session) {
|
|
3882
3972
|
this.session = session;
|
|
3883
3973
|
}
|
|
3974
|
+
/**
|
|
3975
|
+
* Get the full MCP tool name based on prefix and action.
|
|
3976
|
+
*/
|
|
3977
|
+
getToolName(action) {
|
|
3978
|
+
const toolMap = {
|
|
3979
|
+
execute: "execute_task",
|
|
3980
|
+
get_status: "get_task_status",
|
|
3981
|
+
terminate: "terminate_task"
|
|
3982
|
+
};
|
|
3983
|
+
const baseName = toolMap[action] || action;
|
|
3984
|
+
if (this.toolPrefix) {
|
|
3985
|
+
return `${this.toolPrefix}_${baseName}`;
|
|
3986
|
+
}
|
|
3987
|
+
return baseName;
|
|
3988
|
+
}
|
|
3884
3989
|
/**
|
|
3885
3990
|
* Execute a specific task described in human language.
|
|
3886
|
-
*
|
|
3887
|
-
* @param task - Task description in human language.
|
|
3888
|
-
* @param maxTryTimes - Maximum number of retry attempts.
|
|
3889
|
-
* @returns ExecutionResult containing success status, task output, and error
|
|
3890
|
-
* message if any.
|
|
3891
|
-
*
|
|
3892
|
-
* @example
|
|
3893
|
-
* ```typescript
|
|
3894
|
-
* const agentBay = new AgentBay({ apiKey: 'your_api_key' });
|
|
3895
|
-
* const result = await agentBay.create({ imageId: 'windows_latest' });
|
|
3896
|
-
* if (result.success) {
|
|
3897
|
-
* const taskResult = await result.session.agent.computer.executeTask(
|
|
3898
|
-
* 'Open notepad',
|
|
3899
|
-
* 10
|
|
3900
|
-
* );
|
|
3901
|
-
* console.log(`Task status: ${taskResult.taskStatus}`);
|
|
3902
|
-
* await result.session.delete();
|
|
3903
|
-
* }
|
|
3904
|
-
* ```
|
|
3905
3991
|
*/
|
|
3906
3992
|
async executeTask(task, maxTryTimes) {
|
|
3907
3993
|
try {
|
|
3908
3994
|
const args = { task, max_try_times: maxTryTimes };
|
|
3909
|
-
const result = await this.session.callMcpTool(
|
|
3995
|
+
const result = await this.session.callMcpTool(
|
|
3996
|
+
this.getToolName("execute"),
|
|
3997
|
+
args
|
|
3998
|
+
);
|
|
3910
3999
|
if (!result.success) {
|
|
3911
4000
|
return {
|
|
3912
4001
|
requestId: result.requestId,
|
|
@@ -3930,7 +4019,7 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
3930
4019
|
taskResult: "Invalid execution response."
|
|
3931
4020
|
};
|
|
3932
4021
|
}
|
|
3933
|
-
const taskId = content.task_id;
|
|
4022
|
+
const taskId = content.taskId || content.task_id;
|
|
3934
4023
|
if (!taskId) {
|
|
3935
4024
|
return {
|
|
3936
4025
|
requestId: result.requestId,
|
|
@@ -3955,13 +4044,13 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
3955
4044
|
};
|
|
3956
4045
|
}
|
|
3957
4046
|
switch (query.taskStatus) {
|
|
3958
|
-
case "
|
|
4047
|
+
case "completed":
|
|
3959
4048
|
return {
|
|
3960
4049
|
requestId: query.requestId,
|
|
3961
4050
|
success: true,
|
|
3962
4051
|
errorMessage: "",
|
|
3963
4052
|
taskId,
|
|
3964
|
-
taskStatus: "
|
|
4053
|
+
taskStatus: "completed",
|
|
3965
4054
|
taskResult: query.taskProduct
|
|
3966
4055
|
};
|
|
3967
4056
|
case "failed":
|
|
@@ -3973,6 +4062,15 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
3973
4062
|
taskStatus: "failed",
|
|
3974
4063
|
taskResult: ""
|
|
3975
4064
|
};
|
|
4065
|
+
case "cancelled":
|
|
4066
|
+
return {
|
|
4067
|
+
requestId: query.requestId,
|
|
4068
|
+
success: false,
|
|
4069
|
+
errorMessage: query.errorMessage || "Task was cancelled.",
|
|
4070
|
+
taskId,
|
|
4071
|
+
taskStatus: "cancelled",
|
|
4072
|
+
taskResult: ""
|
|
4073
|
+
};
|
|
3976
4074
|
case "unsupported":
|
|
3977
4075
|
return {
|
|
3978
4076
|
requestId: query.requestId,
|
|
@@ -4008,32 +4106,20 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
4008
4106
|
}
|
|
4009
4107
|
/**
|
|
4010
4108
|
* Get the status of the task with the given task ID.
|
|
4011
|
-
*
|
|
4012
|
-
* @param taskId - Task ID
|
|
4013
|
-
* @returns QueryResult containing the task status
|
|
4014
|
-
*
|
|
4015
|
-
* @example
|
|
4016
|
-
* ```typescript
|
|
4017
|
-
* const agentBay = new AgentBay({ apiKey: 'your_api_key' });
|
|
4018
|
-
* const result = await agentBay.create({ imageId: 'windows_latest' });
|
|
4019
|
-
* if (result.success) {
|
|
4020
|
-
* const taskResult = await result.session.agent.computer.executeTask('Open
|
|
4021
|
-
* calculator', 10); const statusResult = await
|
|
4022
|
-
* result.session.agent.computer.getTaskStatus(taskResult.taskId);
|
|
4023
|
-
* console.log(`Status:
|
|
4024
|
-
* ${JSON.parse(statusResult.output).status}`); await result.session.delete();
|
|
4025
|
-
* }
|
|
4026
|
-
* ```
|
|
4027
4109
|
*/
|
|
4028
4110
|
async getTaskStatus(taskId) {
|
|
4029
4111
|
try {
|
|
4030
4112
|
const args = { task_id: taskId };
|
|
4031
|
-
const result = await this.session.callMcpTool(
|
|
4113
|
+
const result = await this.session.callMcpTool(
|
|
4114
|
+
this.getToolName("get_status"),
|
|
4115
|
+
args
|
|
4116
|
+
);
|
|
4032
4117
|
if (!result.success) {
|
|
4033
4118
|
return {
|
|
4034
4119
|
requestId: result.requestId,
|
|
4035
4120
|
success: false,
|
|
4036
4121
|
errorMessage: result.errorMessage,
|
|
4122
|
+
taskId,
|
|
4037
4123
|
taskAction: "",
|
|
4038
4124
|
taskProduct: "",
|
|
4039
4125
|
taskStatus: "failed"
|
|
@@ -4042,19 +4128,27 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
4042
4128
|
let queryResult;
|
|
4043
4129
|
try {
|
|
4044
4130
|
queryResult = JSON.parse(result.data);
|
|
4131
|
+
const contentTaskId = queryResult.taskId || queryResult.task_id || taskId;
|
|
4132
|
+
const taskProduct = queryResult.result || queryResult.product || "";
|
|
4133
|
+
const stream = Array.isArray(queryResult.stream) ? queryResult.stream : void 0;
|
|
4134
|
+
const error = queryResult.error || void 0;
|
|
4045
4135
|
return {
|
|
4046
4136
|
requestId: result.requestId,
|
|
4047
4137
|
success: true,
|
|
4048
4138
|
errorMessage: "",
|
|
4139
|
+
taskId: contentTaskId,
|
|
4049
4140
|
taskAction: queryResult.action || "",
|
|
4050
|
-
taskProduct
|
|
4051
|
-
taskStatus: queryResult.status || "
|
|
4141
|
+
taskProduct,
|
|
4142
|
+
taskStatus: queryResult.status || "completed",
|
|
4143
|
+
stream,
|
|
4144
|
+
error
|
|
4052
4145
|
};
|
|
4053
4146
|
} catch (error) {
|
|
4054
4147
|
return {
|
|
4055
4148
|
requestId: result.requestId,
|
|
4056
4149
|
success: false,
|
|
4057
4150
|
errorMessage: `Failed to get task status: ${error}`,
|
|
4151
|
+
taskId,
|
|
4058
4152
|
taskAction: "",
|
|
4059
4153
|
taskProduct: "",
|
|
4060
4154
|
taskStatus: "failed"
|
|
@@ -4065,6 +4159,7 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
4065
4159
|
requestId: "",
|
|
4066
4160
|
success: false,
|
|
4067
4161
|
errorMessage: `Failed to get task status: ${error}`,
|
|
4162
|
+
taskId,
|
|
4068
4163
|
taskAction: "",
|
|
4069
4164
|
taskProduct: "",
|
|
4070
4165
|
taskStatus: "failed"
|
|
@@ -4073,33 +4168,15 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
4073
4168
|
}
|
|
4074
4169
|
/**
|
|
4075
4170
|
* Terminate a task with a specified task ID.
|
|
4076
|
-
*
|
|
4077
|
-
* @param taskId - The ID of the running task.
|
|
4078
|
-
* @returns ExecutionResult containing success status, task output, and
|
|
4079
|
-
* error message if any.
|
|
4080
|
-
*
|
|
4081
|
-
* @example
|
|
4082
|
-
* ```typescript
|
|
4083
|
-
* const agentBay = new AgentBay({ apiKey: 'your_api_key' });
|
|
4084
|
-
* const result = await agentBay.create({ imageId: 'windows_latest' });
|
|
4085
|
-
* if (result.success) {
|
|
4086
|
-
* const taskResult = await result.session.agent.computer.executeTask(
|
|
4087
|
-
* 'Open notepad',
|
|
4088
|
-
* 5
|
|
4089
|
-
* );
|
|
4090
|
-
* const terminateResult = await result.session.agent.computer.terminateTask(
|
|
4091
|
-
* taskResult.taskId
|
|
4092
|
-
* );
|
|
4093
|
-
* console.log(`Terminated: ${terminateResult.taskStatus}`);
|
|
4094
|
-
* await result.session.delete();
|
|
4095
|
-
* }
|
|
4096
|
-
* ```
|
|
4097
4171
|
*/
|
|
4098
4172
|
async terminateTask(taskId) {
|
|
4099
4173
|
logDebug("Terminating task");
|
|
4100
4174
|
try {
|
|
4101
4175
|
const args = { task_id: taskId };
|
|
4102
|
-
const result = await this.session.callMcpTool(
|
|
4176
|
+
const result = await this.session.callMcpTool(
|
|
4177
|
+
this.getToolName("terminate"),
|
|
4178
|
+
args
|
|
4179
|
+
);
|
|
4103
4180
|
let content;
|
|
4104
4181
|
try {
|
|
4105
4182
|
content = JSON.parse(result.data);
|
|
@@ -4113,8 +4190,8 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
4113
4190
|
taskResult: ""
|
|
4114
4191
|
};
|
|
4115
4192
|
}
|
|
4116
|
-
const terminatedTaskId = content.task_id || taskId;
|
|
4117
|
-
const status = content.status || "
|
|
4193
|
+
const terminatedTaskId = content.taskId || content.task_id || taskId;
|
|
4194
|
+
const status = content.status || "cancelling";
|
|
4118
4195
|
if (result.success) {
|
|
4119
4196
|
return {
|
|
4120
4197
|
requestId: result.requestId,
|
|
@@ -4145,17 +4222,20 @@ var _ComputerUseAgent = class _ComputerUseAgent {
|
|
|
4145
4222
|
}
|
|
4146
4223
|
}
|
|
4147
4224
|
};
|
|
4225
|
+
_chunk4IPTHWLMcjs.__name.call(void 0, _BaseTaskAgent, "BaseTaskAgent");
|
|
4226
|
+
var BaseTaskAgent = _BaseTaskAgent;
|
|
4227
|
+
var _ComputerUseAgent = class _ComputerUseAgent extends BaseTaskAgent {
|
|
4228
|
+
constructor() {
|
|
4229
|
+
super(...arguments);
|
|
4230
|
+
this.toolPrefix = "flux";
|
|
4231
|
+
}
|
|
4232
|
+
};
|
|
4148
4233
|
_chunk4IPTHWLMcjs.__name.call(void 0, _ComputerUseAgent, "ComputerUseAgent");
|
|
4149
4234
|
var ComputerUseAgent = _ComputerUseAgent;
|
|
4150
|
-
var _BrowserUseAgent = class _BrowserUseAgent {
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
*
|
|
4155
|
-
* @param session - The Session instance that this Agent belongs to.
|
|
4156
|
-
*/
|
|
4157
|
-
constructor(session) {
|
|
4158
|
-
this.session = session;
|
|
4235
|
+
var _BrowserUseAgent = class _BrowserUseAgent extends BaseTaskAgent {
|
|
4236
|
+
constructor() {
|
|
4237
|
+
super(...arguments);
|
|
4238
|
+
this.toolPrefix = "browser_use";
|
|
4159
4239
|
}
|
|
4160
4240
|
/**
|
|
4161
4241
|
* Initialize the browser agent with specific options.
|
|
@@ -4200,276 +4280,345 @@ var _BrowserUseAgent = class _BrowserUseAgent {
|
|
|
4200
4280
|
};
|
|
4201
4281
|
}
|
|
4202
4282
|
}
|
|
4283
|
+
};
|
|
4284
|
+
_chunk4IPTHWLMcjs.__name.call(void 0, _BrowserUseAgent, "BrowserUseAgent");
|
|
4285
|
+
var BrowserUseAgent = _BrowserUseAgent;
|
|
4286
|
+
var _MobileUseAgent = class _MobileUseAgent extends BaseTaskAgent {
|
|
4287
|
+
constructor() {
|
|
4288
|
+
super(...arguments);
|
|
4289
|
+
this.toolPrefix = "";
|
|
4290
|
+
}
|
|
4203
4291
|
/**
|
|
4204
|
-
* Execute a
|
|
4292
|
+
* Execute a task in human language without waiting for completion
|
|
4293
|
+
* (non-blocking). This is a fire-and-return interface that immediately
|
|
4294
|
+
* provides a task ID. Call getTaskStatus to check the task status.
|
|
4205
4295
|
*
|
|
4206
4296
|
* @param task - Task description in human language.
|
|
4207
|
-
* @param
|
|
4208
|
-
*
|
|
4209
|
-
*
|
|
4297
|
+
* @param maxSteps - Maximum number of steps (clicks/swipes/etc.) allowed.
|
|
4298
|
+
* Used to prevent infinite loops or excessive resource
|
|
4299
|
+
* consumption. Default is 50.
|
|
4300
|
+
* @param maxStepRetries - Maximum retry times for MCP tool call failures
|
|
4301
|
+
* at SDK level. Used to retry when callMcpTool fails
|
|
4302
|
+
* (e.g., network errors, timeouts). Default is 3.
|
|
4303
|
+
* @returns ExecutionResult containing success status, task ID, task status,
|
|
4304
|
+
* and error message if any.
|
|
4210
4305
|
*
|
|
4211
4306
|
* @example
|
|
4212
4307
|
* ```typescript
|
|
4213
4308
|
* const agentBay = new AgentBay({ apiKey: 'your_api_key' });
|
|
4214
|
-
* const result = await agentBay.create({ imageId: '
|
|
4309
|
+
* const result = await agentBay.create({ imageId: 'mobile_latest' });
|
|
4215
4310
|
* if (result.success) {
|
|
4216
|
-
* const
|
|
4217
|
-
* '
|
|
4218
|
-
* 10
|
|
4311
|
+
* const execResult = await result.session.agent.mobile.executeTask(
|
|
4312
|
+
* 'Open WeChat app', 100, 5
|
|
4219
4313
|
* );
|
|
4220
|
-
* console.log(`Task
|
|
4314
|
+
* console.log(`Task ID: ${execResult.taskId}`);
|
|
4221
4315
|
* await result.session.delete();
|
|
4222
4316
|
* }
|
|
4223
4317
|
* ```
|
|
4224
4318
|
*/
|
|
4225
|
-
async executeTask(task,
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
errorMessage: result.errorMessage,
|
|
4234
|
-
taskStatus: "failed",
|
|
4235
|
-
taskId: "",
|
|
4236
|
-
taskResult: "Task Failed"
|
|
4237
|
-
};
|
|
4238
|
-
}
|
|
4239
|
-
let content;
|
|
4319
|
+
async executeTask(task, maxSteps = 50, maxStepRetries = 3) {
|
|
4320
|
+
const args = {
|
|
4321
|
+
task,
|
|
4322
|
+
max_steps: maxSteps
|
|
4323
|
+
};
|
|
4324
|
+
let lastError;
|
|
4325
|
+
let lastRequestId = "";
|
|
4326
|
+
for (let attempt = 0; attempt < maxStepRetries; attempt++) {
|
|
4240
4327
|
try {
|
|
4241
|
-
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4250
|
-
|
|
4251
|
-
}
|
|
4252
|
-
const taskId = content.task_id;
|
|
4253
|
-
if (!taskId) {
|
|
4254
|
-
return {
|
|
4255
|
-
requestId: result.requestId,
|
|
4256
|
-
success: false,
|
|
4257
|
-
errorMessage: "Task ID not found in response",
|
|
4258
|
-
taskStatus: "failed",
|
|
4259
|
-
taskId: "",
|
|
4260
|
-
taskResult: "Invalid task ID."
|
|
4261
|
-
};
|
|
4262
|
-
}
|
|
4263
|
-
let triedTime = 0;
|
|
4264
|
-
while (triedTime < maxTryTimes) {
|
|
4265
|
-
const query = await this.getTaskStatus(taskId);
|
|
4266
|
-
if (!query.success) {
|
|
4267
|
-
return {
|
|
4268
|
-
requestId: query.requestId,
|
|
4269
|
-
success: false,
|
|
4270
|
-
errorMessage: query.errorMessage,
|
|
4271
|
-
taskStatus: "failed",
|
|
4272
|
-
taskId,
|
|
4273
|
-
taskResult: ""
|
|
4274
|
-
};
|
|
4275
|
-
}
|
|
4276
|
-
switch (query.taskStatus) {
|
|
4277
|
-
case "finished":
|
|
4328
|
+
const result = await this.session.callMcpTool(
|
|
4329
|
+
this.getToolName("execute"),
|
|
4330
|
+
args
|
|
4331
|
+
);
|
|
4332
|
+
lastRequestId = result.requestId;
|
|
4333
|
+
if (result.success) {
|
|
4334
|
+
let content;
|
|
4335
|
+
try {
|
|
4336
|
+
content = JSON.parse(result.data);
|
|
4337
|
+
} catch (err) {
|
|
4278
4338
|
return {
|
|
4279
|
-
requestId:
|
|
4280
|
-
success:
|
|
4281
|
-
errorMessage:
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
taskResult:
|
|
4339
|
+
requestId: result.requestId,
|
|
4340
|
+
success: false,
|
|
4341
|
+
errorMessage: `Failed to parse response: ${err}`,
|
|
4342
|
+
taskStatus: "failed",
|
|
4343
|
+
taskId: "",
|
|
4344
|
+
taskResult: "Invalid execution response."
|
|
4285
4345
|
};
|
|
4286
|
-
|
|
4346
|
+
}
|
|
4347
|
+
const taskId = content.taskId || content.task_id;
|
|
4348
|
+
if (!taskId) {
|
|
4287
4349
|
return {
|
|
4288
|
-
requestId:
|
|
4350
|
+
requestId: result.requestId,
|
|
4289
4351
|
success: false,
|
|
4290
|
-
errorMessage:
|
|
4291
|
-
taskId,
|
|
4352
|
+
errorMessage: "Task ID not found in response",
|
|
4292
4353
|
taskStatus: "failed",
|
|
4293
|
-
|
|
4354
|
+
taskId: "",
|
|
4355
|
+
taskResult: "Invalid task ID."
|
|
4294
4356
|
};
|
|
4295
|
-
|
|
4357
|
+
}
|
|
4358
|
+
return {
|
|
4359
|
+
requestId: result.requestId,
|
|
4360
|
+
success: true,
|
|
4361
|
+
errorMessage: "",
|
|
4362
|
+
taskId,
|
|
4363
|
+
taskStatus: "running",
|
|
4364
|
+
taskResult: ""
|
|
4365
|
+
};
|
|
4366
|
+
} else {
|
|
4367
|
+
lastError = result.errorMessage || "Failed to execute task";
|
|
4368
|
+
if (attempt < maxStepRetries - 1) {
|
|
4369
|
+
logDebug(
|
|
4370
|
+
`Attempt ${attempt + 1}/${maxStepRetries} failed, retrying...`
|
|
4371
|
+
);
|
|
4372
|
+
await new Promise((resolve2) => setTimeout(resolve2, 1e3));
|
|
4373
|
+
continue;
|
|
4374
|
+
} else {
|
|
4296
4375
|
return {
|
|
4297
|
-
requestId:
|
|
4376
|
+
requestId: result.requestId,
|
|
4298
4377
|
success: false,
|
|
4299
|
-
errorMessage:
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
taskResult: ""
|
|
4378
|
+
errorMessage: lastError,
|
|
4379
|
+
taskStatus: "failed",
|
|
4380
|
+
taskId: "",
|
|
4381
|
+
taskResult: "Task Failed"
|
|
4303
4382
|
};
|
|
4383
|
+
}
|
|
4384
|
+
}
|
|
4385
|
+
} catch (error) {
|
|
4386
|
+
lastError = `Failed to execute: ${error}`;
|
|
4387
|
+
if (attempt < maxStepRetries - 1) {
|
|
4388
|
+
logDebug(
|
|
4389
|
+
`Attempt ${attempt + 1}/${maxStepRetries} raised exception, retrying...`
|
|
4390
|
+
);
|
|
4391
|
+
await new Promise((resolve2) => setTimeout(resolve2, 1e3));
|
|
4392
|
+
continue;
|
|
4393
|
+
} else {
|
|
4394
|
+
return {
|
|
4395
|
+
requestId: lastRequestId,
|
|
4396
|
+
success: false,
|
|
4397
|
+
errorMessage: lastError,
|
|
4398
|
+
taskStatus: "failed",
|
|
4399
|
+
taskId: "",
|
|
4400
|
+
taskResult: "Task Failed"
|
|
4401
|
+
};
|
|
4304
4402
|
}
|
|
4305
|
-
logDebug(`Task ${taskId} is still running, please wait for a while.`);
|
|
4306
|
-
await new Promise((resolve2) => setTimeout(resolve2, 3e3));
|
|
4307
|
-
triedTime++;
|
|
4308
4403
|
}
|
|
4309
|
-
return {
|
|
4310
|
-
requestId: result.requestId,
|
|
4311
|
-
success: false,
|
|
4312
|
-
errorMessage: "Task execution timed out",
|
|
4313
|
-
taskStatus: "timeout",
|
|
4314
|
-
taskId,
|
|
4315
|
-
taskResult: "Task Timed Out"
|
|
4316
|
-
};
|
|
4317
|
-
} catch (error) {
|
|
4318
|
-
return {
|
|
4319
|
-
requestId: "",
|
|
4320
|
-
success: false,
|
|
4321
|
-
errorMessage: `Failed to execute: ${error}`,
|
|
4322
|
-
taskStatus: "failed",
|
|
4323
|
-
taskId: "",
|
|
4324
|
-
taskResult: "Task Failed"
|
|
4325
|
-
};
|
|
4326
4404
|
}
|
|
4405
|
+
return {
|
|
4406
|
+
requestId: lastRequestId,
|
|
4407
|
+
success: false,
|
|
4408
|
+
errorMessage: `Failed after ${maxStepRetries} attempts: ${lastError || "Unknown error"}`,
|
|
4409
|
+
taskStatus: "failed",
|
|
4410
|
+
taskId: "",
|
|
4411
|
+
taskResult: "Task Failed"
|
|
4412
|
+
};
|
|
4327
4413
|
}
|
|
4328
4414
|
/**
|
|
4329
|
-
*
|
|
4415
|
+
* Execute a specific task described in human language synchronously.
|
|
4416
|
+
* This is a synchronous interface that blocks until the task is completed or
|
|
4417
|
+
* an error occurs, or timeout happens. The default polling interval is
|
|
4418
|
+
* 3 seconds.
|
|
4330
4419
|
*
|
|
4331
|
-
* @param
|
|
4332
|
-
* @
|
|
4420
|
+
* @param task - Task description in human language.
|
|
4421
|
+
* @param maxSteps - Maximum number of steps (clicks/swipes/etc.) allowed.
|
|
4422
|
+
* Used to prevent infinite loops or excessive resource
|
|
4423
|
+
* consumption. Default is 50.
|
|
4424
|
+
* @param maxStepRetries - Maximum retry times for MCP tool call failures
|
|
4425
|
+
* at SDK level. Used to retry when callMcpTool fails
|
|
4426
|
+
* (e.g., network errors, timeouts). Default is 3.
|
|
4427
|
+
* @param maxTryTimes - Maximum number of polling attempts (each 3 seconds).
|
|
4428
|
+
* Used to control how long to wait for task completion.
|
|
4429
|
+
* Default is 300 (about 15 minutes).
|
|
4430
|
+
* @returns ExecutionResult containing success status, task ID, task status,
|
|
4431
|
+
* and error message if any.
|
|
4333
4432
|
*
|
|
4334
4433
|
* @example
|
|
4335
4434
|
* ```typescript
|
|
4336
4435
|
* const agentBay = new AgentBay({ apiKey: 'your_api_key' });
|
|
4337
|
-
* const result = await agentBay.create({ imageId: '
|
|
4436
|
+
* const result = await agentBay.create({ imageId: 'mobile_latest' });
|
|
4338
4437
|
* if (result.success) {
|
|
4339
|
-
* const
|
|
4340
|
-
* '
|
|
4341
|
-
* 10
|
|
4438
|
+
* const execResult = await result.session.agent.mobile.executeTaskAndWait(
|
|
4439
|
+
* 'Open WeChat app', 100, 3, 200
|
|
4342
4440
|
* );
|
|
4343
|
-
*
|
|
4344
|
-
* taskResult.taskId
|
|
4345
|
-
* );
|
|
4346
|
-
* console.log(`Status: ${statusResult.taskStatus}`);
|
|
4441
|
+
* console.log(`Task result: ${execResult.taskResult}`);
|
|
4347
4442
|
* await result.session.delete();
|
|
4348
4443
|
* }
|
|
4349
4444
|
* ```
|
|
4350
4445
|
*/
|
|
4351
|
-
async
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
taskAction: "",
|
|
4361
|
-
taskProduct: "",
|
|
4362
|
-
taskStatus: "failed"
|
|
4363
|
-
};
|
|
4364
|
-
}
|
|
4365
|
-
let queryResult;
|
|
4446
|
+
async executeTaskAndWait(task, maxSteps = 50, maxStepRetries = 3, maxTryTimes = 300) {
|
|
4447
|
+
const args = {
|
|
4448
|
+
task,
|
|
4449
|
+
max_steps: maxSteps
|
|
4450
|
+
};
|
|
4451
|
+
let taskId;
|
|
4452
|
+
let lastError;
|
|
4453
|
+
let lastRequestId = "";
|
|
4454
|
+
for (let attempt = 0; attempt < maxStepRetries; attempt++) {
|
|
4366
4455
|
try {
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4456
|
+
const result = await this.session.callMcpTool(
|
|
4457
|
+
this.getToolName("execute"),
|
|
4458
|
+
args
|
|
4459
|
+
);
|
|
4460
|
+
lastRequestId = result.requestId;
|
|
4461
|
+
if (result.success) {
|
|
4462
|
+
let content;
|
|
4463
|
+
try {
|
|
4464
|
+
content = JSON.parse(result.data);
|
|
4465
|
+
} catch (err) {
|
|
4466
|
+
return {
|
|
4467
|
+
requestId: result.requestId,
|
|
4468
|
+
success: false,
|
|
4469
|
+
errorMessage: `Failed to parse response: ${err}`,
|
|
4470
|
+
taskStatus: "failed",
|
|
4471
|
+
taskId: "",
|
|
4472
|
+
taskResult: "Invalid execution response."
|
|
4473
|
+
};
|
|
4474
|
+
}
|
|
4475
|
+
taskId = content.taskId || content.task_id;
|
|
4476
|
+
if (!taskId) {
|
|
4477
|
+
return {
|
|
4478
|
+
requestId: result.requestId,
|
|
4479
|
+
success: false,
|
|
4480
|
+
errorMessage: "Task ID not found in response",
|
|
4481
|
+
taskStatus: "failed",
|
|
4482
|
+
taskId: "",
|
|
4483
|
+
taskResult: "Invalid task ID."
|
|
4484
|
+
};
|
|
4485
|
+
}
|
|
4486
|
+
break;
|
|
4487
|
+
} else {
|
|
4488
|
+
lastError = result.errorMessage || "Failed to execute task";
|
|
4489
|
+
if (attempt < maxStepRetries - 1) {
|
|
4490
|
+
logDebug(
|
|
4491
|
+
`Attempt ${attempt + 1}/${maxStepRetries} failed, retrying...`
|
|
4492
|
+
);
|
|
4493
|
+
await new Promise((resolve2) => setTimeout(resolve2, 1e3));
|
|
4494
|
+
continue;
|
|
4495
|
+
} else {
|
|
4496
|
+
return {
|
|
4497
|
+
requestId: result.requestId,
|
|
4498
|
+
success: false,
|
|
4499
|
+
errorMessage: lastError,
|
|
4500
|
+
taskStatus: "failed",
|
|
4501
|
+
taskId: "",
|
|
4502
|
+
taskResult: "Task Failed"
|
|
4503
|
+
};
|
|
4504
|
+
}
|
|
4505
|
+
}
|
|
4376
4506
|
} catch (error) {
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
}
|
|
4507
|
+
lastError = `Failed to execute: ${error}`;
|
|
4508
|
+
if (attempt < maxStepRetries - 1) {
|
|
4509
|
+
logDebug(
|
|
4510
|
+
`Attempt ${attempt + 1}/${maxStepRetries} raised exception, retrying...`
|
|
4511
|
+
);
|
|
4512
|
+
await new Promise((resolve2) => setTimeout(resolve2, 1e3));
|
|
4513
|
+
continue;
|
|
4514
|
+
} else {
|
|
4515
|
+
return {
|
|
4516
|
+
requestId: lastRequestId,
|
|
4517
|
+
success: false,
|
|
4518
|
+
errorMessage: lastError,
|
|
4519
|
+
taskStatus: "failed",
|
|
4520
|
+
taskId: "",
|
|
4521
|
+
taskResult: "Task Failed"
|
|
4522
|
+
};
|
|
4523
|
+
}
|
|
4385
4524
|
}
|
|
4386
|
-
}
|
|
4525
|
+
}
|
|
4526
|
+
if (!taskId) {
|
|
4387
4527
|
return {
|
|
4388
|
-
requestId:
|
|
4528
|
+
requestId: lastRequestId,
|
|
4389
4529
|
success: false,
|
|
4390
|
-
errorMessage: `Failed to get
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4530
|
+
errorMessage: `Failed to get task_id after ${maxStepRetries} attempts: ${lastError || "Unknown error"}`,
|
|
4531
|
+
taskStatus: "failed",
|
|
4532
|
+
taskId: "",
|
|
4533
|
+
taskResult: "Task Failed"
|
|
4394
4534
|
};
|
|
4395
4535
|
}
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
* @returns ExecutionResult containing success status, task output, and
|
|
4402
|
-
* error message if any.
|
|
4403
|
-
*
|
|
4404
|
-
* @example
|
|
4405
|
-
* ```typescript
|
|
4406
|
-
* const agentBay = new AgentBay({ apiKey: 'your_api_key' });
|
|
4407
|
-
* const result = await agentBay.create({ imageId: 'linux_latest' });
|
|
4408
|
-
* if (result.success) {
|
|
4409
|
-
* const taskResult = await result.session.agent.browser.executeTask(
|
|
4410
|
-
* 'Navigate to baidu and query the weather of Shanghai',
|
|
4411
|
-
* 10
|
|
4412
|
-
* );
|
|
4413
|
-
* const terminateResult = await result.session.agent.browser.terminateTask(
|
|
4414
|
-
* taskResult.taskId
|
|
4415
|
-
* );
|
|
4416
|
-
* console.log(`Terminated: ${terminateResult.taskStatus}`);
|
|
4417
|
-
* await result.session.delete();
|
|
4418
|
-
* }
|
|
4419
|
-
* ```
|
|
4420
|
-
*/
|
|
4421
|
-
async terminateTask(taskId) {
|
|
4422
|
-
logDebug("Terminating task");
|
|
4423
|
-
try {
|
|
4424
|
-
const args = { task_id: taskId };
|
|
4425
|
-
const result = await this.session.callMcpTool("browser_use_terminate_task", args);
|
|
4426
|
-
let content;
|
|
4427
|
-
try {
|
|
4428
|
-
content = JSON.parse(result.data);
|
|
4429
|
-
} catch (err) {
|
|
4536
|
+
let triedTime = 0;
|
|
4537
|
+
const processedTimestamps = /* @__PURE__ */ new Set();
|
|
4538
|
+
while (triedTime < maxTryTimes) {
|
|
4539
|
+
const query = await this.getTaskStatus(taskId);
|
|
4540
|
+
if (!query.success) {
|
|
4430
4541
|
return {
|
|
4431
|
-
requestId:
|
|
4542
|
+
requestId: query.requestId,
|
|
4432
4543
|
success: false,
|
|
4433
|
-
errorMessage:
|
|
4434
|
-
taskId,
|
|
4544
|
+
errorMessage: query.errorMessage,
|
|
4435
4545
|
taskStatus: "failed",
|
|
4546
|
+
taskId,
|
|
4436
4547
|
taskResult: ""
|
|
4437
4548
|
};
|
|
4438
4549
|
}
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4550
|
+
if (query.stream) {
|
|
4551
|
+
for (const streamItem of query.stream) {
|
|
4552
|
+
const timestamp = streamItem.timestamp_ms;
|
|
4553
|
+
if (timestamp !== void 0 && !processedTimestamps.has(timestamp)) {
|
|
4554
|
+
processedTimestamps.add(timestamp);
|
|
4555
|
+
const content = streamItem.content || "";
|
|
4556
|
+
const reasoning = streamItem.reasoning || "";
|
|
4557
|
+
if (content) {
|
|
4558
|
+
process.stdout.write(content);
|
|
4559
|
+
}
|
|
4560
|
+
if (reasoning) {
|
|
4561
|
+
}
|
|
4562
|
+
}
|
|
4563
|
+
}
|
|
4450
4564
|
}
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4565
|
+
if (query.error) {
|
|
4566
|
+
}
|
|
4567
|
+
switch (query.taskStatus) {
|
|
4568
|
+
case "completed":
|
|
4569
|
+
return {
|
|
4570
|
+
requestId: query.requestId,
|
|
4571
|
+
success: true,
|
|
4572
|
+
errorMessage: "",
|
|
4573
|
+
taskId,
|
|
4574
|
+
taskStatus: "completed",
|
|
4575
|
+
taskResult: query.taskProduct
|
|
4576
|
+
};
|
|
4577
|
+
case "failed":
|
|
4578
|
+
return {
|
|
4579
|
+
requestId: query.requestId,
|
|
4580
|
+
success: false,
|
|
4581
|
+
errorMessage: query.errorMessage || "Failed to execute task.",
|
|
4582
|
+
taskId,
|
|
4583
|
+
taskStatus: "failed",
|
|
4584
|
+
taskResult: ""
|
|
4585
|
+
};
|
|
4586
|
+
case "cancelled":
|
|
4587
|
+
return {
|
|
4588
|
+
requestId: query.requestId,
|
|
4589
|
+
success: false,
|
|
4590
|
+
errorMessage: query.errorMessage || "Task was cancelled.",
|
|
4591
|
+
taskId,
|
|
4592
|
+
taskStatus: "cancelled",
|
|
4593
|
+
taskResult: ""
|
|
4594
|
+
};
|
|
4595
|
+
case "unsupported":
|
|
4596
|
+
return {
|
|
4597
|
+
requestId: query.requestId,
|
|
4598
|
+
success: false,
|
|
4599
|
+
errorMessage: query.errorMessage || "Unsupported task.",
|
|
4600
|
+
taskId,
|
|
4601
|
+
taskStatus: "unsupported",
|
|
4602
|
+
taskResult: ""
|
|
4603
|
+
};
|
|
4604
|
+
}
|
|
4605
|
+
logDebug(`\u23F3 Task ${taskId} running \u{1F680}: ${query.taskAction}.`);
|
|
4606
|
+
await new Promise((resolve2) => setTimeout(resolve2, 3e3));
|
|
4607
|
+
triedTime++;
|
|
4468
4608
|
}
|
|
4609
|
+
logDebug("\u26A0\uFE0F task execution timeout!");
|
|
4610
|
+
return {
|
|
4611
|
+
requestId: lastRequestId,
|
|
4612
|
+
success: false,
|
|
4613
|
+
errorMessage: "Task timeout.",
|
|
4614
|
+
taskStatus: "failed",
|
|
4615
|
+
taskId,
|
|
4616
|
+
taskResult: "Task timeout."
|
|
4617
|
+
};
|
|
4469
4618
|
}
|
|
4470
4619
|
};
|
|
4471
|
-
_chunk4IPTHWLMcjs.__name.call(void 0,
|
|
4472
|
-
var
|
|
4620
|
+
_chunk4IPTHWLMcjs.__name.call(void 0, _MobileUseAgent, "MobileUseAgent");
|
|
4621
|
+
var MobileUseAgent = _MobileUseAgent;
|
|
4473
4622
|
var _Agent = class _Agent {
|
|
4474
4623
|
/**
|
|
4475
4624
|
* Initialize an Agent object.
|
|
@@ -4479,6 +4628,7 @@ var _Agent = class _Agent {
|
|
|
4479
4628
|
constructor(session) {
|
|
4480
4629
|
this.computer = new ComputerUseAgent(session);
|
|
4481
4630
|
this.browser = new BrowserUseAgent(session);
|
|
4631
|
+
this.mobile = new MobileUseAgent(session);
|
|
4482
4632
|
}
|
|
4483
4633
|
};
|
|
4484
4634
|
_chunk4IPTHWLMcjs.__name.call(void 0, _Agent, "Agent");
|