supersurf-mcp 3.0.2 → 3.1.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 (46) hide show
  1. package/dist/experimental/fingerprinting/index.d.ts +57 -0
  2. package/dist/experimental/fingerprinting/index.d.ts.map +1 -0
  3. package/dist/experimental/fingerprinting/index.js +150 -0
  4. package/dist/experimental/fingerprinting/index.js.map +1 -0
  5. package/dist/experimental/fingerprinting/page-scripts.d.ts +7 -0
  6. package/dist/experimental/fingerprinting/page-scripts.d.ts.map +1 -0
  7. package/dist/experimental/fingerprinting/page-scripts.js +67 -0
  8. package/dist/experimental/fingerprinting/page-scripts.js.map +1 -0
  9. package/dist/experimental/fingerprinting/store.d.ts +8 -0
  10. package/dist/experimental/fingerprinting/store.d.ts.map +1 -0
  11. package/dist/experimental/fingerprinting/store.js +78 -0
  12. package/dist/experimental/fingerprinting/store.js.map +1 -0
  13. package/dist/experimental/fingerprinting/types.d.ts +32 -0
  14. package/dist/experimental/fingerprinting/types.d.ts.map +1 -0
  15. package/dist/experimental/fingerprinting/types.js +3 -0
  16. package/dist/experimental/fingerprinting/types.js.map +1 -0
  17. package/dist/experimental/index.js +1 -1
  18. package/dist/experimental/index.js.map +1 -1
  19. package/dist/recorder/action-recorder.d.ts +25 -0
  20. package/dist/recorder/action-recorder.d.ts.map +1 -0
  21. package/dist/recorder/action-recorder.js +48 -0
  22. package/dist/recorder/action-recorder.js.map +1 -0
  23. package/dist/shared/config/defaults.d.ts.map +1 -1
  24. package/dist/shared/config/defaults.js +3 -1
  25. package/dist/shared/config/defaults.js.map +1 -1
  26. package/dist/shared/config/loaders.d.ts.map +1 -1
  27. package/dist/shared/config/loaders.js +1 -4
  28. package/dist/shared/config/loaders.js.map +1 -1
  29. package/dist/shared/config/service.d.ts.map +1 -1
  30. package/dist/shared/config/service.js +2 -0
  31. package/dist/shared/config/service.js.map +1 -1
  32. package/dist/shared/config/types.d.ts +2 -0
  33. package/dist/shared/config/types.d.ts.map +1 -1
  34. package/dist/tools/interaction/registry.d.ts.map +1 -1
  35. package/dist/tools/interaction/registry.js +11 -1
  36. package/dist/tools/interaction/registry.js.map +1 -1
  37. package/dist/tools/lib/frames.d.ts +13 -8
  38. package/dist/tools/lib/frames.d.ts.map +1 -1
  39. package/dist/tools/lib/frames.js +164 -80
  40. package/dist/tools/lib/frames.js.map +1 -1
  41. package/dist/tools/lib/types.d.ts +21 -0
  42. package/dist/tools/lib/types.d.ts.map +1 -1
  43. package/dist/tools.d.ts.map +1 -1
  44. package/dist/tools.js +29 -1
  45. package/dist/tools.js.map +1 -1
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../config/loaders.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wCA0BC;AAqBD,sCA0CC;AAjGD,uCAAyB;AAQzB,SAAgB,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,0BAA0B,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC,6BAA6B,QAAQ,sBAAsB,GAAG,CAAC,OAAO,GAAG,CAAC;SACtF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO;YACL,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC,WAAW,QAAQ,yCAAyC,CAAC;SACzE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAuB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,iBAAiB,GAAG;IACxB,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,oBAAoB;CACZ,CAAC;AAIX,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,CAAqB;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED,SAAgB,aAAa,CAAC,GAAuC;IACnE,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,cAAc,gCAAgC,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;YAC1C,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QACjE,CAAC;aAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC9D,CAAC;QACD,6FAA6F;IAC/F,CAAC;IAED,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxF,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,wDAAwD,IAAI,aAAa,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../config/loaders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../config/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAInE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,KAAK,QAAQ,GAAG,MAAM,CAAC;AAEvB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAA0C;gBAE7C,MAAM,EAAE,YAAY;IAMhC,GAAG,IAAI,MAAM;IAIb,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY;IAItC,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,IAAI;IA4BZ,OAAO,CAAC,KAAK;CA8Ed"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../config/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAInE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,KAAK,QAAQ,GAAG,MAAM,CAAC;AAEvB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAA0C;gBAE7C,MAAM,EAAE,YAAY;IAMhC,GAAG,IAAI,MAAM;IAIb,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY;IAItC,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,IAAI;IA4BZ,OAAO,CAAC,KAAK;CAoFd"}
@@ -60,6 +60,7 @@ class ConfigService {
60
60
  smart_waiting: pick('experiments.smart_waiting', inp.cli.experiments?.smart_waiting, inp.env.experiments?.smart_waiting, inp.file.experiments?.smart_waiting, D.experiments.smart_waiting, isBool, warn),
61
61
  storage_inspection: pick('experiments.storage_inspection', inp.cli.experiments?.storage_inspection, inp.env.experiments?.storage_inspection, inp.file.experiments?.storage_inspection, D.experiments.storage_inspection, isBool, warn),
62
62
  mouse_humanization: pick('experiments.mouse_humanization', inp.cli.experiments?.mouse_humanization, inp.env.experiments?.mouse_humanization, inp.file.experiments?.mouse_humanization, D.experiments.mouse_humanization, isBool, warn),
63
+ fingerprinting: pick('experiments.fingerprinting', inp.cli.experiments?.fingerprinting, inp.env.experiments?.fingerprinting, inp.file.experiments?.fingerprinting, D.experiments.fingerprinting, isBool, warn),
63
64
  },
64
65
  security: {
65
66
  secure_eval: pick('security.secure_eval', inp.cli.security?.secure_eval, inp.env.security?.secure_eval, inp.file.security?.secure_eval, D.security.secure_eval, isBool, warn),
@@ -76,6 +77,7 @@ class ConfigService {
76
77
  logging: {
77
78
  debug: pick('logging.debug', inp.cli.logging?.debug, inp.env.logging?.debug, inp.file.logging?.debug, D.logging.debug, isDebugMode, warn),
78
79
  usage_metrics: pick('logging.usage_metrics', inp.cli.logging?.usage_metrics, inp.env.logging?.usage_metrics, inp.file.logging?.usage_metrics, D.logging.usage_metrics, isBool, warn),
80
+ action_recording: pick('logging.action_recording', inp.cli.logging?.action_recording, inp.env.logging?.action_recording, inp.file.logging?.action_recording, D.logging.action_recording, isBool, warn),
79
81
  },
80
82
  profiles: {
81
83
  startup_opts: {
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../config/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../config/service.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface Config {
5
5
  smart_waiting: boolean;
6
6
  storage_inspection: boolean;
7
7
  mouse_humanization: boolean;
8
+ fingerprinting: boolean;
8
9
  };
9
10
  security: {
10
11
  secure_eval: boolean;
@@ -21,6 +22,7 @@ export interface Config {
21
22
  logging: {
22
23
  debug: DebugMode;
23
24
  usage_metrics: boolean;
25
+ action_recording: boolean;
24
26
  };
25
27
  profiles: {
26
28
  startup_opts: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE;QACX,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE,OAAO,CAAC;QACrB,gBAAgB,EAAE;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;YACnC,MAAM,EAAE,MAAM,EAAE,CAAC;SAClB,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,EAAE;YACZ,WAAW,EAAE,OAAO,CAAC;SACtB,CAAC;KACH,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACpE,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KAC5D,CAAC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE;QACX,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE,OAAO,CAAC;QACrB,gBAAgB,EAAE;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;YACnC,MAAM,EAAE,MAAM,EAAE,CAAC;SAClB,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,EAAE;YACZ,WAAW,EAAE,OAAO,CAAC;SACtB,CAAC;KACH,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACpE,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KAC5D,CAAC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/interaction/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAK3D;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAIlF;AAED,wBAAgB,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAExD;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/interaction/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAK3D;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlF;AAED,wBAAgB,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAExD;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -4,6 +4,7 @@ exports.registerAction = registerAction;
4
4
  exports.executeAction = executeAction;
5
5
  exports.getRegisteredActions = getRegisteredActions;
6
6
  exports._clearRegistryForTest = _clearRegistryForTest;
7
+ const action_recorder_1 = require("../../recorder/action-recorder");
7
8
  const registry = new Map();
8
9
  function registerAction(handler) {
9
10
  if (registry.has(handler.name)) {
@@ -15,7 +16,16 @@ async function executeAction(ctx, action) {
15
16
  const handler = registry.get(action.type);
16
17
  if (!handler)
17
18
  throw new Error(`Unknown action type: ${action.type}`);
18
- return handler.run(ctx, action);
19
+ const startedAt = Date.now();
20
+ try {
21
+ const result = await handler.run(ctx, action);
22
+ (0, action_recorder_1.recordAction)(ctx, action, startedAt, result, null);
23
+ return result;
24
+ }
25
+ catch (err) {
26
+ (0, action_recorder_1.recordAction)(ctx, action, startedAt, null, err);
27
+ throw err;
28
+ }
19
29
  }
20
30
  function getRegisteredActions() {
21
31
  return [...registry.keys()];
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/interaction/registry.ts"],"names":[],"mappings":";;AAMA,wCAKC;AAED,sCAIC;AAED,oDAEC;AAGD,sDAEC;AAtBD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,SAAgB,cAAc,CAAC,OAAsB;IACnD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,GAAgB,EAAE,MAAW;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,uEAAuE;AACvE,SAAgB,qBAAqB;IACnC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/interaction/registry.ts"],"names":[],"mappings":";;AAOA,wCAKC;AAED,sCAYC;AAED,oDAEC;AAGD,sDAEC;AAhCD,oEAA8D;AAE9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,SAAgB,cAAc,CAAC,OAAsB;IACnD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,GAAgB,EAAE,MAAW;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAA,8BAAY,EAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,8BAAY,EAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,uEAAuE;AACvE,SAAgB,qBAAqB;IACnC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -1,4 +1,14 @@
1
1
  import type { ToolContext } from './types';
2
+ /**
3
+ * Create an isolated world in every child frame and return their execution
4
+ * context ids. Used by heal/score passes that must evaluate in each frame
5
+ * regardless of whether a selector matches there. Skips frames whose isolated
6
+ * world can't be created.
7
+ */
8
+ export declare function getChildFrameContexts(ctx: ToolContext): Promise<Array<{
9
+ frameId: string;
10
+ contextId: number;
11
+ }>>;
2
12
  /**
3
13
  * DFS-walk the frame tree and evaluate `selectorExpr` in each child frame's
4
14
  * isolated world. Returns the first frame where the expression yields a
@@ -32,14 +42,9 @@ export declare function evalInFrameOrTop(ctx: ToolContext, expression: string, c
32
42
  * Resolve top-frame viewport coordinates for an element, whether it lives in
33
43
  * the top frame or a child frame. Preserves `ctx.getElementCenter`'s
34
44
  * "Did you mean?" hints on top-frame happy path; only falls back to iframe
35
- * resolution when the top-frame lookup actually fails.
36
- *
37
- * `DOM.getBoxModel` and `getBoundingClientRect` return **iframe-local**
38
- * coordinates for nodes inside iframes (verified in
39
- * docs/research/2026-04-19-dom-getboxmodel-iframe-coords.md). This function
40
- * walks up the frame tree and accumulates each ancestor iframe's top-left
41
- * offset to produce top-frame viewport coordinates — same approach Playwright
42
- * and Puppeteer use.
45
+ * resolution when the top-frame lookup actually fails. When even the iframe
46
+ * selector walk misses, a fingerprint heal across child frames is attempted
47
+ * before the original error is re-thrown.
43
48
  */
44
49
  export declare function getCenterInFrame(ctx: ToolContext, selector: string): Promise<{
45
50
  x: number;
@@ -1 +1 @@
1
- {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../src/tools/lib/frames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA8C1E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAWxF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,GAAG,CAAC,CAgBd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAoF7D"}
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../src/tools/lib/frames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAc3C;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAwBxD;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAqC1E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAWxF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,GAAG,CAAC,CAgBd;AAsGD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAwC7D"}
@@ -1,9 +1,58 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChildFrameContexts = getChildFrameContexts;
3
4
  exports.findElementInFrames = findElementInFrames;
4
5
  exports.resolveInFrames = resolveInFrames;
5
6
  exports.evalInFrameOrTop = evalInFrameOrTop;
6
7
  exports.getCenterInFrame = getCenterInFrame;
8
+ /** DFS-collect every child frame's id from a `Page.getFrameTree` root (top frame excluded). */
9
+ function collectChildFrameIds(root) {
10
+ const frameIds = [];
11
+ const walk = (node, isRoot) => {
12
+ if (!node?.frame?.id)
13
+ return;
14
+ if (!isRoot)
15
+ frameIds.push(node.frame.id);
16
+ for (const child of node.childFrames || [])
17
+ walk(child, false);
18
+ };
19
+ walk(root, true);
20
+ return frameIds;
21
+ }
22
+ /**
23
+ * Create an isolated world in every child frame and return their execution
24
+ * context ids. Used by heal/score passes that must evaluate in each frame
25
+ * regardless of whether a selector matches there. Skips frames whose isolated
26
+ * world can't be created.
27
+ */
28
+ async function getChildFrameContexts(ctx) {
29
+ let tree;
30
+ try {
31
+ tree = await ctx.cdp('Page.getFrameTree', {});
32
+ }
33
+ catch {
34
+ return [];
35
+ }
36
+ const root = tree?.frameTree;
37
+ if (!root)
38
+ return [];
39
+ const out = [];
40
+ for (const frameId of collectChildFrameIds(root)) {
41
+ try {
42
+ const world = await ctx.cdp('Page.createIsolatedWorld', {
43
+ frameId,
44
+ worldName: 'supersurf_iframe',
45
+ grantUniveralAccess: false,
46
+ });
47
+ if (world?.executionContextId != null)
48
+ out.push({ frameId, contextId: world.executionContextId });
49
+ }
50
+ catch {
51
+ continue;
52
+ }
53
+ }
54
+ return out;
55
+ }
7
56
  /**
8
57
  * DFS-walk the frame tree and evaluate `selectorExpr` in each child frame's
9
58
  * isolated world. Returns the first frame where the expression yields a
@@ -24,18 +73,7 @@ async function findElementInFrames(ctx, selectorExpr) {
24
73
  const root = tree?.frameTree;
25
74
  if (!root)
26
75
  return null;
27
- const frameIds = [];
28
- const walk = (node, isRoot) => {
29
- if (!node?.frame?.id)
30
- return;
31
- if (!isRoot)
32
- frameIds.push(node.frame.id);
33
- const children = node.childFrames || [];
34
- for (const child of children)
35
- walk(child, false);
36
- };
37
- walk(root, true);
38
- for (const frameId of frameIds) {
76
+ for (const frameId of collectChildFrameIds(root)) {
39
77
  let contextId;
40
78
  try {
41
79
  const world = await ctx.cdp('Page.createIsolatedWorld', {
@@ -106,17 +144,109 @@ async function evalInFrameOrTop(ctx, expression, contextId) {
106
144
  return result.result?.value;
107
145
  }
108
146
  /**
109
- * Resolve top-frame viewport coordinates for an element, whether it lives in
110
- * the top frame or a child frame. Preserves `ctx.getElementCenter`'s
111
- * "Did you mean?" hints on top-frame happy path; only falls back to iframe
112
- * resolution when the top-frame lookup actually fails.
147
+ * Walk up the frame tree from `frameId`, accumulating each ancestor iframe's
148
+ * top-left offset, to translate iframe-local coordinates into top-frame
149
+ * viewport coordinates.
113
150
  *
114
151
  * `DOM.getBoxModel` and `getBoundingClientRect` return **iframe-local**
115
152
  * coordinates for nodes inside iframes (verified in
116
- * docs/research/2026-04-19-dom-getboxmodel-iframe-coords.md). This function
117
- * walks up the frame tree and accumulates each ancestor iframe's top-left
118
- * offset to produce top-frame viewport coordinates — same approach Playwright
119
- * and Puppeteer use.
153
+ * docs/research/2026-04-19-dom-getboxmodel-iframe-coords.md) same approach
154
+ * Playwright and Puppeteer use. Returns null if any ancestor iframe's owner
155
+ * node can't be resolved.
156
+ */
157
+ async function accumulateFrameOffset(ctx, frameId, contextId) {
158
+ const tree = await ctx.cdp('Page.getFrameTree', {});
159
+ const parentMap = new Map();
160
+ const walkTree = (node, parentId) => {
161
+ const fid = node?.frame?.id;
162
+ if (!fid)
163
+ return;
164
+ if (parentId)
165
+ parentMap.set(fid, parentId);
166
+ for (const child of node.childFrames || [])
167
+ walkTree(child, fid);
168
+ };
169
+ walkTree(tree.frameTree, null);
170
+ const contextCache = new Map();
171
+ contextCache.set(frameId, contextId);
172
+ let offsetX = 0, offsetY = 0;
173
+ let current = frameId;
174
+ while (parentMap.has(current)) {
175
+ const parent = parentMap.get(current);
176
+ // Parent's execution context: undefined (default/top-frame) if parent is root,
177
+ // otherwise an isolated world (create and cache).
178
+ let parentCtxId;
179
+ if (parentMap.has(parent)) {
180
+ if (!contextCache.has(parent)) {
181
+ const w = await ctx.cdp('Page.createIsolatedWorld', {
182
+ frameId: parent,
183
+ worldName: 'supersurf_iframe',
184
+ grantUniveralAccess: false,
185
+ });
186
+ contextCache.set(parent, w.executionContextId);
187
+ }
188
+ parentCtxId = contextCache.get(parent);
189
+ }
190
+ else {
191
+ parentCtxId = undefined; // top-frame default context
192
+ }
193
+ const owner = await ctx.cdp('DOM.getFrameOwner', { frameId: current });
194
+ const resolved = await ctx.cdp('DOM.resolveNode', {
195
+ backendNodeId: owner.backendNodeId,
196
+ executionContextId: parentCtxId,
197
+ });
198
+ const iframeObjId = resolved.object?.objectId;
199
+ if (!iframeObjId)
200
+ return null;
201
+ const iframeRect = await ctx.cdp('Runtime.callFunctionOn', {
202
+ objectId: iframeObjId,
203
+ functionDeclaration: 'function() { const r = this.getBoundingClientRect(); return { left: r.left, top: r.top }; }',
204
+ returnByValue: true,
205
+ });
206
+ const or = iframeRect.result?.value;
207
+ if (!or)
208
+ return null;
209
+ offsetX += or.left;
210
+ offsetY += or.top;
211
+ current = parent;
212
+ }
213
+ return { offsetX, offsetY };
214
+ }
215
+ /**
216
+ * Last-ditch heal when a selector matches no frame: score the stored
217
+ * fingerprint against each child frame's DOM (via the experiment hook) and
218
+ * return the highest-scoring gate-passing hit, translated to top-frame
219
+ * coordinates. Returns null when the experiment is off, no hook is wired, or no
220
+ * frame yields a gate-passing hit.
221
+ */
222
+ async function healInFrames(ctx, selector) {
223
+ if (!ctx.healFingerprintInContext)
224
+ return null;
225
+ let best = null;
226
+ for (const { frameId, contextId } of await getChildFrameContexts(ctx)) {
227
+ const hit = await ctx.healFingerprintInContext(contextId, selector);
228
+ if (hit && (!best || hit.score > best.score)) {
229
+ best = { frameId, contextId, cx: hit.cx, cy: hit.cy, score: hit.score };
230
+ }
231
+ }
232
+ if (!best)
233
+ return null;
234
+ const offset = await accumulateFrameOffset(ctx, best.frameId, best.contextId);
235
+ if (!offset)
236
+ return null;
237
+ return {
238
+ x: Math.round(best.cx + offset.offsetX),
239
+ y: Math.round(best.cy + offset.offsetY),
240
+ contextId: best.contextId,
241
+ };
242
+ }
243
+ /**
244
+ * Resolve top-frame viewport coordinates for an element, whether it lives in
245
+ * the top frame or a child frame. Preserves `ctx.getElementCenter`'s
246
+ * "Did you mean?" hints on top-frame happy path; only falls back to iframe
247
+ * resolution when the top-frame lookup actually fails. When even the iframe
248
+ * selector walk misses, a fingerprint heal across child frames is attempted
249
+ * before the original error is re-thrown.
120
250
  */
121
251
  async function getCenterInFrame(ctx, selector) {
122
252
  try {
@@ -126,8 +256,13 @@ async function getCenterInFrame(ctx, selector) {
126
256
  catch (topFrameErr) {
127
257
  const expr = ctx.getSelectorExpression(selector);
128
258
  const match = await findElementInFrames(ctx, expr);
129
- if (!match)
259
+ if (!match) {
260
+ // Selector matched no frame. Try a fingerprint heal across child frames.
261
+ const healed = await healInFrames(ctx, selector);
262
+ if (healed)
263
+ return healed;
130
264
  throw topFrameErr;
265
+ }
131
266
  // Read the element's iframe-local rect in its frame context.
132
267
  const rectEval = await ctx.cdp('Runtime.evaluate', {
133
268
  expression: `
@@ -144,65 +279,14 @@ async function getCenterInFrame(ctx, selector) {
144
279
  const rect = rectEval.result?.value;
145
280
  if (!rect)
146
281
  throw topFrameErr;
147
- // Build parent map from the frame tree.
148
- const tree = await ctx.cdp('Page.getFrameTree', {});
149
- const parentMap = new Map();
150
- const walkTree = (node, parentId) => {
151
- const fid = node?.frame?.id;
152
- if (!fid)
153
- return;
154
- if (parentId)
155
- parentMap.set(fid, parentId);
156
- for (const child of node.childFrames || [])
157
- walkTree(child, fid);
158
- };
159
- walkTree(tree.frameTree, null);
160
- // Walk up from target frame, accumulating iframe offsets.
161
- const contextCache = new Map();
162
- contextCache.set(match.frameId, match.contextId);
163
- let offsetX = 0, offsetY = 0;
164
- let current = match.frameId;
165
- while (parentMap.has(current)) {
166
- const parent = parentMap.get(current);
167
- // Parent's execution context: undefined (default/top-frame) if parent is root,
168
- // otherwise an isolated world (create and cache).
169
- let parentCtxId;
170
- if (parentMap.has(parent)) {
171
- if (!contextCache.has(parent)) {
172
- const w = await ctx.cdp('Page.createIsolatedWorld', {
173
- frameId: parent,
174
- worldName: 'supersurf_iframe',
175
- grantUniveralAccess: false,
176
- });
177
- contextCache.set(parent, w.executionContextId);
178
- }
179
- parentCtxId = contextCache.get(parent);
180
- }
181
- else {
182
- parentCtxId = undefined; // top-frame default context
183
- }
184
- const owner = await ctx.cdp('DOM.getFrameOwner', { frameId: current });
185
- const resolved = await ctx.cdp('DOM.resolveNode', {
186
- backendNodeId: owner.backendNodeId,
187
- executionContextId: parentCtxId,
188
- });
189
- const iframeObjId = resolved.object?.objectId;
190
- if (!iframeObjId)
191
- throw topFrameErr;
192
- const iframeRect = await ctx.cdp('Runtime.callFunctionOn', {
193
- objectId: iframeObjId,
194
- functionDeclaration: 'function() { const r = this.getBoundingClientRect(); return { left: r.left, top: r.top }; }',
195
- returnByValue: true,
196
- });
197
- const or = iframeRect.result?.value;
198
- if (!or)
199
- throw topFrameErr;
200
- offsetX += or.left;
201
- offsetY += or.top;
202
- current = parent;
203
- }
204
- const x = Math.round(rect.left + offsetX + rect.width / 2);
205
- const y = Math.round(rect.top + offsetY + rect.height / 2);
282
+ const offset = await accumulateFrameOffset(ctx, match.frameId, match.contextId);
283
+ if (!offset)
284
+ throw topFrameErr;
285
+ const x = Math.round(rect.left + offset.offsetX + rect.width / 2);
286
+ const y = Math.round(rect.top + offset.offsetY + rect.height / 2);
287
+ // Iframe-nested elements bypass the top-frame capture wrapper (ctx.getElementCenter),
288
+ // so fingerprint capture is fired here, bound to the child frame's execution context.
289
+ ctx.captureFingerprintInContext?.(match.contextId, selector);
206
290
  return { x, y, contextId: match.contextId };
207
291
  }
208
292
  }
@@ -1 +1 @@
1
- {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../src/tools/lib/frames.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../src/tools/lib/frames.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ export interface ToolContext {
33
33
  connectionManager: any;
34
34
  /** Resolved ConfigService (CLI + env + file + defaults). Optional for legacy callers. */
35
35
  config?: ConfigService;
36
+ /** Usage-metrics logger, when enabled. Used by the action recorder. */
37
+ metricsLogger?: import('../../usage-metrics-logger').UsageMetricsLogger | null;
36
38
  /** Send a Chrome DevTools Protocol command through the extension. */
37
39
  cdp(method: string, params?: any): Promise<any>;
38
40
  /** Evaluate a JS expression in the page context (via CDP Runtime.evaluate). */
@@ -44,6 +46,25 @@ export interface ToolContext {
44
46
  x: number;
45
47
  y: number;
46
48
  }>;
49
+ /**
50
+ * Fingerprint an element that was resolved inside a child frame (iframe), bound to that
51
+ * frame's execution context. The top-frame capture path (`getElementCenter` →
52
+ * `resolveWithHealing`) can't see iframe elements, so the frame-walk fallback fires this.
53
+ * Fire-and-forget; gated by the fingerprinting experiment. Optional — wired by BrowserBridge.
54
+ */
55
+ captureFingerprintInContext?(contextId: number, selector: string): void;
56
+ /**
57
+ * Heal a selector miss inside a child frame (iframe) by scoring a stored fingerprint
58
+ * against that frame's DOM, bound to the frame's execution context. Returns the
59
+ * gate-passing hit's **iframe-local** center + score (the caller translates to top-frame
60
+ * coords), or null when no record exists / the gate fails. Gated by the fingerprinting
61
+ * experiment. Optional — wired by BrowserBridge.
62
+ */
63
+ healFingerprintInContext?(contextId: number, selector: string): Promise<{
64
+ cx: number;
65
+ cy: number;
66
+ score: number;
67
+ } | null>;
47
68
  /** Convert a selector string (including `:has-text()`) to a JS querySelector expression. */
48
69
  getSelectorExpression(selector: string): string;
49
70
  /** Search the page for elements matching partial text when a selector fails. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,GAAG,EAAE,mBAAmB,CAAC;IACzB,gEAAgE;IAChE,iBAAiB,EAAE,GAAG,CAAC;IACvB,yFAAyF;IACzF,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB,qEAAqE;IACrE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,+EAA+E;IAC/E,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,2BAA2B;IAC3B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,yHAAyH;IACzH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,4FAA4F;IAC5F,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD,gFAAgF;IAChF,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,wEAAwE;IACxE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,GAAG,CAAC;IAC/E,8EAA8E;IAC9E,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,GAAG,CAAC;CAC/D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,GAAG,EAAE,mBAAmB,CAAC;IACzB,gEAAgE;IAChE,iBAAiB,EAAE,GAAG,CAAC;IACvB,yFAAyF;IACzF,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAE/E,qEAAqE;IACrE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,+EAA+E;IAC/E,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,2BAA2B;IAC3B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,yHAAyH;IACzH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE;;;;;OAKG;IACH,2BAA2B,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxE;;;;;;OAMG;IACH,wBAAwB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1H,4FAA4F;IAC5F,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD,gFAAgF;IAChF,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,wEAAwE;IACxE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,GAAG,CAAC;IAC/E,8EAA8E;IAC9E,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,GAAG,CAAC;CAC/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAe5D;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,aAAa,CAAmC;gBAE5C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAKlD,UAAU,CACd,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,GAAG,EACf,iBAAiB,CAAC,EAAE,GAAG,EACvB,aAAa,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACxC,OAAO,CAAC,IAAI,CAAC;IAOhB,YAAY,IAAI,IAAI;IAIpB,gEAAgE;IAC1D,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIxC,mDAAmD;IACnD,OAAO,CAAC,YAAY;IAoBpB;;;;OAIG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,OAAO,CAAC,GAAG,CAAC;CA6BhB"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAgB5D;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,aAAa,CAAmC;gBAE5C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAKlD,UAAU,CACd,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,GAAG,EACf,iBAAiB,CAAC,EAAE,GAAG,EACvB,aAAa,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACxC,OAAO,CAAC,IAAI,CAAC;IAOhB,YAAY,IAAI,IAAI;IAIpB,gEAAgE;IAC1D,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIxC,mDAAmD;IACnD,OAAO,CAAC,YAAY;IAiEpB;;;;OAIG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,OAAO,CAAC,GAAG,CAAC;CA6BhB"}
package/dist/tools.js CHANGED
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.BrowserBridge = void 0;
14
14
  const logger_1 = require("./logger");
15
15
  const index_1 = require("./experimental/index");
16
+ const index_2 = require("./experimental/fingerprinting/index");
16
17
  const schemas_1 = require("./tools/schemas");
17
18
  const cdp_1 = require("./tools/lib/cdp");
18
19
  const element_resolver_1 = require("./tools/lib/element-resolver");
@@ -57,10 +58,37 @@ class BrowserBridge {
57
58
  ext,
58
59
  connectionManager: this.connectionManager,
59
60
  config: this.config?.configService,
61
+ metricsLogger: this.metricsLogger,
60
62
  cdp: (method, params) => (0, cdp_1.cdp)(ext, method, params),
61
63
  eval: evalFnBound,
62
64
  sleep: (ms) => new Promise(resolve => setTimeout(resolve, ms)),
63
- getElementCenter: (selector) => (0, element_resolver_1.getElementCenter)(evalFnBound, selector),
65
+ getElementCenter: (selector) => (0, index_2.resolveWithHealing)(evalFnBound, selector, () => this.connectionManager?.getAttachedTab()?.url, (ev) => this.metricsLogger?.write({
66
+ session_id: this.connectionManager?.clientId ?? 'unknown',
67
+ tool: 'fingerprint',
68
+ params: ev,
69
+ result: 'ok',
70
+ duration_ms: 0,
71
+ })),
72
+ captureFingerprintInContext: (contextId, selector) => void (0, index_2.captureInContext)((expr) => (0, cdp_1.cdp)(ext, 'Runtime.evaluate', { expression: expr, contextId, returnByValue: true })
73
+ .then((r) => r.result?.value), this.connectionManager?.getAttachedTab()?.url, selector),
74
+ healFingerprintInContext: (contextId, selector) => (0, index_2.healInContext)((expr) => (0, cdp_1.cdp)(ext, 'Runtime.evaluate', { expression: expr, contextId, returnByValue: true })
75
+ .then((r) => r.result?.value), this.connectionManager?.getAttachedTab()?.url, selector).then((hit) => {
76
+ if (!hit)
77
+ return null;
78
+ const url = this.connectionManager?.getAttachedTab()?.url;
79
+ this.metricsLogger?.write({
80
+ session_id: this.connectionManager?.clientId ?? 'unknown',
81
+ tool: 'fingerprint',
82
+ params: {
83
+ event: 'fingerprint', outcome: 'healed',
84
+ selector, domain: (0, index_2.domainOf)(url), route: (0, index_2.routeOf)(url),
85
+ score: hit.score, margin: hit.margin, hadRecord: true,
86
+ },
87
+ result: 'ok',
88
+ duration_ms: 0,
89
+ });
90
+ return { cx: hit.cx, cy: hit.cy, score: hit.score };
91
+ }),
64
92
  getSelectorExpression: element_resolver_1.getSelectorExpression,
65
93
  findAlternativeSelectors: (selector) => (0, element_resolver_1.findAlternativeSelectors)(evalFnBound, selector),
66
94
  formatResult: (name, result, options) => (0, result_formatter_1.formatResult)(name, result, options, this.connectionManager),