@dyyz1993/agent-browser 0.12.0 → 0.13.1
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/bin/agent-browser-darwin-arm64 +0 -0
- package/bin/agent-browser-darwin-x64 +0 -0
- package/bin/agent-browser-linux-arm64 +0 -0
- package/bin/agent-browser-linux-x64 +0 -0
- package/bin/agent-browser-win32-x64.exe +0 -0
- package/dist/actions.d.ts +2 -1
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +137 -24
- package/dist/actions.js.map +1 -1
- package/dist/browser.d.ts +40 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +101 -1
- package/dist/browser.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +27 -2
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +24 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli.js +0 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +25 -1
- package/dist/daemon.js.map +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +18 -0
- package/dist/protocol.js.map +1 -1
- package/dist/rc-config.d.ts.map +1 -1
- package/dist/rc-config.js +2 -1
- package/dist/rc-config.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
- package/scripts/check_goods_container.js +0 -35
- package/scripts/check_page_content.js +0 -36
- package/scripts/click_applause_rate.js +0 -30
- package/scripts/explore_jd_page.js +0 -31
- package/scripts/extract_all_jd_data.js +0 -80
- package/scripts/extract_jd_product_detail.js +0 -62
- package/scripts/extract_jd_products_correct_links.js +0 -78
- package/scripts/extract_jd_products_final.js +0 -80
- package/scripts/extract_jd_reviews.js +0 -48
- package/scripts/extract_jd_seafood_final.js +0 -78
- package/scripts/extract_multiple_products.js +0 -77
- package/scripts/extract_products_no_scroll.js +0 -68
- package/scripts/extract_products_simple.js +0 -68
- package/scripts/find_applause_rate.js +0 -26
- package/scripts/find_jd_links.js +0 -28
- package/scripts/find_main_content.js +0 -20
- package/scripts/find_product_cards.js +0 -38
- package/scripts/find_root_content.js +0 -26
- package/scripts/find_unique_products.js +0 -55
- package/scripts/get_jd_product_detail.js +0 -16
- package/scripts/get_jd_products.js +0 -23
- package/scripts/get_jd_seafood_products.js +0 -44
- package/scripts/get_product_details_from_images.js +0 -54
- package/scripts/verify-form.sh +0 -67
- package/scripts/verify-login.sh +0 -65
- package/scripts/verify-recording.sh +0 -80
- package/scripts/verify-upload.sh +0 -41
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/actions.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BrowserManager, ScreencastFrame } from './browser.js';
|
|
2
|
-
import type { AnyCommand, Response } from './types.js';
|
|
2
|
+
import type { AnyCommand, Response, AddInitScriptCommand } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Set the callback for screencast frames
|
|
5
5
|
* This is called by the daemon to set up frame streaming
|
|
@@ -47,4 +47,5 @@ export declare function toAIFriendlyError(error: unknown, selector: string): Err
|
|
|
47
47
|
* Execute a command and return a response
|
|
48
48
|
*/
|
|
49
49
|
export declare function executeCommand(command: AnyCommand, browser: BrowserManager): Promise<Response>;
|
|
50
|
+
export declare function handleAddInitScript(command: AddInitScriptCommand, browser: BrowserManager): Promise<Response>;
|
|
50
51
|
//# sourceMappingURL=actions.d.ts.map
|
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAyBpE,OAAO,KAAK,EAEV,UAAU,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAyBpE,OAAO,KAAK,EAEV,UAAU,EACV,QAAQ,EAyFR,oBAAoB,EAoCrB,MAAM,YAAY,CAAC;AAMpB;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,IAAI,GAClD,IAAI,CAEN;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAChE;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAExE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,qBAAqB,CAEzD;AA+BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAkEzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,QAAQ,CAAC,CAuRnB;AAy9DD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
|
package/dist/actions.js
CHANGED
|
@@ -154,6 +154,8 @@ export async function executeCommand(command, browser) {
|
|
|
154
154
|
return await handleTabNew(cmd, browser);
|
|
155
155
|
case 'tab_list':
|
|
156
156
|
return await handleTabList(cmd, browser);
|
|
157
|
+
case 'frames':
|
|
158
|
+
return await handleFrames(cmd, browser);
|
|
157
159
|
case 'tab_switch':
|
|
158
160
|
return await handleTabSwitch(cmd, browser);
|
|
159
161
|
case 'tab_close':
|
|
@@ -182,6 +184,8 @@ export async function executeCommand(command, browser) {
|
|
|
182
184
|
return await handleUnroute(cmd, browser);
|
|
183
185
|
case 'requests':
|
|
184
186
|
return await handleRequests(cmd, browser);
|
|
187
|
+
case 'websockets':
|
|
188
|
+
return await handleWebSockets(cmd, browser);
|
|
185
189
|
case 'download':
|
|
186
190
|
return await handleDownload(cmd, browser);
|
|
187
191
|
case 'geolocation':
|
|
@@ -360,6 +364,8 @@ export async function executeCommand(command, browser) {
|
|
|
360
364
|
return await handleAsk(cmd, browser);
|
|
361
365
|
case 'config':
|
|
362
366
|
return handleConfig(cmd);
|
|
367
|
+
case 'history':
|
|
368
|
+
return await handleHistory(cmd, browser);
|
|
363
369
|
default: {
|
|
364
370
|
const unknownCommand = cmd;
|
|
365
371
|
return errorResponse(unknownCommand.id, `Unknown action: ${unknownCommand.action}`);
|
|
@@ -426,6 +432,7 @@ async function handleClick(command, browser) {
|
|
|
426
432
|
result.diff = diffResult.output;
|
|
427
433
|
result.diffScope = diffResult.diff.scope;
|
|
428
434
|
}
|
|
435
|
+
browser.recordCommand('click', command.selector, undefined, true);
|
|
429
436
|
return successResponse(command.id, result);
|
|
430
437
|
}
|
|
431
438
|
const diffResult = await performDiff(locator, command.diffScope, async () => {
|
|
@@ -446,6 +453,7 @@ async function handleClick(command, browser) {
|
|
|
446
453
|
result.diff = diffResult.output;
|
|
447
454
|
result.diffScope = diffResult.diff.scope;
|
|
448
455
|
}
|
|
456
|
+
browser.recordCommand('click', command.selector, undefined, true);
|
|
449
457
|
return successResponse(command.id, result);
|
|
450
458
|
}
|
|
451
459
|
async function handleType(command, browser) {
|
|
@@ -476,6 +484,7 @@ async function handleType(command, browser) {
|
|
|
476
484
|
result.diff = diffResult.output;
|
|
477
485
|
result.diffScope = diffResult.diff.scope;
|
|
478
486
|
}
|
|
487
|
+
browser.recordCommand('type', command.selector, command.text, true);
|
|
479
488
|
return successResponse(command.id, result);
|
|
480
489
|
}
|
|
481
490
|
const diffResult = await performDiff(locator, command.diffScope, async () => {
|
|
@@ -499,6 +508,7 @@ async function handleType(command, browser) {
|
|
|
499
508
|
result.diff = diffResult.output;
|
|
500
509
|
result.diffScope = diffResult.diff.scope;
|
|
501
510
|
}
|
|
511
|
+
browser.recordCommand('type', command.selector, command.text, true);
|
|
502
512
|
return successResponse(command.id, result);
|
|
503
513
|
}
|
|
504
514
|
async function handlePress(command, browser) {
|
|
@@ -612,7 +622,6 @@ async function handleScreenshot(command, browser) {
|
|
|
612
622
|
async function handleSnapshot(command, browser) {
|
|
613
623
|
let effectiveSelector = command.selector;
|
|
614
624
|
let detectionResult = null;
|
|
615
|
-
// 如果未指定 selector,自动检测主体区域
|
|
616
625
|
if (!command.selector) {
|
|
617
626
|
const page = browser.getPage();
|
|
618
627
|
detectionResult = await detectMainContent(page);
|
|
@@ -627,6 +636,8 @@ async function handleSnapshot(command, browser) {
|
|
|
627
636
|
framePath: command.inFrame,
|
|
628
637
|
path: command.path,
|
|
629
638
|
attrs: command.attrs,
|
|
639
|
+
selectors: command.selectors,
|
|
640
|
+
all: command.all,
|
|
630
641
|
});
|
|
631
642
|
const simpleRefs = {};
|
|
632
643
|
const refs = snapshot.refs || {};
|
|
@@ -670,9 +681,12 @@ async function handleEvaluate(command, browser) {
|
|
|
670
681
|
const page = browser.getPage();
|
|
671
682
|
result = await page.evaluate(script);
|
|
672
683
|
}
|
|
684
|
+
browser.recordCommand('eval', 'javascript', script.length > 200 ? script.substring(0, 200) + '...' : script, true);
|
|
673
685
|
return successResponse(command.id, { result });
|
|
674
686
|
}
|
|
675
687
|
catch (error) {
|
|
688
|
+
const script = command.script || command.file || '';
|
|
689
|
+
browser.recordCommand('eval', 'javascript', script.length > 200 ? script.substring(0, 200) + '...' : script, false);
|
|
676
690
|
console.error('Error in handleEvaluate:', error);
|
|
677
691
|
return errorResponse(command.id, error instanceof Error ? error.message : String(error));
|
|
678
692
|
}
|
|
@@ -774,6 +788,7 @@ async function handleSelect(command, browser) {
|
|
|
774
788
|
result.diff = diffResult.output;
|
|
775
789
|
result.diffScope = diffResult.diff.scope;
|
|
776
790
|
}
|
|
791
|
+
browser.recordCommand('select', command.selector, values.join(','), true);
|
|
777
792
|
return successResponse(command.id, result);
|
|
778
793
|
}
|
|
779
794
|
async function handleHover(command, browser) {
|
|
@@ -850,6 +865,16 @@ async function handleTabList(command, browser) {
|
|
|
850
865
|
active: browser.getActiveIndex(),
|
|
851
866
|
});
|
|
852
867
|
}
|
|
868
|
+
async function handleFrames(command, browser) {
|
|
869
|
+
const frames = browser.listFrames();
|
|
870
|
+
if (frames.length === 0) {
|
|
871
|
+
return successResponse(command.id, {
|
|
872
|
+
frames: [],
|
|
873
|
+
tip: 'No iframes found on this page.',
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
return successResponse(command.id, { frames });
|
|
877
|
+
}
|
|
853
878
|
async function handleTabSwitch(command, browser) {
|
|
854
879
|
const result = await browser.switchTo(command.index);
|
|
855
880
|
const page = browser.getPage();
|
|
@@ -898,6 +923,7 @@ async function handleFill(command, browser) {
|
|
|
898
923
|
result.diff = diffResult.output;
|
|
899
924
|
result.diffScope = diffResult.diff.scope;
|
|
900
925
|
}
|
|
926
|
+
browser.recordCommand('fill', command.selector, command.value, true);
|
|
901
927
|
return successResponse(command.id, result);
|
|
902
928
|
}
|
|
903
929
|
const diffResult = await performDiff(locator, command.diffScope, async () => {
|
|
@@ -925,6 +951,7 @@ async function handleFill(command, browser) {
|
|
|
925
951
|
result.diff = diffResult.output;
|
|
926
952
|
result.diffScope = diffResult.diff.scope;
|
|
927
953
|
}
|
|
954
|
+
browser.recordCommand('fill', command.selector, command.value, true);
|
|
928
955
|
return successResponse(command.id, result);
|
|
929
956
|
}
|
|
930
957
|
async function handleCheck(command, browser) {
|
|
@@ -948,6 +975,7 @@ async function handleCheck(command, browser) {
|
|
|
948
975
|
result.diff = diffResult.output;
|
|
949
976
|
result.diffScope = diffResult.diff.scope;
|
|
950
977
|
}
|
|
978
|
+
browser.recordCommand('check', command.selector, undefined, true);
|
|
951
979
|
return successResponse(command.id, result);
|
|
952
980
|
}
|
|
953
981
|
async function handleUncheck(command, browser) {
|
|
@@ -971,6 +999,7 @@ async function handleUncheck(command, browser) {
|
|
|
971
999
|
result.diff = diffResult.output;
|
|
972
1000
|
result.diffScope = diffResult.diff.scope;
|
|
973
1001
|
}
|
|
1002
|
+
browser.recordCommand('uncheck', command.selector, undefined, true);
|
|
974
1003
|
return successResponse(command.id, result);
|
|
975
1004
|
}
|
|
976
1005
|
async function handleUpload(command, browser) {
|
|
@@ -1069,32 +1098,85 @@ async function handleGetByRole(command, browser) {
|
|
|
1069
1098
|
name: command.name,
|
|
1070
1099
|
exact: command.exact,
|
|
1071
1100
|
});
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1101
|
+
try {
|
|
1102
|
+
switch (command.subaction) {
|
|
1103
|
+
case 'click':
|
|
1104
|
+
await locator.click();
|
|
1105
|
+
return successResponse(command.id, { clicked: true });
|
|
1106
|
+
case 'fill':
|
|
1107
|
+
await locator.fill(command.value ?? '');
|
|
1108
|
+
return successResponse(command.id, { filled: true });
|
|
1109
|
+
case 'check':
|
|
1110
|
+
await locator.check();
|
|
1111
|
+
return successResponse(command.id, { checked: true });
|
|
1112
|
+
case 'hover':
|
|
1113
|
+
await locator.hover();
|
|
1114
|
+
return successResponse(command.id, { hovered: true });
|
|
1115
|
+
}
|
|
1085
1116
|
}
|
|
1117
|
+
catch (error) {
|
|
1118
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
1119
|
+
if (msg.includes('strict mode violation')) {
|
|
1120
|
+
const countMatch = msg.match(/resolved to (\d+) elements/);
|
|
1121
|
+
const count = countMatch ? countMatch[1] : 'multiple';
|
|
1122
|
+
const first = locator.first();
|
|
1123
|
+
const warning = `Matched ${count} elements, used first match. Use 'find nth <index> role "${command.role}" --click' for a specific match.`;
|
|
1124
|
+
switch (command.subaction) {
|
|
1125
|
+
case 'click':
|
|
1126
|
+
await first.click();
|
|
1127
|
+
return successResponse(command.id, { clicked: true, warning });
|
|
1128
|
+
case 'fill':
|
|
1129
|
+
await first.fill(command.value ?? '');
|
|
1130
|
+
return successResponse(command.id, { filled: true, warning });
|
|
1131
|
+
case 'check':
|
|
1132
|
+
await first.check();
|
|
1133
|
+
return successResponse(command.id, { checked: true, warning });
|
|
1134
|
+
case 'hover':
|
|
1135
|
+
await first.hover();
|
|
1136
|
+
return successResponse(command.id, { hovered: true, warning });
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
throw error;
|
|
1140
|
+
}
|
|
1141
|
+
return successResponse(command.id, {});
|
|
1086
1142
|
}
|
|
1087
1143
|
async function handleGetByText(command, browser) {
|
|
1088
1144
|
const frame = browser.getFrame(command.inFrame);
|
|
1089
1145
|
const locator = frame.getByText(command.text, { exact: command.exact });
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1146
|
+
try {
|
|
1147
|
+
switch (command.subaction) {
|
|
1148
|
+
case 'click':
|
|
1149
|
+
await locator.click();
|
|
1150
|
+
return successResponse(command.id, { clicked: true });
|
|
1151
|
+
case 'hover':
|
|
1152
|
+
await locator.hover();
|
|
1153
|
+
return successResponse(command.id, { hovered: true });
|
|
1154
|
+
}
|
|
1097
1155
|
}
|
|
1156
|
+
catch (error) {
|
|
1157
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
1158
|
+
if (msg.includes('strict mode violation')) {
|
|
1159
|
+
const countMatch = msg.match(/resolved to (\d+) elements/);
|
|
1160
|
+
const count = countMatch ? countMatch[1] : 'multiple';
|
|
1161
|
+
const first = locator.first();
|
|
1162
|
+
switch (command.subaction) {
|
|
1163
|
+
case 'click':
|
|
1164
|
+
await first.click();
|
|
1165
|
+
return successResponse(command.id, {
|
|
1166
|
+
clicked: true,
|
|
1167
|
+
warning: `Matched ${count} elements, used first match. Use 'find nth <index> text "${command.text}" --click' for a specific match.`,
|
|
1168
|
+
});
|
|
1169
|
+
case 'hover':
|
|
1170
|
+
await first.hover();
|
|
1171
|
+
return successResponse(command.id, {
|
|
1172
|
+
hovered: true,
|
|
1173
|
+
warning: `Matched ${count} elements, used first match. Use 'find nth <index> text "${command.text}" --hover' for a specific match.`,
|
|
1174
|
+
});
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
throw error;
|
|
1178
|
+
}
|
|
1179
|
+
return successResponse(command.id, {});
|
|
1098
1180
|
}
|
|
1099
1181
|
async function handleGetByLabel(command, browser) {
|
|
1100
1182
|
const frame = browser.getFrame(command.inFrame);
|
|
@@ -1234,6 +1316,20 @@ async function handleRequests(command, browser) {
|
|
|
1234
1316
|
}
|
|
1235
1317
|
return successResponse(command.id, result);
|
|
1236
1318
|
}
|
|
1319
|
+
async function handleWebSockets(command, browser) {
|
|
1320
|
+
if (command.clear) {
|
|
1321
|
+
browser.clearWebSockets();
|
|
1322
|
+
return successResponse(command.id, { cleared: true });
|
|
1323
|
+
}
|
|
1324
|
+
const wasTracking = browser.wsTrackingEnabled;
|
|
1325
|
+
browser.startWebSocketTracking();
|
|
1326
|
+
const sockets = browser.getWebSockets(command.filter);
|
|
1327
|
+
const result = { websockets: sockets };
|
|
1328
|
+
if (sockets.length === 0 && !wasTracking) {
|
|
1329
|
+
result.hint = 'WebSocket tracking just activated. Reload or navigate to capture connections.';
|
|
1330
|
+
}
|
|
1331
|
+
return successResponse(command.id, result);
|
|
1332
|
+
}
|
|
1237
1333
|
async function handleDownload(command, browser) {
|
|
1238
1334
|
const page = browser.getPage();
|
|
1239
1335
|
const locator = browser.getLocator(command.selector, command.inFrame);
|
|
@@ -1807,10 +1903,19 @@ async function handleScrollIntoView(command, browser) {
|
|
|
1807
1903
|
await page.locator(command.selector).scrollIntoViewIfNeeded();
|
|
1808
1904
|
return successResponse(command.id, { scrolled: true });
|
|
1809
1905
|
}
|
|
1810
|
-
async function handleAddInitScript(command, browser) {
|
|
1811
|
-
const
|
|
1906
|
+
export async function handleAddInitScript(command, browser) {
|
|
1907
|
+
const page = browser.getPage();
|
|
1908
|
+
const context = page.context();
|
|
1812
1909
|
await context.addInitScript(command.script);
|
|
1813
|
-
|
|
1910
|
+
const tips = [];
|
|
1911
|
+
try {
|
|
1912
|
+
await page.evaluate(command.script);
|
|
1913
|
+
}
|
|
1914
|
+
catch (e) {
|
|
1915
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
1916
|
+
tips.push(`Init script error on current page: ${msg}. Script will work on next navigation.`);
|
|
1917
|
+
}
|
|
1918
|
+
return successResponse(command.id, { added: true }, tips.length ? tips : undefined);
|
|
1814
1919
|
}
|
|
1815
1920
|
async function handleKeyDown(command, browser) {
|
|
1816
1921
|
const page = browser.getPage();
|
|
@@ -2257,4 +2362,12 @@ function handleConfig(command) {
|
|
|
2257
2362
|
];
|
|
2258
2363
|
return successResponse(command.id, { config, output: lines.join('\n') });
|
|
2259
2364
|
}
|
|
2365
|
+
async function handleHistory(command, browser) {
|
|
2366
|
+
if (command.clear) {
|
|
2367
|
+
browser.clearHistory();
|
|
2368
|
+
return successResponse(command.id, { cleared: true });
|
|
2369
|
+
}
|
|
2370
|
+
const history = browser.getHistory(command.filter);
|
|
2371
|
+
return successResponse(command.id, { history });
|
|
2372
|
+
}
|
|
2260
2373
|
//# sourceMappingURL=actions.js.map
|