@pyrokine/mcp-chrome 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +38 -11
  2. package/README_zh.md +35 -8
  3. package/dist/anti-detection/behavior.d.ts.map +1 -1
  4. package/dist/anti-detection/behavior.js.map +1 -1
  5. package/dist/anti-detection/injection.js.map +1 -1
  6. package/dist/cdp/client.d.ts.map +1 -1
  7. package/dist/cdp/client.js.map +1 -1
  8. package/dist/cdp/launcher.d.ts.map +1 -1
  9. package/dist/cdp/launcher.js.map +1 -1
  10. package/dist/core/auto-wait.d.ts.map +1 -1
  11. package/dist/core/auto-wait.js.map +1 -1
  12. package/dist/core/browser-driver.d.ts.map +1 -1
  13. package/dist/core/errors.d.ts.map +1 -1
  14. package/dist/core/errors.js.map +1 -1
  15. package/dist/core/extension-errors.d.ts.map +1 -1
  16. package/dist/core/locator.d.ts.map +1 -1
  17. package/dist/core/locator.js.map +1 -1
  18. package/dist/core/retry.js.map +1 -1
  19. package/dist/core/session.d.ts.map +1 -1
  20. package/dist/core/session.js.map +1 -1
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/core/types.js.map +1 -1
  23. package/dist/core/unified-session.d.ts +7 -0
  24. package/dist/core/unified-session.d.ts.map +1 -1
  25. package/dist/core/unified-session.js +21 -6
  26. package/dist/core/unified-session.js.map +1 -1
  27. package/dist/extension/bridge.d.ts.map +1 -1
  28. package/dist/extension/bridge.js.map +1 -1
  29. package/dist/extension/http-server.d.ts.map +1 -1
  30. package/dist/extension/http-server.js.map +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/tools/browse.d.ts.map +1 -1
  33. package/dist/tools/browse.js +12 -37
  34. package/dist/tools/browse.js.map +1 -1
  35. package/dist/tools/cookies.js.map +1 -1
  36. package/dist/tools/diagnostics.d.ts +31 -0
  37. package/dist/tools/diagnostics.d.ts.map +1 -0
  38. package/dist/tools/diagnostics.js +92 -0
  39. package/dist/tools/diagnostics.js.map +1 -0
  40. package/dist/tools/evaluate.d.ts +7 -0
  41. package/dist/tools/evaluate.d.ts.map +1 -1
  42. package/dist/tools/evaluate.js +111 -85
  43. package/dist/tools/evaluate.js.map +1 -1
  44. package/dist/tools/extract.d.ts.map +1 -1
  45. package/dist/tools/extract.js +26 -8
  46. package/dist/tools/extract.js.map +1 -1
  47. package/dist/tools/input.d.ts +2 -0
  48. package/dist/tools/input.d.ts.map +1 -1
  49. package/dist/tools/input.js +320 -181
  50. package/dist/tools/input.js.map +1 -1
  51. package/dist/tools/logs.d.ts +14 -0
  52. package/dist/tools/logs.d.ts.map +1 -1
  53. package/dist/tools/logs.js +37 -9
  54. package/dist/tools/logs.js.map +1 -1
  55. package/dist/tools/post-condition.d.ts +18 -1
  56. package/dist/tools/post-condition.d.ts.map +1 -1
  57. package/dist/tools/post-condition.js +49 -83
  58. package/dist/tools/post-condition.js.map +1 -1
  59. package/dist/tools/target-diagnostics.d.ts +31 -0
  60. package/dist/tools/target-diagnostics.d.ts.map +1 -0
  61. package/dist/tools/target-diagnostics.js +85 -0
  62. package/dist/tools/target-diagnostics.js.map +1 -0
  63. package/dist/tools/wait.d.ts.map +1 -1
  64. package/dist/tools/wait.js +203 -217
  65. package/dist/tools/wait.js.map +1 -1
  66. package/extension/dist/assets/content.ts-pEASbjEL.js +6 -0
  67. package/extension/dist/assets/index.ts-BMmrcSQ6.js +8713 -0
  68. package/extension/dist/assets/popup-BwuBB9Cz.css +142 -0
  69. package/extension/dist/assets/popup.html-B81xccfq.js +127 -0
  70. package/extension/dist/icons/icon128.png +0 -0
  71. package/extension/dist/icons/icon16.png +0 -0
  72. package/extension/dist/icons/icon48.png +0 -0
  73. package/extension/dist/manifest.json +63 -0
  74. package/extension/dist/public/icons/icon128.png +0 -0
  75. package/extension/dist/public/icons/icon16.png +0 -0
  76. package/extension/dist/public/icons/icon48.png +0 -0
  77. package/extension/dist/service-worker-loader.js +1 -0
  78. package/extension/dist/src/popup/popup.html +50 -0
  79. package/package.json +16 -11
@@ -0,0 +1,85 @@
1
+ import { sanitizeErrorMessage } from '../core/error-sanitizer.js';
2
+ const MAX_CANDIDATES = 10;
3
+ const MAX_LOCATOR_TEXT = 500;
4
+ const MAX_CANDIDATE_TEXT = 160;
5
+ const MAX_DIAGNOSTIC_TIMEOUT_MS = 1000;
6
+ export class TargetTimeoutError extends Error {
7
+ context;
8
+ code = 'TARGET_TIMEOUT';
9
+ suggestion = '请检查 locator、frame 和 nth,或根据候选摘要调整目标;连接不可用时先恢复 Extension';
10
+ constructor(context) {
11
+ super(`等待目标元素超时 (${context.timeout}ms)`);
12
+ this.context = context;
13
+ this.name = 'TargetTimeoutError';
14
+ }
15
+ toJSON() {
16
+ return { error: { code: this.code, message: this.message, suggestion: this.suggestion, context: this.context } };
17
+ }
18
+ }
19
+ function targetType(target) {
20
+ return Object.keys(target).find((key) => key !== 'nth') ?? 'unknown';
21
+ }
22
+ function boundedTarget(target) {
23
+ return Object.fromEntries(Object.entries(target).map(([key, value]) => [
24
+ key,
25
+ typeof value === 'string' ? value.slice(0, MAX_LOCATOR_TEXT) : value,
26
+ ]));
27
+ }
28
+ export function summarizeTargetCandidates(candidates) {
29
+ return candidates.slice(0, MAX_CANDIDATES).map((candidate) => ({
30
+ ...(typeof candidate.tag === 'string' ? { tag: candidate.tag.slice(0, 40) } : {}),
31
+ ...(typeof candidate.text === 'string' ? { text: candidate.text.slice(0, MAX_CANDIDATE_TEXT) } : {}),
32
+ ...(candidate.rect ? { rect: candidate.rect } : {}),
33
+ }));
34
+ }
35
+ async function collectPageCandidates(unifiedSession, timeout) {
36
+ try {
37
+ const candidates = await unifiedSession.evaluate(`(() => Array.from(document.querySelectorAll('input, textarea, select, button, a, [role], [contenteditable="true"]'))
38
+ .slice(0, ${MAX_CANDIDATES})
39
+ .map((el) => {
40
+ const rect = el.getBoundingClientRect();
41
+ return {
42
+ tag: el.tagName.toLowerCase(),
43
+ id: el.id || undefined,
44
+ role: el.getAttribute('role') || undefined,
45
+ label: (el.getAttribute('aria-label') || el.getAttribute('placeholder') || '').slice(0, 80),
46
+ text: (el.textContent || '').replace(/\\s+/g, ' ').trim().slice(0, ${MAX_CANDIDATE_TEXT}),
47
+ visible: rect.width > 0 && rect.height > 0,
48
+ disabled: Boolean(el.disabled) || el.getAttribute('aria-disabled') === 'true',
49
+ bounds: {x: rect.x, y: rect.y, width: rect.width, height: rect.height}
50
+ };
51
+ }))()`, undefined, Math.min(Math.max(timeout ?? MAX_DIAGNOSTIC_TIMEOUT_MS, 1), MAX_DIAGNOSTIC_TIMEOUT_MS));
52
+ return { candidates };
53
+ }
54
+ catch (error) {
55
+ return {
56
+ candidates: [],
57
+ diagnosticError: sanitizeErrorMessage(error).slice(0, 500),
58
+ };
59
+ }
60
+ }
61
+ export async function buildTargetDiagnostics(unifiedSession, target, options) {
62
+ const state = unifiedSession.getState();
63
+ const knownCandidates = options.candidates ? summarizeTargetCandidates(options.candidates) : [];
64
+ const pageCandidates = knownCandidates.length > 0
65
+ ? { candidates: knownCandidates }
66
+ : await collectPageCandidates(unifiedSession, options.timeout);
67
+ return {
68
+ locator: boundedTarget(target),
69
+ targetType: targetType(target),
70
+ nth: options.nth,
71
+ currentUrl: state?.url?.slice(0, 500),
72
+ tabId: unifiedSession.getCurrentTargetId(),
73
+ managed: state?.managed ?? false,
74
+ frame: options.frame,
75
+ matchCount: options.matchCount,
76
+ candidates: pageCandidates.candidates,
77
+ lastLocatorState: options.lastState,
78
+ timeout: options.timeout,
79
+ mode: unifiedSession.getMode(),
80
+ connection: unifiedSession.isExtensionConnected() ? 'connected' : 'unavailable',
81
+ ...(options.lastError ? { lastError: sanitizeErrorMessage(options.lastError).slice(0, 500) } : {}),
82
+ ...(pageCandidates.diagnosticError ? { diagnosticError: pageCandidates.diagnosticError } : {}),
83
+ };
84
+ }
85
+ //# sourceMappingURL=target-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-diagnostics.js","sourceRoot":"","sources":["../../src/tools/target-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAknBxE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CASxD"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AA4lBxE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CASxD"}