@aiscene/aiserver 1.9.7 → 1.9.8
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/core/device-proxy.d.ts +17 -0
- package/dist/core/device-proxy.d.ts.map +1 -1
- package/dist/core/device-proxy.js +95 -5
- package/dist/core/device-proxy.js.map +1 -1
- package/dist/debug/types.d.ts +56 -4
- package/dist/debug/types.d.ts.map +1 -1
- package/dist/debug/websocket-server.d.ts +4 -1
- package/dist/debug/websocket-server.d.ts.map +1 -1
- package/dist/debug/websocket-server.js +111 -5
- package/dist/debug/websocket-server.js.map +1 -1
- package/dist/executor/action-executor.d.ts +5 -5
- package/dist/executor/action-executor.d.ts.map +1 -1
- package/dist/executor/action-executor.js +32 -25
- package/dist/executor/action-executor.js.map +1 -1
- package/dist/executor/android-executor.d.ts +3 -14
- package/dist/executor/android-executor.d.ts.map +1 -1
- package/dist/executor/android-executor.js +21 -96
- package/dist/executor/android-executor.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -10
- package/dist/index.js.map +1 -1
- package/dist/scrcpy/server.d.ts +5 -0
- package/dist/scrcpy/server.d.ts.map +1 -1
- package/dist/scrcpy/server.js +80 -14
- package/dist/scrcpy/server.js.map +1 -1
- package/dist/task/guada-online-batch-poller.d.ts +21 -0
- package/dist/task/guada-online-batch-poller.d.ts.map +1 -0
- package/dist/task/guada-online-batch-poller.js +132 -0
- package/dist/task/guada-online-batch-poller.js.map +1 -0
- package/dist/task/online-loop-poller.d.ts +20 -0
- package/dist/task/online-loop-poller.d.ts.map +1 -0
- package/dist/task/online-loop-poller.js +152 -0
- package/dist/task/online-loop-poller.js.map +1 -0
- package/dist/web/server.d.ts +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,5 +2,22 @@ export interface ProxyCleanupResult {
|
|
|
2
2
|
attempted: number;
|
|
3
3
|
failed: string[];
|
|
4
4
|
}
|
|
5
|
+
export interface CompanyProxySetupResult extends ProxyCleanupResult {
|
|
6
|
+
verified: Record<string, string>;
|
|
7
|
+
}
|
|
5
8
|
export declare function clearAndroidDeviceProxy(deviceId: string, proxyPort?: number): Promise<ProxyCleanupResult>;
|
|
9
|
+
/**
|
|
10
|
+
* 通过 ADB 将 Android 设备代理设置为公司代理平台。
|
|
11
|
+
* 等价于手工 Wi-Fi 代理里填写:host=proxy-pc.jd.com, port=80。
|
|
12
|
+
*
|
|
13
|
+
* 为兼容不同 Android/ROM:
|
|
14
|
+
* 1. 先清理 http_proxy/https_proxy/global_http_proxy_* 旧字段,避免脏配置残留;
|
|
15
|
+
* 2. 同时写 http_proxy、https_proxy、global_http_proxy_host/port;
|
|
16
|
+
* 3. 尝试通过 cmd connectivity setglobalproxy 通知系统网络服务应用代理;
|
|
17
|
+
* 4. 读取关键字段用于日志验证。
|
|
18
|
+
*/
|
|
19
|
+
export declare function setupCompanyAndroidDeviceProxy(deviceId: string): Promise<CompanyProxySetupResult>;
|
|
20
|
+
export declare function verifyAndroidDeviceProxy(deviceId: string): Promise<Record<string, string>>;
|
|
21
|
+
export declare function openCompanyProxyRegistration(deviceId: string, proxyAccount: string): Promise<void>;
|
|
22
|
+
export declare function getCompanyProxyValue(): string;
|
|
6
23
|
//# sourceMappingURL=device-proxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-proxy.d.ts","sourceRoot":"","sources":["../../src/core/device-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device-proxy.d.ts","sourceRoot":"","sources":["../../src/core/device-proxy.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAkBD,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC,CAgC7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,CAAC,CAkClC;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAoChG;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { adbShellArgs, runAdb } from './adb.js';
|
|
2
|
+
const COMPANY_PROXY_HOST = 'proxy-pc.jd.com';
|
|
3
|
+
const COMPANY_PROXY_PORT = 80;
|
|
4
|
+
const COMPANY_PROXY_VALUE = `${COMPANY_PROXY_HOST}:${COMPANY_PROXY_PORT}`;
|
|
5
|
+
const COMPANY_PROXY_REGISTER_URL = 'https://storage.jd.com/swm-plus/user-select/index.html';
|
|
6
|
+
async function runProxyCommands(deviceId, commands) {
|
|
7
|
+
const results = await Promise.allSettled(commands.map(({ args, timeout }) => runAdb(deviceId, args, timeout || 10000)));
|
|
8
|
+
const failed = results.flatMap((result, index) => result.status === 'rejected'
|
|
9
|
+
? [`${commands[index].label}: ${String(result.reason)}`]
|
|
10
|
+
: []);
|
|
11
|
+
return { attempted: commands.length, failed };
|
|
12
|
+
}
|
|
2
13
|
export async function clearAndroidDeviceProxy(deviceId, proxyPort) {
|
|
3
14
|
const commands = [
|
|
4
15
|
{
|
|
@@ -28,10 +39,89 @@ export async function clearAndroidDeviceProxy(deviceId, proxyPort) {
|
|
|
28
39
|
args: ['reverse', '--remove', `tcp:${proxyPort}`],
|
|
29
40
|
});
|
|
30
41
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
return runProxyCommands(deviceId, commands);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 通过 ADB 将 Android 设备代理设置为公司代理平台。
|
|
46
|
+
* 等价于手工 Wi-Fi 代理里填写:host=proxy-pc.jd.com, port=80。
|
|
47
|
+
*
|
|
48
|
+
* 为兼容不同 Android/ROM:
|
|
49
|
+
* 1. 先清理 http_proxy/https_proxy/global_http_proxy_* 旧字段,避免脏配置残留;
|
|
50
|
+
* 2. 同时写 http_proxy、https_proxy、global_http_proxy_host/port;
|
|
51
|
+
* 3. 尝试通过 cmd connectivity setglobalproxy 通知系统网络服务应用代理;
|
|
52
|
+
* 4. 读取关键字段用于日志验证。
|
|
53
|
+
*/
|
|
54
|
+
export async function setupCompanyAndroidDeviceProxy(deviceId) {
|
|
55
|
+
const cleanup = await clearAndroidDeviceProxy(deviceId);
|
|
56
|
+
const commands = [
|
|
57
|
+
{
|
|
58
|
+
label: 'http_proxy',
|
|
59
|
+
args: adbShellArgs('settings', 'put', 'global', 'http_proxy', COMPANY_PROXY_VALUE),
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: 'https_proxy',
|
|
63
|
+
args: adbShellArgs('settings', 'put', 'global', 'https_proxy', COMPANY_PROXY_VALUE),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: 'global_http_proxy_host',
|
|
67
|
+
args: adbShellArgs('settings', 'put', 'global', 'global_http_proxy_host', COMPANY_PROXY_HOST),
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
label: 'global_http_proxy_port',
|
|
71
|
+
args: adbShellArgs('settings', 'put', 'global', 'global_http_proxy_port', String(COMPANY_PROXY_PORT)),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
label: 'cmd connectivity setglobalproxy',
|
|
75
|
+
args: adbShellArgs('cmd', 'connectivity', 'setglobalproxy', COMPANY_PROXY_HOST, String(COMPANY_PROXY_PORT)),
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
const setup = await runProxyCommands(deviceId, commands);
|
|
79
|
+
const verified = await verifyAndroidDeviceProxy(deviceId);
|
|
80
|
+
return {
|
|
81
|
+
attempted: cleanup.attempted + setup.attempted,
|
|
82
|
+
failed: [...cleanup.failed, ...setup.failed],
|
|
83
|
+
verified,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export async function verifyAndroidDeviceProxy(deviceId) {
|
|
87
|
+
const checks = [
|
|
88
|
+
{
|
|
89
|
+
key: 'http_proxy',
|
|
90
|
+
args: adbShellArgs('settings', 'get', 'global', 'http_proxy'),
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
key: 'https_proxy',
|
|
94
|
+
args: adbShellArgs('settings', 'get', 'global', 'https_proxy'),
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: 'global_http_proxy_host',
|
|
98
|
+
args: adbShellArgs('settings', 'get', 'global', 'global_http_proxy_host'),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
key: 'global_http_proxy_port',
|
|
102
|
+
args: adbShellArgs('settings', 'get', 'global', 'global_http_proxy_port'),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
key: 'connectivity_global_proxy',
|
|
106
|
+
args: adbShellArgs('cmd', 'connectivity', 'getglobalproxy'),
|
|
107
|
+
},
|
|
108
|
+
];
|
|
109
|
+
const entries = await Promise.all(checks.map(async ({ key, args }) => {
|
|
110
|
+
try {
|
|
111
|
+
const { stdout, stderr } = await runAdb(deviceId, args, 10000);
|
|
112
|
+
return [key, (stdout || stderr || '').trim()];
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
return [key, `ERROR: ${error.message}`];
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
return Object.fromEntries(entries);
|
|
119
|
+
}
|
|
120
|
+
export async function openCompanyProxyRegistration(deviceId, proxyAccount) {
|
|
121
|
+
const registerUrl = `${COMPANY_PROXY_REGISTER_URL}?proxyAccount=${encodeURIComponent(proxyAccount)}&t=${Date.now()}`;
|
|
122
|
+
await runAdb(deviceId, adbShellArgs('am', 'start', '-a', 'android.intent.action.VIEW', '-d', registerUrl), 15000);
|
|
123
|
+
}
|
|
124
|
+
export function getCompanyProxyValue() {
|
|
125
|
+
return COMPANY_PROXY_VALUE;
|
|
36
126
|
}
|
|
37
127
|
//# sourceMappingURL=device-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-proxy.js","sourceRoot":"","sources":["../../src/core/device-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"device-proxy.js","sourceRoot":"","sources":["../../src/core/device-proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/debug/types.d.ts
CHANGED
|
@@ -63,7 +63,7 @@ export interface DebugRequest extends AiMemoryRequestFields {
|
|
|
63
63
|
skipAppRestart?: boolean;
|
|
64
64
|
loginConfig?: LoginConfig;
|
|
65
65
|
loginContext?: AndroidLoginContext;
|
|
66
|
-
/**
|
|
66
|
+
/** Capture proxy port, default 8899. Device proxy is company-proxy only. */
|
|
67
67
|
proxyPort?: number;
|
|
68
68
|
/** Proxy account (userPin) for company proxy platform (proxy-pc.jd.com) */
|
|
69
69
|
proxyAccount?: string;
|
|
@@ -85,12 +85,23 @@ export interface ActionExecuteRequest extends AiMemoryRequestFields {
|
|
|
85
85
|
platform?: 'android' | 'ios';
|
|
86
86
|
packageName?: string;
|
|
87
87
|
modelName?: string;
|
|
88
|
+
url?: string;
|
|
88
89
|
testUrl?: string;
|
|
90
|
+
test_url?: string;
|
|
91
|
+
targetUrl?: string;
|
|
92
|
+
target_url?: string;
|
|
93
|
+
pageUrl?: string;
|
|
94
|
+
openUrl?: string;
|
|
95
|
+
jumpUrl?: string;
|
|
96
|
+
deeplink?: string;
|
|
97
|
+
deepLink?: string;
|
|
98
|
+
schemeUrl?: string;
|
|
99
|
+
schemaUrl?: string;
|
|
89
100
|
modelConfig?: Record<string, unknown>;
|
|
90
101
|
skipAppRestart?: boolean;
|
|
91
102
|
/** Proxy account (userPin) for company proxy platform */
|
|
92
103
|
proxyAccount?: string;
|
|
93
|
-
/**
|
|
104
|
+
/** Capture proxy port, default 8899. Device proxy is company-proxy only. */
|
|
94
105
|
proxyPort?: number;
|
|
95
106
|
loginConfig?: LoginConfig;
|
|
96
107
|
loginContext?: AndroidLoginContext;
|
|
@@ -104,11 +115,23 @@ export interface AiActExecuteRequest extends AiMemoryRequestFields {
|
|
|
104
115
|
deepLocate?: boolean;
|
|
105
116
|
deepThink?: boolean;
|
|
106
117
|
modelName?: string;
|
|
118
|
+
url?: string;
|
|
119
|
+
testUrl?: string;
|
|
120
|
+
test_url?: string;
|
|
121
|
+
targetUrl?: string;
|
|
122
|
+
target_url?: string;
|
|
123
|
+
pageUrl?: string;
|
|
124
|
+
openUrl?: string;
|
|
125
|
+
jumpUrl?: string;
|
|
126
|
+
deeplink?: string;
|
|
127
|
+
deepLink?: string;
|
|
128
|
+
schemeUrl?: string;
|
|
129
|
+
schemaUrl?: string;
|
|
107
130
|
modelConfig?: Record<string, unknown>;
|
|
108
131
|
skipAppRestart?: boolean;
|
|
109
132
|
/** Proxy account (userPin) for company proxy platform */
|
|
110
133
|
proxyAccount?: string;
|
|
111
|
-
/**
|
|
134
|
+
/** Capture proxy port, default 8899. Device proxy is company-proxy only. */
|
|
112
135
|
proxyPort?: number;
|
|
113
136
|
loginConfig?: LoginConfig;
|
|
114
137
|
loginContext?: AndroidLoginContext;
|
|
@@ -119,6 +142,15 @@ export interface WebActionExecuteRequest extends AiMemoryRequestFields {
|
|
|
119
142
|
url?: string;
|
|
120
143
|
testUrl?: string;
|
|
121
144
|
test_url?: string;
|
|
145
|
+
targetUrl?: string;
|
|
146
|
+
target_url?: string;
|
|
147
|
+
pageUrl?: string;
|
|
148
|
+
openUrl?: string;
|
|
149
|
+
jumpUrl?: string;
|
|
150
|
+
deeplink?: string;
|
|
151
|
+
deepLink?: string;
|
|
152
|
+
schemeUrl?: string;
|
|
153
|
+
schemaUrl?: string;
|
|
122
154
|
locatePrompt?: string;
|
|
123
155
|
actionParams?: Record<string, unknown>;
|
|
124
156
|
naturalLanguage?: string;
|
|
@@ -145,6 +177,15 @@ export interface BatchCase extends AiMemoryRequestFields {
|
|
|
145
177
|
/** 测试目标 URL(web 类型,兼容平台用例字段) */
|
|
146
178
|
testUrl?: string;
|
|
147
179
|
test_url?: string;
|
|
180
|
+
targetUrl?: string;
|
|
181
|
+
target_url?: string;
|
|
182
|
+
pageUrl?: string;
|
|
183
|
+
openUrl?: string;
|
|
184
|
+
jumpUrl?: string;
|
|
185
|
+
deeplink?: string;
|
|
186
|
+
deepLink?: string;
|
|
187
|
+
schemeUrl?: string;
|
|
188
|
+
schemaUrl?: string;
|
|
148
189
|
/** 自然语言指令(aiAct 模式) */
|
|
149
190
|
naturalLanguage?: string;
|
|
150
191
|
/** 动作类型,默认 aiAction */
|
|
@@ -170,6 +211,17 @@ export interface BatchActionRequest extends AiMemoryRequestFields {
|
|
|
170
211
|
cases: BatchCase[];
|
|
171
212
|
/** 批次级别默认配置(每条用例可覆盖) */
|
|
172
213
|
url?: string;
|
|
214
|
+
testUrl?: string;
|
|
215
|
+
test_url?: string;
|
|
216
|
+
targetUrl?: string;
|
|
217
|
+
target_url?: string;
|
|
218
|
+
pageUrl?: string;
|
|
219
|
+
openUrl?: string;
|
|
220
|
+
jumpUrl?: string;
|
|
221
|
+
deeplink?: string;
|
|
222
|
+
deepLink?: string;
|
|
223
|
+
schemeUrl?: string;
|
|
224
|
+
schemaUrl?: string;
|
|
173
225
|
mobileMode?: boolean;
|
|
174
226
|
deviceName?: string;
|
|
175
227
|
viewport?: {
|
|
@@ -190,7 +242,7 @@ export interface BatchActionRequest extends AiMemoryRequestFields {
|
|
|
190
242
|
bundleId?: string;
|
|
191
243
|
/** 是否跳过 app 重启 —— 仅 app */
|
|
192
244
|
skipAppRestart?: boolean;
|
|
193
|
-
/**
|
|
245
|
+
/** 抓包代理端口;设备代理只走公司代理平台 */
|
|
194
246
|
proxyPort?: number;
|
|
195
247
|
/** 代理账号 */
|
|
196
248
|
proxyAccount?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC7B,MAAM,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAGD,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,IAAI,EAAE,aAAa,CAAC;IACpB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,IAAI,EAAE,gBAAgB,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAGD,MAAM,WAAW,SAAU,SAAQ,qBAAqB;IACtD,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,sBAAsB;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,IAAI,EAAE,cAAc,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IACpC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAGD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EACA,qBAAqB,GACrB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,uBAAuB,GACvB,kBAAkB,GAClB,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,wBAAwB,GACxB,0BAA0B,GAC1B,mBAAmB,CAAC"}
|
|
@@ -8,7 +8,7 @@ export declare class DebugWebSocketServer {
|
|
|
8
8
|
private isStarted;
|
|
9
9
|
private activeBatchSessionIds;
|
|
10
10
|
private createHeadlessBatchClient;
|
|
11
|
-
runBatchActionInBackground(request: BatchActionRequest): void
|
|
11
|
+
runBatchActionInBackground(request: BatchActionRequest): Promise<void>;
|
|
12
12
|
private taskLogSubscribers;
|
|
13
13
|
private clientTaskSubscriptions;
|
|
14
14
|
/** 当前已启动浏览器的 web session 集合(用于并发计数与 TTL 扫描) */
|
|
@@ -77,7 +77,10 @@ export declare class DebugWebSocketServer {
|
|
|
77
77
|
private handleExecuteAction;
|
|
78
78
|
private handleExecuteAiAct;
|
|
79
79
|
private normalizeWebUrl;
|
|
80
|
+
private nonEmptyText;
|
|
81
|
+
private pickWebTargetUrlWithSource;
|
|
80
82
|
private pickWebTargetUrl;
|
|
83
|
+
private summarizeUrlInputs;
|
|
81
84
|
private pickBatchAiMemorySource;
|
|
82
85
|
private getCurrentWebUrl;
|
|
83
86
|
private waitForWebPageStable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/debug/websocket-server.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EAQV,kBAAkB,EAUnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA2B1D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,qBAAqB,CAA0B;IAEvD,OAAO,CAAC,yBAAyB;IAajC,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/debug/websocket-server.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EAQV,kBAAkB,EAUnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA2B1D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,qBAAqB,CAA0B;IAEvD,OAAO,CAAC,yBAAyB;IAajC,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE,OAAO,CAAC,kBAAkB,CAA0C;IAEpE,OAAO,CAAC,uBAAuB,CAA0C;IAGzE,+CAA+C;IAC/C,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,6DAA6D;IAC7D,OAAO,CAAC,wBAAwB,CAAgE;IAChG,6CAA6C;IAC7C,OAAO,CAAC,uBAAuB,CAA6E;IAC5G,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAA+B;gBAE5C,IAAI,GAAE,MAAa;IAI/B,8CAA8C;IAC9C,OAAO,CAAC,eAAe;IAMvB,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB;IAI1B,8BAA8B;IAC9B,OAAO,CAAC,oBAAoB;IAI5B,qCAAqC;IACrC,OAAO,CAAC,iBAAiB;IAenB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ElD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,uBAAuB;YAuDjB,aAAa;YAuDb,kBAAkB;IAwGhC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,yBAAyB;IAWjC,4CAA4C;IAC5C,OAAO,CAAC,YAAY;YAON,uBAAuB;YAQvB,6BAA6B;YAY7B,gBAAgB;IAkD9B;;;;;OAKG;YACW,mBAAmB;IAkQjC;;OAEG;YACW,gBAAgB;IAyC9B,6CAA6C;YAC/B,uBAAuB;IAkJrC,uCAAuC;YACzB,wBAAwB;YAwKxB,mBAAmB;YA0NnB,kBAAkB;IAsQhC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,0BAA0B;IAiElC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;YAQV,oBAAoB;YAKpB,WAAW;YAmDX,sBAAsB;IA2fpC,OAAO,CAAC,qBAAqB,CAAsC;YAErD,iBAAiB;IA8M/B,OAAO,CAAC,oBAAoB;YAiBd,uBAAuB;IAqCrC,uBAAuB;YACT,mBAAmB;IAoPjC,qCAAqC;YACvB,mBAAmB;YAuKnB,eAAe;YAiBf,qBAAqB;YA4BrB,oBAAoB;YAuBpB,eAAe;YAqDf,qBAAqB;YAqBrB,eAAe;YAgIf,aAAa;IAU3B;;OAEG;YACW,gBAAgB;IA2B9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;YAgFV,iBAAiB;IAiE/B,OAAO,CAAC,WAAW;IA2DnB,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IAEH;;;OAGG;YACW,wBAAwB;YAqCxB,cAAc;IA4B5B,WAAW,IAAI,YAAY,EAAE;IAIvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
|
|
@@ -63,8 +63,9 @@ export class DebugWebSocketServer {
|
|
|
63
63
|
}
|
|
64
64
|
const batchId = request?.batchId || 'unknown';
|
|
65
65
|
const ws = this.createHeadlessBatchClient(batchId);
|
|
66
|
-
|
|
66
|
+
return this.handleBatchAction(ws, request).catch((error) => {
|
|
67
67
|
logger.error(`[BatchAction] Background batch failed: batchId=${batchId}, error=${error.message}`);
|
|
68
|
+
throw error;
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
// 任务日志订阅: taskId -> Set of WebSocket clients
|
|
@@ -1172,7 +1173,8 @@ export class DebugWebSocketServer {
|
|
|
1172
1173
|
actionParams: resolvedActionParams,
|
|
1173
1174
|
udid: request.deviceId,
|
|
1174
1175
|
packageName: request.packageName,
|
|
1175
|
-
testUrl: request
|
|
1176
|
+
testUrl: this.pickWebTargetUrl(request),
|
|
1177
|
+
url: this.pickWebTargetUrl(request),
|
|
1176
1178
|
modelConfig: fullModelConfig,
|
|
1177
1179
|
aiMemory: request.aiMemory,
|
|
1178
1180
|
memory: request.memory,
|
|
@@ -1336,7 +1338,7 @@ export class DebugWebSocketServer {
|
|
|
1336
1338
|
const fullModelConfig = this.applyModelConfig(request.modelConfig);
|
|
1337
1339
|
// 始终启动请求抓包
|
|
1338
1340
|
try {
|
|
1339
|
-
await whistleManager.startCapture(sessionId);
|
|
1341
|
+
await whistleManager.startCapture(sessionId, undefined, 3000, request.proxyAccount);
|
|
1340
1342
|
logger.info('[AiAct] Whistle request capture started: sessionId=' + sessionId);
|
|
1341
1343
|
}
|
|
1342
1344
|
catch (captureErr) {
|
|
@@ -1442,11 +1444,15 @@ export class DebugWebSocketServer {
|
|
|
1442
1444
|
naturalLanguage: resolvedNaturalLanguage,
|
|
1443
1445
|
udid: request.deviceId,
|
|
1444
1446
|
packageName: request.packageName,
|
|
1447
|
+
testUrl: this.pickWebTargetUrl(request),
|
|
1448
|
+
url: this.pickWebTargetUrl(request),
|
|
1445
1449
|
modelConfig: fullModelConfig,
|
|
1446
1450
|
aiMemory: request.aiMemory,
|
|
1447
1451
|
memory: request.memory,
|
|
1448
1452
|
memoryScope: request.memoryScope,
|
|
1449
1453
|
skipAppRestart: request.skipAppRestart,
|
|
1454
|
+
proxyPort: request.proxyPort,
|
|
1455
|
+
proxyAccount: request.proxyAccount,
|
|
1450
1456
|
actionParams: {
|
|
1451
1457
|
deepLocate: request.deepLocate,
|
|
1452
1458
|
deepThink: request.deepThink,
|
|
@@ -1593,9 +1599,92 @@ export class DebugWebSocketServer {
|
|
|
1593
1599
|
return String(value).split('#')[0].replace(/\/$/, '');
|
|
1594
1600
|
}
|
|
1595
1601
|
}
|
|
1602
|
+
nonEmptyText(value) {
|
|
1603
|
+
if (typeof value !== 'string')
|
|
1604
|
+
return '';
|
|
1605
|
+
const trimmed = value.trim();
|
|
1606
|
+
if (!trimmed)
|
|
1607
|
+
return '';
|
|
1608
|
+
if (trimmed.length >= 2 &&
|
|
1609
|
+
((trimmed[0] === '"' && trimmed[trimmed.length - 1] === '"') ||
|
|
1610
|
+
(trimmed[0] === "'" && trimmed[trimmed.length - 1] === "'"))) {
|
|
1611
|
+
return trimmed.slice(1, -1).trim();
|
|
1612
|
+
}
|
|
1613
|
+
return trimmed;
|
|
1614
|
+
}
|
|
1615
|
+
pickWebTargetUrlWithSource(source, label = 'source', seen = new WeakSet()) {
|
|
1616
|
+
if (!source || typeof source !== 'object')
|
|
1617
|
+
return { value: '', path: '' };
|
|
1618
|
+
if (seen.has(source))
|
|
1619
|
+
return { value: '', path: '' };
|
|
1620
|
+
seen.add(source);
|
|
1621
|
+
const record = source;
|
|
1622
|
+
const urlKeys = [
|
|
1623
|
+
'testUrl',
|
|
1624
|
+
'test_url',
|
|
1625
|
+
'url',
|
|
1626
|
+
'targetUrl',
|
|
1627
|
+
'target_url',
|
|
1628
|
+
'pageUrl',
|
|
1629
|
+
'page_url',
|
|
1630
|
+
'openUrl',
|
|
1631
|
+
'open_url',
|
|
1632
|
+
'jumpUrl',
|
|
1633
|
+
'jump_url',
|
|
1634
|
+
'deeplink',
|
|
1635
|
+
'deepLink',
|
|
1636
|
+
'deep_link',
|
|
1637
|
+
'schemeUrl',
|
|
1638
|
+
'scheme_url',
|
|
1639
|
+
'schemaUrl',
|
|
1640
|
+
'schema_url',
|
|
1641
|
+
'h5Url',
|
|
1642
|
+
'h5_url',
|
|
1643
|
+
'webUrl',
|
|
1644
|
+
'web_url',
|
|
1645
|
+
'landingUrl',
|
|
1646
|
+
'landing_url',
|
|
1647
|
+
];
|
|
1648
|
+
for (const key of urlKeys) {
|
|
1649
|
+
const value = this.nonEmptyText(record[key]);
|
|
1650
|
+
if (value)
|
|
1651
|
+
return { value, path: `${label}.${key}` };
|
|
1652
|
+
}
|
|
1653
|
+
const nestedKeys = [
|
|
1654
|
+
'actionParams',
|
|
1655
|
+
'params',
|
|
1656
|
+
'config',
|
|
1657
|
+
'data',
|
|
1658
|
+
'payload',
|
|
1659
|
+
'extra',
|
|
1660
|
+
'case',
|
|
1661
|
+
'testCase',
|
|
1662
|
+
'request',
|
|
1663
|
+
'context',
|
|
1664
|
+
];
|
|
1665
|
+
for (const key of nestedKeys) {
|
|
1666
|
+
const nested = record[key];
|
|
1667
|
+
if (nested && typeof nested === 'object') {
|
|
1668
|
+
const picked = this.pickWebTargetUrlWithSource(nested, `${label}.${key}`, seen);
|
|
1669
|
+
if (picked.value)
|
|
1670
|
+
return picked;
|
|
1671
|
+
}
|
|
1672
|
+
}
|
|
1673
|
+
return { value: '', path: '' };
|
|
1674
|
+
}
|
|
1596
1675
|
pickWebTargetUrl(source) {
|
|
1597
|
-
|
|
1598
|
-
|
|
1676
|
+
return this.pickWebTargetUrlWithSource(source).value;
|
|
1677
|
+
}
|
|
1678
|
+
summarizeUrlInputs(source) {
|
|
1679
|
+
if (!source || typeof source !== 'object')
|
|
1680
|
+
return 'none';
|
|
1681
|
+
const record = source;
|
|
1682
|
+
const topLevelKeys = Object.keys(record).filter((key) => /url|link|scheme|schema|deep/i.test(key));
|
|
1683
|
+
const actionParams = record.actionParams;
|
|
1684
|
+
const actionParamKeys = actionParams && typeof actionParams === 'object'
|
|
1685
|
+
? Object.keys(actionParams).filter((key) => /url|link|scheme|schema|deep/i.test(key))
|
|
1686
|
+
: [];
|
|
1687
|
+
return `top=[${topLevelKeys.join(',') || '-'}], actionParams=[${actionParamKeys.join(',') || '-'}]`;
|
|
1599
1688
|
}
|
|
1600
1689
|
pickBatchAiMemorySource(request, tc) {
|
|
1601
1690
|
return {
|
|
@@ -2639,6 +2728,11 @@ export class DebugWebSocketServer {
|
|
|
2639
2728
|
const effectiveDeviceId = tc.deviceId || request.deviceId;
|
|
2640
2729
|
const effectivePackageName = tc.packageName || request.packageName;
|
|
2641
2730
|
const effectiveBundleId = tc.bundleId || request.bundleId;
|
|
2731
|
+
let effectiveTestUrlInfo = this.pickWebTargetUrlWithSource(tc, 'case');
|
|
2732
|
+
if (!effectiveTestUrlInfo.value) {
|
|
2733
|
+
effectiveTestUrlInfo = this.pickWebTargetUrlWithSource(request, 'request');
|
|
2734
|
+
}
|
|
2735
|
+
let effectiveTestUrl = effectiveTestUrlInfo.value;
|
|
2642
2736
|
const effectiveLoginContext = tc.loginContext || batchLoginContext;
|
|
2643
2737
|
const caseMemorySource = this.pickBatchAiMemorySource(request, tc);
|
|
2644
2738
|
const caseSessionId = `batch-${batchId}-case-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
@@ -2688,6 +2782,16 @@ export class DebugWebSocketServer {
|
|
|
2688
2782
|
}
|
|
2689
2783
|
const resolvedNaturalLanguage = await this.resolveScriptReferences(tc.naturalLanguage);
|
|
2690
2784
|
const resolvedActionParams = await this.resolveActionParamsReferences(tc.actionParams);
|
|
2785
|
+
if (!effectiveTestUrl && resolvedActionParams && resolvedActionParams !== tc.actionParams) {
|
|
2786
|
+
effectiveTestUrlInfo = this.pickWebTargetUrlWithSource({ actionParams: resolvedActionParams }, 'case');
|
|
2787
|
+
effectiveTestUrl = effectiveTestUrlInfo.value;
|
|
2788
|
+
}
|
|
2789
|
+
if (effectiveTestUrl) {
|
|
2790
|
+
logger.info(`${caseLabel}: resolved test URL from ${effectiveTestUrlInfo.path}`);
|
|
2791
|
+
}
|
|
2792
|
+
else {
|
|
2793
|
+
logger.warn(`${caseLabel}: no test URL resolved; checked case ${this.summarizeUrlInputs(tc)}; request ${this.summarizeUrlInputs(request)}`);
|
|
2794
|
+
}
|
|
2691
2795
|
// 构造 ExecuteConfig
|
|
2692
2796
|
const actionType = tc.actionType || 'aiAct';
|
|
2693
2797
|
const config = {
|
|
@@ -2700,6 +2804,8 @@ export class DebugWebSocketServer {
|
|
|
2700
2804
|
udid: effectiveDeviceId,
|
|
2701
2805
|
packageName: effectivePackageName,
|
|
2702
2806
|
bundleId: effectiveBundleId,
|
|
2807
|
+
testUrl: effectiveTestUrl || undefined,
|
|
2808
|
+
url: effectiveTestUrl || undefined,
|
|
2703
2809
|
modelConfig: fullModelConfig,
|
|
2704
2810
|
aiMemory: caseMemorySource.aiMemory,
|
|
2705
2811
|
memory: caseMemorySource.memory,
|