@trusty-squire/mcp 0.7.17 → 0.7.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bot/agent.d.ts.map +1 -1
- package/dist/bot/agent.js +16 -0
- package/dist/bot/agent.js.map +1 -1
- package/dist/bot/browser.d.ts +15 -0
- package/dist/bot/browser.d.ts.map +1 -1
- package/dist/bot/browser.js +112 -3
- package/dist/bot/browser.js.map +1 -1
- package/dist/data/service-categories.d.ts +11 -0
- package/dist/data/service-categories.d.ts.map +1 -0
- package/dist/data/service-categories.js +149 -0
- package/dist/data/service-categories.js.map +1 -0
- package/dist/skill-registry-client.d.ts +45 -0
- package/dist/skill-registry-client.d.ts.map +1 -1
- package/dist/skill-registry-client.js +57 -0
- package/dist/skill-registry-client.js.map +1 -1
- package/dist/tools/provision-any.d.ts.map +1 -1
- package/dist/tools/provision-any.js +52 -0
- package/dist/tools/provision-any.js.map +1 -1
- package/package.json +1 -1
package/dist/bot/browser.d.ts
CHANGED
|
@@ -157,7 +157,22 @@ export interface InteractiveElement {
|
|
|
157
157
|
}> | null;
|
|
158
158
|
selectedOptionText?: string | null;
|
|
159
159
|
interactedThisRun?: boolean;
|
|
160
|
+
cardRadioGroup?: {
|
|
161
|
+
id: number;
|
|
162
|
+
position: number;
|
|
163
|
+
total: number;
|
|
164
|
+
} | null;
|
|
160
165
|
}
|
|
166
|
+
export declare function assignCardRadioGroups(candidates: ReadonlyArray<{
|
|
167
|
+
parentId: number;
|
|
168
|
+
width: number;
|
|
169
|
+
height: number;
|
|
170
|
+
clickable: boolean;
|
|
171
|
+
}>): Array<{
|
|
172
|
+
id: number;
|
|
173
|
+
position: number;
|
|
174
|
+
total: number;
|
|
175
|
+
} | null>;
|
|
161
176
|
export declare function scoreSignupButton(text: string, oauthProviders?: readonly OAuthProviderId[]): number;
|
|
162
177
|
export declare function rankAndCapInventory(elements: readonly InteractiveElement[], buttonCap?: number, oauthProviders?: readonly OAuthProviderId[]): {
|
|
163
178
|
inventory: InteractiveElement[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/bot/browser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/bot/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/browser.js
CHANGED
|
@@ -2503,7 +2503,13 @@ export class BrowserController {
|
|
|
2503
2503
|
// click target is the label, but the bot's inventory selector
|
|
2504
2504
|
// didn't catch labels so the planner had no clickable target
|
|
2505
2505
|
// matching the visible button text).
|
|
2506
|
-
|
|
2506
|
+
// T38 — added [role="radio"] for onboarding wizards that mark
|
|
2507
|
+
// each card with a semantic radio role (some Cloudinary /
|
|
2508
|
+
// Stytch flows). Card-radio clusters with NO role are detected
|
|
2509
|
+
// post-extraction by assignCardRadioGroups using bounding-box
|
|
2510
|
+
// similarity, so this addition is just for the semantically-
|
|
2511
|
+
// tagged case.
|
|
2512
|
+
'input,textarea,select,button,a,label,[role="button"],[role="link"],[role="checkbox"],[role="radio"],[role="menuitem"],[role="menuitemradio"],[role="menuitemcheckbox"],[role="option"],[role="combobox"],[contenteditable=""],[contenteditable="true"]';
|
|
2507
2513
|
// Collect candidates across the document and every open shadow
|
|
2508
2514
|
// root. Closed shadow roots are unreachable — accepted.
|
|
2509
2515
|
const collected = [];
|
|
@@ -2660,6 +2666,13 @@ export class BrowserController {
|
|
|
2660
2666
|
}
|
|
2661
2667
|
};
|
|
2662
2668
|
const seen = new Set();
|
|
2669
|
+
// T38 — parent identity + bounding-box dimensions + clickable
|
|
2670
|
+
// bit, captured in lockstep with `out` so the Node-side
|
|
2671
|
+
// assignCardRadioGroups can detect card-radio clusters without
|
|
2672
|
+
// re-walking the DOM.
|
|
2673
|
+
const parentIds = new Map();
|
|
2674
|
+
let nextParentId = 0;
|
|
2675
|
+
const clusterMeta = [];
|
|
2663
2676
|
const out = [];
|
|
2664
2677
|
for (const el of collected) {
|
|
2665
2678
|
if (seen.has(el))
|
|
@@ -2668,6 +2681,39 @@ export class BrowserController {
|
|
|
2668
2681
|
if (!isVisible(el) && !isCheckableHiddenByStyledLabel(el))
|
|
2669
2682
|
continue;
|
|
2670
2683
|
const r = el.getBoundingClientRect();
|
|
2684
|
+
// T38 — capture parent identity + dimensions in lockstep with
|
|
2685
|
+
// the `out.push` below. Pure scalars only; no DOM nodes leak
|
|
2686
|
+
// through serialization.
|
|
2687
|
+
const parent = el.parentElement;
|
|
2688
|
+
let parentId;
|
|
2689
|
+
if (parent === null) {
|
|
2690
|
+
parentId = -1;
|
|
2691
|
+
}
|
|
2692
|
+
else if (parentIds.has(parent)) {
|
|
2693
|
+
parentId = parentIds.get(parent);
|
|
2694
|
+
}
|
|
2695
|
+
else {
|
|
2696
|
+
parentId = nextParentId++;
|
|
2697
|
+
parentIds.set(parent, parentId);
|
|
2698
|
+
}
|
|
2699
|
+
const tagLower = el.tagName.toLowerCase();
|
|
2700
|
+
const roleAttr = el.getAttribute("role");
|
|
2701
|
+
const clickable = tagLower === "button" ||
|
|
2702
|
+
tagLower === "a" ||
|
|
2703
|
+
tagLower === "label" ||
|
|
2704
|
+
roleAttr === "button" ||
|
|
2705
|
+
roleAttr === "link" ||
|
|
2706
|
+
roleAttr === "radio" ||
|
|
2707
|
+
roleAttr === "menuitem" ||
|
|
2708
|
+
roleAttr === "menuitemradio" ||
|
|
2709
|
+
roleAttr === "option" ||
|
|
2710
|
+
window.getComputedStyle(el).cursor === "pointer";
|
|
2711
|
+
clusterMeta.push({
|
|
2712
|
+
parentId,
|
|
2713
|
+
width: r.width,
|
|
2714
|
+
height: r.height,
|
|
2715
|
+
clickable,
|
|
2716
|
+
});
|
|
2671
2717
|
out.push({
|
|
2672
2718
|
tag: el.tagName.toLowerCase(),
|
|
2673
2719
|
type: el.getAttribute("type"),
|
|
@@ -2727,9 +2773,15 @@ export class BrowserController {
|
|
|
2727
2773
|
interactedThisRun: el.getAttribute("data-ts-touched") === "1",
|
|
2728
2774
|
});
|
|
2729
2775
|
}
|
|
2730
|
-
return out;
|
|
2776
|
+
return { out, clusterMeta };
|
|
2731
2777
|
});
|
|
2732
|
-
|
|
2778
|
+
// T38 — assign card-radio groups in Node (pure logic, unit-tested).
|
|
2779
|
+
const groups = assignCardRadioGroups(raw.clusterMeta);
|
|
2780
|
+
return raw.out.map((e, i) => ({
|
|
2781
|
+
...e,
|
|
2782
|
+
index: i,
|
|
2783
|
+
cardRadioGroup: groups[i] ?? null,
|
|
2784
|
+
}));
|
|
2733
2785
|
}
|
|
2734
2786
|
// Resolve a selector against the live page for the verify step
|
|
2735
2787
|
// (F3 T5). Returns the match count plus the first match's
|
|
@@ -3037,6 +3089,63 @@ export function parseEgressGeo(text) {
|
|
|
3037
3089
|
}
|
|
3038
3090
|
return geo;
|
|
3039
3091
|
}
|
|
3092
|
+
// T38 — pure clustering logic. Identifies card-radio groups from a
|
|
3093
|
+
// flat list of inventory candidates: each candidate carries its
|
|
3094
|
+
// parent's identity (an integer assigned in DOM-walk order) plus
|
|
3095
|
+
// the rendered bounding-box dimensions. Returns one slot per
|
|
3096
|
+
// candidate, populated only for members of a qualifying group.
|
|
3097
|
+
//
|
|
3098
|
+
// A group qualifies when:
|
|
3099
|
+
// - 2..8 clickable siblings share the same parent (a list of N
|
|
3100
|
+
// things in a <ul> would usually exceed 8, and ≥9 sibling
|
|
3101
|
+
// similar-sized clickables aren't a card-radio in practice);
|
|
3102
|
+
// - their widths and heights agree within ±20% (real card grids
|
|
3103
|
+
// line up to a CSS grid template, so this is loose enough for
|
|
3104
|
+
// pixel rounding but tight enough to reject a button+text-link
|
|
3105
|
+
// row).
|
|
3106
|
+
//
|
|
3107
|
+
// Exported so the unit tests can exercise the logic in Node — the
|
|
3108
|
+
// DOM-side caller in extractInteractiveElements feeds the same
|
|
3109
|
+
// shape from inside page.evaluate.
|
|
3110
|
+
export function assignCardRadioGroups(candidates) {
|
|
3111
|
+
const result = new Array(candidates.length).fill(null);
|
|
3112
|
+
// Bucket by parent.
|
|
3113
|
+
const byParent = new Map();
|
|
3114
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
3115
|
+
const c = candidates[i];
|
|
3116
|
+
if (c === undefined || c.parentId < 0)
|
|
3117
|
+
continue;
|
|
3118
|
+
const arr = byParent.get(c.parentId) ?? [];
|
|
3119
|
+
arr.push(i);
|
|
3120
|
+
byParent.set(c.parentId, arr);
|
|
3121
|
+
}
|
|
3122
|
+
let nextGroupId = 1;
|
|
3123
|
+
// Iterate in insertion order — keeps group ids stable across runs
|
|
3124
|
+
// for tests that exercise multiple clusters.
|
|
3125
|
+
for (const indices of byParent.values()) {
|
|
3126
|
+
if (indices.length < 2 || indices.length > 8)
|
|
3127
|
+
continue;
|
|
3128
|
+
const clickableIdx = indices.filter((i) => candidates[i]?.clickable === true);
|
|
3129
|
+
if (clickableIdx.length < 2)
|
|
3130
|
+
continue;
|
|
3131
|
+
const widths = clickableIdx.map((i) => candidates[i].width);
|
|
3132
|
+
const heights = clickableIdx.map((i) => candidates[i].height);
|
|
3133
|
+
const minW = Math.min(...widths);
|
|
3134
|
+
const minH = Math.min(...heights);
|
|
3135
|
+
if (minW < 1 || minH < 1)
|
|
3136
|
+
continue; // degenerate — reject
|
|
3137
|
+
const wRatio = Math.max(...widths) / minW;
|
|
3138
|
+
const hRatio = Math.max(...heights) / minH;
|
|
3139
|
+
if (wRatio > 1.2 || hRatio > 1.2)
|
|
3140
|
+
continue;
|
|
3141
|
+
const groupId = nextGroupId++;
|
|
3142
|
+
const total = clickableIdx.length;
|
|
3143
|
+
clickableIdx.forEach((idx, pos) => {
|
|
3144
|
+
result[idx] = { id: groupId, position: pos + 1, total };
|
|
3145
|
+
});
|
|
3146
|
+
}
|
|
3147
|
+
return result;
|
|
3148
|
+
}
|
|
3040
3149
|
// Score a button/link by how much its text reads like a signup
|
|
3041
3150
|
// action. Shared by submit-button disambiguation, the two-stage
|
|
3042
3151
|
// chooser pick, and inventory button-ranking — one keyword set, no
|