@aiscene/aiserver 1.9.5 → 1.9.7

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 (50) hide show
  1. package/dist/config/cli.d.ts +0 -3
  2. package/dist/config/cli.d.ts.map +1 -1
  3. package/dist/config/cli.js +0 -3
  4. package/dist/config/cli.js.map +1 -1
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/index.js +0 -3
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/config/schema.d.ts +0 -3
  9. package/dist/config/schema.d.ts.map +1 -1
  10. package/dist/core/types.d.ts +0 -3
  11. package/dist/core/types.d.ts.map +1 -1
  12. package/dist/debug/types.d.ts +0 -3
  13. package/dist/debug/types.d.ts.map +1 -1
  14. package/dist/debug/websocket-server.d.ts +5 -0
  15. package/dist/debug/websocket-server.d.ts.map +1 -1
  16. package/dist/debug/websocket-server.js +70 -13
  17. package/dist/debug/websocket-server.js.map +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/login/android-login-context.d.ts.map +1 -1
  22. package/dist/login/android-login-context.js +11 -3
  23. package/dist/login/android-login-context.js.map +1 -1
  24. package/dist/scrcpy/server.d.ts +8 -0
  25. package/dist/scrcpy/server.d.ts.map +1 -1
  26. package/dist/scrcpy/server.js +253 -134
  27. package/dist/scrcpy/server.js.map +1 -1
  28. package/dist/task/execution-profile.d.ts.map +1 -1
  29. package/dist/task/execution-profile.js +3 -0
  30. package/dist/task/execution-profile.js.map +1 -1
  31. package/dist/task/scheduler.d.ts +1 -0
  32. package/dist/task/scheduler.d.ts.map +1 -1
  33. package/dist/task/scheduler.js +47 -0
  34. package/dist/task/scheduler.js.map +1 -1
  35. package/dist/task/test-case-reference-resolver.d.ts +16 -0
  36. package/dist/task/test-case-reference-resolver.d.ts.map +1 -0
  37. package/dist/task/test-case-reference-resolver.js +283 -0
  38. package/dist/task/test-case-reference-resolver.js.map +1 -0
  39. package/dist/task/types.js +33 -1
  40. package/dist/task/types.js.map +1 -1
  41. package/dist/web/debug-api.js +2 -5
  42. package/dist/web/debug-page.d.ts.map +1 -1
  43. package/dist/web/debug-page.js +49 -73
  44. package/dist/web/debug-page.js.map +1 -1
  45. package/dist/web/debug.html +1 -21
  46. package/dist/web/server.d.ts +5 -0
  47. package/dist/web/server.d.ts.map +1 -1
  48. package/dist/web/server.js +35 -1
  49. package/dist/web/server.js.map +1 -1
  50. package/package.json +1 -1
@@ -0,0 +1,283 @@
1
+ import axios from 'axios';
2
+ import { getNodeAuthHeaders } from '../auth/node-auth.js';
3
+ import { createLogger } from '../core/logger.js';
4
+ const defaultLogger = createLogger('TestCaseReferenceResolver');
5
+ const TEST_CASE_REFERENCE_MARKER = /\/\/\s*@test-case-reference\s+(\{.*\})\s*$/;
6
+ const PLUGIN_CONFIG_LINE = /\/\/\s*@plugin-config(?:\s+([a-zA-Z0-9_-]+))?\s+(\{.*\})\s*$/;
7
+ const PLUGIN_END_LINE = /\/\/\s*@plugin-end(?:\s+([a-zA-Z0-9_-]+))?\s*$/;
8
+ const LEGACY_REFERENCE_LINE = /\/\/\s*引用用例:\s*(.+)$/;
9
+ const LEGACY_REFERENCE_ID_LINE = /\/\/\s*用例ID:\s*(.+)$/;
10
+ function toRecord(value) {
11
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
12
+ }
13
+ function asString(value) {
14
+ return typeof value === 'string' ? value : '';
15
+ }
16
+ function normalizeApiUrl(apiUrl) {
17
+ return String(apiUrl || '').replace(/\/+$/, '');
18
+ }
19
+ function parseJsonObjectFromLine(line) {
20
+ const start = line.indexOf('{');
21
+ const end = line.lastIndexOf('}');
22
+ if (start < 0 || end <= start)
23
+ return null;
24
+ try {
25
+ const parsed = JSON.parse(line.slice(start, end + 1));
26
+ return toRecord(parsed);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ function parsePluginConfigLine(line) {
33
+ const match = line.match(PLUGIN_CONFIG_LINE);
34
+ if (!match)
35
+ return null;
36
+ try {
37
+ const parsed = JSON.parse(match[2]);
38
+ const config = toRecord(parsed);
39
+ return config ? { instanceId: match[1] || '', config } : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ function findPluginEndIndex(lines, startIndex, instanceId) {
46
+ for (let i = startIndex + 1; i < lines.length; i++) {
47
+ const match = lines[i].match(PLUGIN_END_LINE);
48
+ if (!match)
49
+ continue;
50
+ const endInstanceId = match[1] || '';
51
+ if (!instanceId || !endInstanceId || endInstanceId === instanceId) {
52
+ return i;
53
+ }
54
+ }
55
+ return startIndex;
56
+ }
57
+ function isPluginConfigRemainderBeforeReference(line, nextLine) {
58
+ return /^\s*}+\s*,?\s*$/.test(line) && !!nextLine && TEST_CASE_REFERENCE_MARKER.test(nextLine);
59
+ }
60
+ function normalizeReferenceConfig(value) {
61
+ const record = toRecord(value);
62
+ if (!record)
63
+ return null;
64
+ const config = toRecord(record.config) || toRecord(record.param) || record;
65
+ const testCaseId = config.testCaseId ??
66
+ config.configId ??
67
+ config.id ??
68
+ record.testCaseId ??
69
+ record.configId ??
70
+ record.id;
71
+ if (testCaseId === undefined || testCaseId === null || String(testCaseId).trim() === '') {
72
+ return null;
73
+ }
74
+ return {
75
+ testCaseId: String(testCaseId),
76
+ configName: asString(config.configName || config.name || record.configName || record.name),
77
+ businessLineId: config.businessLineId ?? record.businessLineId,
78
+ };
79
+ }
80
+ function extractReferenceFromSerializedItem(item) {
81
+ const type = asString(item.type);
82
+ const pluginId = asString(item.pluginId);
83
+ if (type === 'test-case-reference' || pluginId === 'test-case-reference') {
84
+ return normalizeReferenceConfig(item);
85
+ }
86
+ const code = asString(item.code);
87
+ if (code) {
88
+ const markerLine = code.split('\n').find((line) => TEST_CASE_REFERENCE_MARKER.test(line));
89
+ if (markerLine) {
90
+ return normalizeReferenceConfig(parseJsonObjectFromLine(markerLine));
91
+ }
92
+ }
93
+ return null;
94
+ }
95
+ function normalizeConfigPayload(payload) {
96
+ const root = toRecord(payload) || {};
97
+ const data = toRecord(root.data) || root;
98
+ const nestedData = toRecord(data.data);
99
+ const config = toRecord(data.config) || toRecord(nestedData?.config) || data;
100
+ return {
101
+ ...config,
102
+ businessLineId: config.businessLineId ?? data.businessLineId ?? nestedData?.businessLineId,
103
+ };
104
+ }
105
+ function pickScriptContent(config) {
106
+ const candidates = [
107
+ config.naturalLanguage,
108
+ config.natural_language,
109
+ config.script,
110
+ config.scriptContent,
111
+ config.script_content,
112
+ config.content,
113
+ config.code,
114
+ ];
115
+ const script = candidates.find((value) => typeof value === 'string' && value.trim() !== '');
116
+ return typeof script === 'string' ? script : '';
117
+ }
118
+ async function fetchConfigDetail(reference, options) {
119
+ const apiUrl = normalizeApiUrl(options.apiUrl);
120
+ if (!apiUrl) {
121
+ throw new Error('缺少后端 apiUrl,无法拉取引用用例');
122
+ }
123
+ const encodedId = encodeURIComponent(reference.testCaseId);
124
+ const urls = [
125
+ `${apiUrl}/rest/ai-validator/configs/${encodedId}`,
126
+ `${apiUrl}/api/ai-validator/configs/${encodedId}`,
127
+ ];
128
+ let lastError;
129
+ for (const url of urls) {
130
+ try {
131
+ const response = await axios.get(url, {
132
+ timeout: 15000,
133
+ headers: getNodeAuthHeaders(),
134
+ });
135
+ return normalizeConfigPayload(response.data);
136
+ }
137
+ catch (error) {
138
+ lastError = error;
139
+ }
140
+ }
141
+ const message = lastError instanceof Error ? lastError.message : String(lastError || 'unknown error');
142
+ throw new Error(`拉取引用用例失败: ${reference.configName || reference.testCaseId}, ${message}`);
143
+ }
144
+ async function resolveReferencedCase(reference, options, state) {
145
+ const logger = options.logger || defaultLogger;
146
+ const key = reference.testCaseId;
147
+ if (state.cache.has(key)) {
148
+ return state.cache.get(key) || '';
149
+ }
150
+ if (state.resolvingIds.has(key)) {
151
+ logger.warn?.(`[TestCaseReference] 检测到循环引用,已跳过: ${key}`);
152
+ return '';
153
+ }
154
+ state.resolvingIds.add(key);
155
+ try {
156
+ const config = await fetchConfigDetail(reference, options);
157
+ const script = pickScriptContent(config);
158
+ if (!script) {
159
+ logger.warn?.(`[TestCaseReference] 引用用例没有可执行脚本: ${reference.configName || key}`);
160
+ state.cache.set(key, '');
161
+ return '';
162
+ }
163
+ const resolved = await resolveTestCaseReferences(script, options, state);
164
+ const wrapped = [
165
+ `// ===== 引用用例开始: ${reference.configName || asString(config.configName) || key} (${key}) =====`,
166
+ resolved,
167
+ `// ===== 引用用例结束: ${reference.configName || asString(config.configName) || key} (${key}) =====`,
168
+ ].filter(Boolean).join('\n');
169
+ state.cache.set(key, wrapped);
170
+ return wrapped;
171
+ }
172
+ finally {
173
+ state.resolvingIds.delete(key);
174
+ }
175
+ }
176
+ async function resolveSerializedScript(items, options, state) {
177
+ const dependencies = [];
178
+ const mainParts = [];
179
+ for (const item of items) {
180
+ const record = toRecord(item);
181
+ if (!record)
182
+ continue;
183
+ const reference = extractReferenceFromSerializedItem(record);
184
+ if (reference) {
185
+ const resolved = await resolveReferencedCase(reference, options, state);
186
+ if (resolved.trim())
187
+ dependencies.push(resolved);
188
+ continue;
189
+ }
190
+ const code = asString(record.code);
191
+ if (code.trim()) {
192
+ mainParts.push(await resolveRawScript(code, options, state));
193
+ }
194
+ }
195
+ return [...dependencies, ...mainParts].filter((part) => part.trim() !== '').join('\n\n');
196
+ }
197
+ async function resolveRawScript(input, options, state) {
198
+ const lines = input.split('\n');
199
+ const dependencies = [];
200
+ const outputLines = [];
201
+ for (let i = 0; i < lines.length; i++) {
202
+ const line = lines[i];
203
+ if (isPluginConfigRemainderBeforeReference(line, lines[i + 1])) {
204
+ continue;
205
+ }
206
+ if (line.includes('@plugin-config')) {
207
+ const parsedPlugin = parsePluginConfigLine(line);
208
+ const pluginConfig = parsedPlugin?.config || parseJsonObjectFromLine(line);
209
+ const pluginId = asString(pluginConfig?.pluginId);
210
+ if (pluginId === 'test-case-reference') {
211
+ const reference = normalizeReferenceConfig(pluginConfig?.config);
212
+ if (reference) {
213
+ const resolved = await resolveReferencedCase(reference, options, state);
214
+ if (resolved.trim())
215
+ dependencies.push(resolved);
216
+ }
217
+ i = findPluginEndIndex(lines, i, parsedPlugin?.instanceId || '');
218
+ continue;
219
+ }
220
+ }
221
+ const markerMatch = line.match(TEST_CASE_REFERENCE_MARKER);
222
+ if (markerMatch) {
223
+ const reference = normalizeReferenceConfig(parseJsonObjectFromLine(line));
224
+ if (reference) {
225
+ const resolved = await resolveReferencedCase(reference, options, state);
226
+ if (resolved.trim())
227
+ dependencies.push(resolved);
228
+ }
229
+ if (lines[i + 1]?.includes('[TestCaseReference] 引用用例将在执行前展开')) {
230
+ i += 1;
231
+ }
232
+ continue;
233
+ }
234
+ const legacyMatch = line.match(LEGACY_REFERENCE_LINE);
235
+ if (legacyMatch) {
236
+ let referenceId = '';
237
+ let endIndex = i;
238
+ for (let j = i + 1; j < Math.min(i + 20, lines.length); j++) {
239
+ const idMatch = lines[j].match(LEGACY_REFERENCE_ID_LINE);
240
+ if (idMatch)
241
+ referenceId = idMatch[1].trim();
242
+ endIndex = j;
243
+ if (j > i + 1 && lines[j].includes('// ========================================'))
244
+ break;
245
+ }
246
+ if (referenceId) {
247
+ const resolved = await resolveReferencedCase({
248
+ testCaseId: referenceId,
249
+ configName: legacyMatch[1].trim(),
250
+ }, options, state);
251
+ if (resolved.trim())
252
+ dependencies.push(resolved);
253
+ i = endIndex;
254
+ continue;
255
+ }
256
+ }
257
+ outputLines.push(line);
258
+ }
259
+ const mainScript = outputLines.join('\n').trim();
260
+ return [...dependencies, mainScript].filter((part) => part.trim() !== '').join('\n\n');
261
+ }
262
+ export async function resolveTestCaseReferences(input, options, state) {
263
+ if (!input || typeof input !== 'string')
264
+ return input || '';
265
+ const currentState = state || {
266
+ resolvingIds: new Set(),
267
+ cache: new Map(),
268
+ };
269
+ const trimmed = input.trim();
270
+ if (!trimmed)
271
+ return input;
272
+ try {
273
+ const parsed = JSON.parse(trimmed);
274
+ if (Array.isArray(parsed)) {
275
+ return await resolveSerializedScript(parsed, options, currentState);
276
+ }
277
+ }
278
+ catch {
279
+ // Not serialized plugin JSON; fall through to marker parsing.
280
+ }
281
+ return await resolveRawScript(input, options, currentState);
282
+ }
283
+ //# sourceMappingURL=test-case-reference-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-case-reference-resolver.js","sourceRoot":"","sources":["../../src/task/test-case-reference-resolver.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ function resolveDeclaredPlatform(params, config) {
27
27
  export function nextTaskResponseToTask(polled, device) {
28
28
  const params = parseExecutionParams(polled);
29
29
  const config = params.config || {};
30
- const runtimeLoginContext = (params.loginContext ||
30
+ const runtimeLoginContext = sanitizeRuntimeLoginContext(params.loginContext ||
31
31
  config.loginContext ||
32
32
  resolveAndroidLoginContext(params) ||
33
33
  resolveAndroidLoginContext(config));
@@ -74,6 +74,26 @@ export function nextTaskResponseToTask(polled, device) {
74
74
  device: device || undefined,
75
75
  };
76
76
  }
77
+ function sanitizeRuntimeLoginContext(context) {
78
+ if (!context)
79
+ return undefined;
80
+ const sanitized = { ...context };
81
+ delete sanitized.loginUrl;
82
+ delete sanitized.loginUsername;
83
+ delete sanitized.loginPassword;
84
+ delete sanitized.login_url;
85
+ delete sanitized.login_username;
86
+ delete sanitized.login_password;
87
+ if (sanitized.variables && typeof sanitized.variables === 'object' && !Array.isArray(sanitized.variables)) {
88
+ const variables = { ...sanitized.variables };
89
+ delete variables.loginUsername;
90
+ delete variables.loginPassword;
91
+ delete variables.login_username;
92
+ delete variables.login_password;
93
+ sanitized.variables = variables;
94
+ }
95
+ return sanitized;
96
+ }
77
97
  function sanitizePersistedLogin(target) {
78
98
  const loginContext = target.loginContext;
79
99
  if (loginContext) {
@@ -92,10 +112,22 @@ function sanitizePersistedLogin(target) {
92
112
  delete target.androidLoginScript;
93
113
  delete target.androidLoginUsername;
94
114
  delete target.androidLoginPassword;
115
+ delete target.loginUrl;
116
+ delete target.loginUsername;
117
+ delete target.loginPassword;
118
+ delete target.login_url;
119
+ delete target.login_username;
120
+ delete target.login_password;
95
121
  if (target.loginConfig) {
96
122
  delete target.loginConfig.androidLoginScript;
97
123
  delete target.loginConfig.androidLoginUsername;
98
124
  delete target.loginConfig.androidLoginPassword;
125
+ delete target.loginConfig.loginUrl;
126
+ delete target.loginConfig.loginUsername;
127
+ delete target.loginConfig.loginPassword;
128
+ delete target.loginConfig.login_url;
129
+ delete target.loginConfig.login_username;
130
+ delete target.loginConfig.login_password;
99
131
  if (Object.keys(target.loginConfig).length === 0)
100
132
  delete target.loginConfig;
101
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/task/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/task/types.ts"],"names":[],"mappings":"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"}
@@ -162,9 +162,6 @@ router.post('/test-cases', async (req, res) => {
162
162
  bundleId: testCase.bundleId,
163
163
  mobileMode: testCase.mobileMode,
164
164
  isRnUrl: testCase.isRnUrl,
165
- loginUsername: testCase.loginUsername,
166
- loginPassword: testCase.loginPassword,
167
- loginUrl: testCase.loginUrl || '',
168
165
  status: testCase.status || 1,
169
166
  windowWidth: testCase.windowWidth || 1920,
170
167
  windowHeight: testCase.windowHeight || 1080,
@@ -285,7 +282,7 @@ const taskLogs = new Map();
285
282
  */
286
283
  router.post('/execute', async (req, res) => {
287
284
  try {
288
- const { script, deviceId, url, runMode, platform, packageName, bundleId, mobileMode, loginUsername, loginPassword, isRnUrl, skipAppiumDriver, } = req.body;
285
+ const { script } = req.body;
289
286
  if (!script) {
290
287
  res.status(400).json({
291
288
  success: false,
@@ -365,4 +362,4 @@ export function setupDebugApiRoutes(app) {
365
362
  logger.info('调试 API 路由已设置');
366
363
  }
367
364
  export default router;
368
- //# sourceMappingURL=debug-api.js.map
365
+ //# sourceMappingURL=debug-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug-page.d.ts","sourceRoot":"","sources":["../../src/web/debug-page.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAquDzC"}
1
+ {"version":3,"file":"debug-page.d.ts","sourceRoot":"","sources":["../../src/web/debug-page.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA6sDzC"}
@@ -255,15 +255,6 @@ html,body{overflow:hidden;margin:0;padding:0}
255
255
  </div>
256
256
  </div>
257
257
 
258
- <div class="form-group">
259
- <label>登录用户名(选填)</label>
260
- <input id="debug-loginUser" placeholder="输入用户名">
261
- </div>
262
- <div class="form-group">
263
- <label>登录密码(选填)</label>
264
- <input id="debug-loginPass" type="password" placeholder="输入密码">
265
- </div>
266
-
267
258
  <div style="padding-top:16px;display:flex;flex-direction:column;gap:8px">
268
259
  <button id="debug-execute-btn" class="btn-icon btn-blue" style="width:100%;justify-content:center;padding:10px" onclick="handleDebugExecute()">
269
260
  &#9654; 运行任务
@@ -1424,9 +1415,6 @@ function confirmCaseSelection() {
1424
1415
  if(tc.naturalLanguage) {
1425
1416
  document.getElementById('debug-script').value = tc.naturalLanguage;
1426
1417
  }
1427
- if(tc.loginUsername) document.getElementById('debug-loginUser').value = tc.loginUsername;
1428
- if(tc.loginPassword) document.getElementById('debug-loginPass').value = tc.loginPassword;
1429
-
1430
1418
  closeCaseSelector();
1431
1419
  addDebugLog('已加载用例: ' + tc.configName, 'success');
1432
1420
  }
@@ -1505,9 +1493,6 @@ async function handleSaveCase() {
1505
1493
  mobileMode: document.getElementById('debug-mobileMode')?.checked || false,
1506
1494
  deviceName: document.getElementById('debug-mobileMode')?.checked ? (document.getElementById('debug-deviceName')?.value || 'iPhone 13') : undefined,
1507
1495
  isRnUrl: false,
1508
- loginUsername: document.getElementById('debug-loginUser').value || undefined,
1509
- loginPassword: document.getElementById('debug-loginPass').value || undefined,
1510
- loginUrl: '',
1511
1496
  // 后端必需字段
1512
1497
  status: 1,
1513
1498
  windowWidth: 1920,
@@ -1653,37 +1638,43 @@ async function handleAiGenerate() {
1653
1638
  const platform = document.getElementById('debug-platform').value;
1654
1639
  const packageName = getPackageName();
1655
1640
  const testUrl = document.getElementById('debug-url').value || '';
1656
- const erp = 'system';
1657
-
1658
- // 构建请求参数
1659
- const body = {
1660
- traceId: Date.now().toString() + Math.random().toString(36).substr(2, 9),
1661
- reqId: Date.now().toString(),
1662
- erp: erp,
1663
- keyword: keyword,
1664
- platform: platform,
1665
- packageName: packageName,
1666
- testUrl: testUrl
1667
- };
1668
1641
 
1669
- const headers = {
1670
- 'Content-Type': 'application/json',
1671
- 'Accept': 'text/event-stream',
1672
- 'autobots-agent-id': '30323',
1673
- 'autobots-token': '60e7b3f68f654e9992ae0d403d2d90e5'
1674
- };
1642
+ const traceId = Date.now().toString() + Math.random().toString(36).substr(2, 9);
1643
+ const reqId = Date.now().toString();
1644
+ const autobotsSearchUrl = window.__AUTOBOTS_SEARCH_AI_SSE_URL__ || 'http://autobots-bk.jd.local/autobots/api/v1/searchAiSse';
1645
+ const autobotsAgentId = window.__AUTOBOTS_AGENT_ID__;
1646
+ const autobotsToken = window.__AUTOBOTS_TOKEN__;
1647
+ if (!autobotsAgentId || !autobotsToken) {
1648
+ throw new Error('缺少 Autobots SSE 配置:__AUTOBOTS_AGENT_ID__ / __AUTOBOTS_TOKEN__');
1649
+ }
1675
1650
 
1676
- // 直接发送fetch请求处理SSE
1677
- const response = await fetch('http://autobots-bk.jd.local/autobots/api/v1/searchAiSse', {
1651
+ // 直接请求公司部署的 Autobots SSE 服务。
1652
+ const response = await fetch(autobotsSearchUrl, {
1678
1653
  method: 'POST',
1679
- headers: headers,
1680
- body: JSON.stringify(body),
1654
+ headers: {
1655
+ 'Content-Type': 'application/json',
1656
+ 'Accept': 'text/event-stream',
1657
+ 'autobots-agent-id': autobotsAgentId,
1658
+ 'autobots-token': autobotsToken
1659
+ },
1660
+ body: JSON.stringify({
1661
+ traceId: traceId,
1662
+ reqId: reqId,
1663
+ erp: 'system',
1664
+ keyword: keyword,
1665
+ platform: platform,
1666
+ testUrl: testUrl,
1667
+ packageName: packageName,
1668
+ }),
1681
1669
  });
1682
1670
 
1683
1671
  if (!response.ok) {
1684
1672
  throw new Error('HTTP ' + response.status);
1685
1673
  }
1686
1674
 
1675
+ // 脚本编辑器 - 记住原有内容
1676
+ const editor = document.getElementById('debug-script');
1677
+ const existingContent = editor.value.trim();
1687
1678
  if (!response.body) {
1688
1679
  throw new Error('No response body');
1689
1680
  }
@@ -1693,54 +1684,39 @@ async function handleAiGenerate() {
1693
1684
  let buffer = '';
1694
1685
  let finalContent = '';
1695
1686
 
1696
- // 脚本编辑器 - 记住原有内容
1697
- const editor = document.getElementById('debug-script');
1698
- const existingContent = editor.value.trim();
1699
-
1700
1687
  while (true) {
1701
1688
  const { done, value } = await reader.read();
1702
- if (done) {
1703
- addDebugLog('脚本生成完成', 'success');
1704
- break;
1705
- }
1689
+ if (done) break;
1706
1690
 
1707
1691
  buffer += decoder.decode(value, { stream: true });
1708
-
1709
- // 按行分割处理
1710
1692
  const lines = buffer.split('\\n');
1711
1693
  buffer = lines.pop() || '';
1712
1694
 
1713
1695
  for (const line of lines) {
1714
- if (line.startsWith('data:')) {
1715
- try {
1716
- const jsonStr = line.slice(5).trim();
1717
- const parsedData = JSON.parse(jsonStr);
1718
- const responseContent = parsedData.data?.response || parsedData.response || '';
1719
- const responseAll = parsedData.data?.responseAll || parsedData.responseAll || '';
1720
-
1721
- if (responseContent) {
1722
- const cleanContent = cleanCodeBlock(responseContent);
1723
- finalContent = cleanContent;
1724
- }
1725
-
1726
- if (parsedData.data?.status === 'finished' || parsedData.status === 'finished') {
1727
- if (responseAll) {
1728
- const cleanContent = cleanCodeBlock(responseAll);
1729
- finalContent = cleanContent;
1730
- }
1731
- }
1732
-
1733
- // 流式过程中实时预览生成内容
1734
- if (finalContent) {
1735
- editor.value = finalContent;
1736
- editor.scrollTop = editor.scrollHeight;
1737
- }
1738
- } catch (error) {
1739
- // 忽略解析错误
1696
+ if (!line.startsWith('data:')) continue;
1697
+ try {
1698
+ const jsonStr = line.slice(5).trim();
1699
+ if (!jsonStr || jsonStr === '[DONE]') continue;
1700
+ const parsedData = JSON.parse(jsonStr);
1701
+ const responseContent = parsedData.data?.response || parsedData.response || '';
1702
+ const responseAll = parsedData.data?.responseAll || parsedData.responseAll || '';
1703
+
1704
+ if (responseAll) {
1705
+ finalContent = cleanCodeBlock(responseAll);
1706
+ } else if (responseContent) {
1707
+ finalContent = cleanCodeBlock(finalContent + responseContent);
1708
+ }
1709
+
1710
+ if (finalContent) {
1711
+ editor.value = finalContent;
1712
+ editor.scrollTop = editor.scrollHeight;
1740
1713
  }
1714
+ } catch (error) {
1715
+ // 忽略单行解析错误,继续读取后续 SSE。
1741
1716
  }
1742
1717
  }
1743
1718
  }
1719
+ addDebugLog('脚本生成完成', 'success');
1744
1720
 
1745
1721
  // 生成完成,将最终内容追加到编辑器原有内容后面
1746
1722
  if (finalContent) {
@@ -1 +1 @@
1
- {"version":3,"file":"debug-page.js","sourceRoot":"","sources":["../../src/web/debug-page.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmuDR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"debug-page.js","sourceRoot":"","sources":["../../src/web/debug-page.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2sDR,CAAC;AACF,CAAC"}
@@ -173,16 +173,6 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
173
173
  </div>
174
174
  </div>
175
175
 
176
- <!-- 登录信息 -->
177
- <div class="config-section">
178
- <label>登录用户名(选填)</label>
179
- <input type="text" id="loginUsername" placeholder="请输入用户名">
180
- </div>
181
- <div class="config-section">
182
- <label>登录密码(选填)</label>
183
- <input type="password" id="loginPassword" placeholder="请输入密码">
184
- </div>
185
-
186
176
  <!-- Appium 选项 -->
187
177
  <div class="checkbox-wrapper">
188
178
  <input type="checkbox" id="skipAppiumDriver" checked>
@@ -494,8 +484,6 @@ function executeTask() {
494
484
  packageName: runMode === 'device' ? packageValue : undefined,
495
485
  platform: runMode === 'device' ? document.getElementById('platform').value : 'web',
496
486
  skipAppiumDriver: document.getElementById('skipAppiumDriver').checked,
497
- loginUsername: document.getElementById('loginUsername').value || undefined,
498
- document.getElementById('loginPassword').value || undefined,
499
487
  };
500
488
 
501
489
  // @ts-ignore
@@ -664,8 +652,6 @@ function restoreHistory(id) {
664
652
  document.getElementById('scriptEditor').value = req.prompt || '';
665
653
  document.getElementById('mobileMode').checked = req.mobileMode || false;
666
654
  document.getElementById('skipAppiumDriver').checked = req.skipAppiumDriver !== false;
667
- document.getElementById('loginUsername').value = req.loginUsername || '';
668
- document.getElementById('loginPassword').value = req.loginPassword || '';
669
655
 
670
656
  if (req.run_mode === 'device') {
671
657
  document.getElementById('platform').value = req.platform || 'android';
@@ -817,10 +803,6 @@ function confirmTestCase() {
817
803
  document.getElementById('customPackage').value = selectedTestCase.packageName;
818
804
  document.getElementById('customPackage').style.display = 'block';
819
805
  }
820
-
821
- document.getElementById('loginUsername').value = selectedTestCase.loginUsername || '';
822
- document.getElementById('loginPassword').value = selectedTestCase.loginPassword || '';
823
-
824
806
  closeTestCaseModal();
825
807
  showToast('已加载用例: ' + selectedTestCase.configName, 'success');
826
808
  }
@@ -892,8 +874,6 @@ function confirmSave() {
892
874
  platform: document.getElementById('platform').value,
893
875
  packageName: packageValue,
894
876
  mobileMode: document.getElementById('mobileMode').checked,
895
- loginUsername: document.getElementById('loginUsername').value,
896
- document.getElementById('loginPassword').value,
897
877
  status: 1,
898
878
  isRealDevice: runMode === 'device',
899
879
  };
@@ -1066,4 +1046,4 @@ document.addEventListener('DOMContentLoaded', function() {
1066
1046
  });
1067
1047
  </script>
1068
1048
  </body>
1069
- </html>
1049
+ </html>