@trusty-squire/mcp 0.9.4 → 0.9.6
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 +7 -0
- package/dist/bot/agent.d.ts.map +1 -1
- package/dist/bot/agent.js +373 -44
- package/dist/bot/agent.js.map +1 -1
- package/dist/bot/browser.d.ts +3 -0
- package/dist/bot/browser.d.ts.map +1 -1
- package/dist/bot/browser.js +143 -10
- package/dist/bot/browser.js.map +1 -1
- package/dist/bot/promote-to-skill.d.ts +7 -1
- package/dist/bot/promote-to-skill.d.ts.map +1 -1
- package/dist/bot/promote-to-skill.js +108 -3
- package/dist/bot/promote-to-skill.js.map +1 -1
- package/dist/bot/replay-skill.d.ts +5 -1
- package/dist/bot/replay-skill.d.ts.map +1 -1
- package/dist/bot/replay-skill.js +173 -2
- package/dist/bot/replay-skill.js.map +1 -1
- package/package.json +1 -1
package/dist/bot/browser.d.ts
CHANGED
|
@@ -129,6 +129,9 @@ export declare class BrowserController {
|
|
|
129
129
|
name: string | null;
|
|
130
130
|
}>;
|
|
131
131
|
startOAuth(selector: string): Promise<void>;
|
|
132
|
+
getMetaCsrfToken(): Promise<string | null>;
|
|
133
|
+
getElementAttribute(selector: string, attr: string): Promise<string | null>;
|
|
134
|
+
submitPostForm(action: string, fields: Record<string, string>): Promise<void>;
|
|
132
135
|
hasGoogleGsiAffordance(): Promise<boolean>;
|
|
133
136
|
tryGoogleGsiLogin(triggerSelector: string, timeoutMs?: number): Promise<{
|
|
134
137
|
ok: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/bot/browser.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAS5D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,cAAc,CAAC;AAwEzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IAKvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAQjE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GACtE,eAAe,EAAE,CAwBnB;AASD,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,cAAc,GACd,cAAc,GACd,UAAU,GACV,SAAS,CAAC;AAed,MAAM,MAAM,kBAAkB,GAC1B;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,GAChB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAChD;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAqGtD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG;IACtD,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAUA;AAYD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5E;AAED,qBAAa,iBAAiB;IAI5B,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAGnC,OAAO,CAAC,MAAM,CAAO;IACrB,OAAO,CAAC,MAAM,CAAO;IAMrB,OAAO,CAAC,eAAe,CAAuB;IAK9C,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAMpC,OAAO,CAAC,gBAAgB,CAAqB;IAO7C,OAAO,CAAC,IAAI,CAAwB;IAKpC,OAAO,CAAC,YAAY,CACR;IAEZ,IAAI,UAAU,IAAI,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAE5D;gBAEW,IAAI,GAAE,wBAA6B;IAS/C,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAK3B;IAKD,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAK3B;IAOD,IAAI,cAAc,IAAI,cAAc,CAKnC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA+Sd,cAAc;YA4Cd,YAAY;IAiCpB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
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
|
@@ -689,10 +689,29 @@ export class BrowserController {
|
|
|
689
689
|
async goto(url) {
|
|
690
690
|
if (!this.page)
|
|
691
691
|
throw new Error("Browser not started");
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
692
|
+
// Retry transient network/proxy drops. A residential SOCKS tunnel
|
|
693
|
+
// intermittently resets a connection mid-navigation (Chrome surfaces
|
|
694
|
+
// net::ERR_SOCKS_CONNECTION_FAILED / ERR_CONNECTION_RESET / ERR_NETWORK_
|
|
695
|
+
// CHANGED / ERR_TIMED_OUT), especially on heavy onboarding pages that
|
|
696
|
+
// open many subresource connections at once (algolia's dashboard_setup).
|
|
697
|
+
// The host is reachable on the next attempt — a single goto failure
|
|
698
|
+
// shouldn't fail the whole signup. Only retry these connection-level
|
|
699
|
+
// errors; HTTP statuses and selector/logic errors fall straight through.
|
|
700
|
+
const TRANSIENT_NET = /ERR_SOCKS_CONNECTION_FAILED|ERR_CONNECTION_(?:RESET|CLOSED|FAILED|ABORTED)|ERR_NETWORK_CHANGED|ERR_TIMED_OUT|ERR_NAME_NOT_RESOLVED|net::ERR_EMPTY_RESPONSE/i;
|
|
701
|
+
const MAX_GOTO_ATTEMPTS = 3;
|
|
702
|
+
for (let attempt = 1;; attempt++) {
|
|
703
|
+
try {
|
|
704
|
+
await this.page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
|
|
705
|
+
break;
|
|
706
|
+
}
|
|
707
|
+
catch (err) {
|
|
708
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
709
|
+
if (attempt >= MAX_GOTO_ATTEMPTS || !TRANSIENT_NET.test(msg))
|
|
710
|
+
throw err;
|
|
711
|
+
// Linear backoff — give the tunnel a moment to recover a slot.
|
|
712
|
+
await this.sleep(1500 * attempt);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
696
715
|
// Post-load dwell. Cloudflare/reCAPTCHA scoring runs JS that
|
|
697
716
|
// collects behavior signals over a window (typically 500-2000ms);
|
|
698
717
|
// landing on a page and immediately interacting reads as bot-like.
|
|
@@ -3763,6 +3782,65 @@ export class BrowserController {
|
|
|
3763
3782
|
// best-effort — the agent's consent loop re-reads state regardless
|
|
3764
3783
|
}
|
|
3765
3784
|
}
|
|
3785
|
+
// Read the page's Rails/OmniAuth CSRF token (<meta name="csrf-token">).
|
|
3786
|
+
// Needed to recover OmniAuth 2.0 POST-only OAuth when the provider button is
|
|
3787
|
+
// a GET <a> that page-JS upgrades to a POST.
|
|
3788
|
+
async getMetaCsrfToken() {
|
|
3789
|
+
if (!this.page)
|
|
3790
|
+
return null;
|
|
3791
|
+
try {
|
|
3792
|
+
return await this.page.evaluate(() => {
|
|
3793
|
+
const c = document
|
|
3794
|
+
.querySelector('meta[name="csrf-token"]')
|
|
3795
|
+
?.getAttribute("content");
|
|
3796
|
+
return c !== null && c !== undefined && c.length > 0 ? c : null;
|
|
3797
|
+
});
|
|
3798
|
+
}
|
|
3799
|
+
catch {
|
|
3800
|
+
return null;
|
|
3801
|
+
}
|
|
3802
|
+
}
|
|
3803
|
+
// Read an attribute off the first element matching `selector` (e.g. the href
|
|
3804
|
+
// of an OAuth affordance). null when absent or the selector doesn't resolve.
|
|
3805
|
+
async getElementAttribute(selector, attr) {
|
|
3806
|
+
if (!this.page)
|
|
3807
|
+
return null;
|
|
3808
|
+
try {
|
|
3809
|
+
return await this.page.locator(selector).first().getAttribute(attr);
|
|
3810
|
+
}
|
|
3811
|
+
catch {
|
|
3812
|
+
return null;
|
|
3813
|
+
}
|
|
3814
|
+
}
|
|
3815
|
+
// Submit a programmatic POST form to `action` with the given hidden fields,
|
|
3816
|
+
// from the CURRENT page — so the current-origin session cookies ride along.
|
|
3817
|
+
// Recovers OmniAuth 2.0 POST-only OAuth (the GET-click hit "Authentication
|
|
3818
|
+
// passthru"): POST /…/auth/<provider> + authenticity_token → 302 to provider.
|
|
3819
|
+
async submitPostForm(action, fields) {
|
|
3820
|
+
if (!this.page)
|
|
3821
|
+
throw new Error("Browser not started");
|
|
3822
|
+
await this.page.evaluate(({ action, fields }) => {
|
|
3823
|
+
const form = document.createElement("form");
|
|
3824
|
+
form.method = "POST";
|
|
3825
|
+
form.action = action;
|
|
3826
|
+
form.style.display = "none";
|
|
3827
|
+
for (const [k, v] of Object.entries(fields)) {
|
|
3828
|
+
const input = document.createElement("input");
|
|
3829
|
+
input.type = "hidden";
|
|
3830
|
+
input.name = k;
|
|
3831
|
+
input.value = v;
|
|
3832
|
+
form.appendChild(input);
|
|
3833
|
+
}
|
|
3834
|
+
document.body.appendChild(form);
|
|
3835
|
+
form.submit();
|
|
3836
|
+
}, { action, fields });
|
|
3837
|
+
try {
|
|
3838
|
+
await this.page.waitForLoadState("domcontentloaded", { timeout: 30000 });
|
|
3839
|
+
}
|
|
3840
|
+
catch {
|
|
3841
|
+
// best-effort — the consent loop re-reads state regardless
|
|
3842
|
+
}
|
|
3843
|
+
}
|
|
3766
3844
|
// Does the page sign in with Google via Google Identity Services (GSI)
|
|
3767
3845
|
// rather than classic OAuth redirect? GSI renders its button in a
|
|
3768
3846
|
// cross-origin iframe (accounts.google.com/gsi/button) and/or exposes the
|
|
@@ -4089,20 +4167,75 @@ export class BrowserController {
|
|
|
4089
4167
|
// fall through to the approve-button path
|
|
4090
4168
|
}
|
|
4091
4169
|
}
|
|
4092
|
-
// Consent screen: the approve control's
|
|
4093
|
-
// "Continue"
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4170
|
+
// Consent screen: the approve control's name varies by Google's
|
|
4171
|
+
// consent layout — "Continue", "Allow", "Allow access" (the
|
|
4172
|
+
// /signin/oauth/consent?part=… variant meilisearch hits). Match on a
|
|
4173
|
+
// startsWith verb set (not exact) so "Allow access" resolves, while
|
|
4174
|
+
// the verbs exclude Cancel/Deny/Back/No. Wait for the button to
|
|
4175
|
+
// render — the consent SPA paints the approve control a beat after
|
|
4176
|
+
// domcontentloaded, and the old exact-match + no-wait returned false
|
|
4177
|
+
// before it appeared.
|
|
4178
|
+
const APPROVE_NAME = /^(?:continue|allow|accept|agree)\b/i;
|
|
4179
|
+
const approve = this.page.getByRole("button", { name: APPROVE_NAME }).first();
|
|
4180
|
+
try {
|
|
4181
|
+
await approve.waitFor({ state: "visible", timeout: 8000 });
|
|
4182
|
+
}
|
|
4183
|
+
catch {
|
|
4184
|
+
// not visible within the window — fall through to the DOM-scan path
|
|
4185
|
+
}
|
|
4097
4186
|
if ((await approve.count().catch(() => 0)) > 0) {
|
|
4098
4187
|
try {
|
|
4099
4188
|
await approve.click({ timeout: 8000 });
|
|
4100
4189
|
return true;
|
|
4101
4190
|
}
|
|
4102
4191
|
catch {
|
|
4103
|
-
|
|
4192
|
+
// fall through to the DOM-scan fallback
|
|
4104
4193
|
}
|
|
4105
4194
|
}
|
|
4195
|
+
// Fallback: scan the DOM for an approve-like clickable when the ARIA
|
|
4196
|
+
// role query missed it (Google occasionally renders the control as a
|
|
4197
|
+
// <div role>/<span> or an <input type=submit value="Allow access">).
|
|
4198
|
+
// Click the first visible candidate whose text is an approve verb and
|
|
4199
|
+
// is NOT a cancel/deny/back. Log what was visible on failure.
|
|
4200
|
+
const clicked = await this.page
|
|
4201
|
+
.evaluate(() => {
|
|
4202
|
+
const APPROVE = /^(?:continue|allow|accept|agree)\b/i;
|
|
4203
|
+
const DENY = /\b(?:cancel|deny|back|no\b|not now|reject)\b/i;
|
|
4204
|
+
const els = Array.from(document.querySelectorAll('button, input[type="submit"], [role="button"], a[href]'));
|
|
4205
|
+
for (const el of els) {
|
|
4206
|
+
const r = el.getBoundingClientRect();
|
|
4207
|
+
if (r.width < 2 || r.height < 2)
|
|
4208
|
+
continue;
|
|
4209
|
+
const t = (el.textContent || el.value || "").trim();
|
|
4210
|
+
if (t.length === 0 || t.length > 40)
|
|
4211
|
+
continue;
|
|
4212
|
+
if (DENY.test(t))
|
|
4213
|
+
continue;
|
|
4214
|
+
if (APPROVE.test(t)) {
|
|
4215
|
+
el.click();
|
|
4216
|
+
return t.slice(0, 40);
|
|
4217
|
+
}
|
|
4218
|
+
}
|
|
4219
|
+
return null;
|
|
4220
|
+
})
|
|
4221
|
+
.catch(() => null);
|
|
4222
|
+
if (clicked !== null)
|
|
4223
|
+
return true;
|
|
4224
|
+
const seen = await this.page
|
|
4225
|
+
.evaluate(() => {
|
|
4226
|
+
const els = Array.from(document.querySelectorAll('button, input[type="submit"], [role="button"]'));
|
|
4227
|
+
return els
|
|
4228
|
+
.filter((b) => {
|
|
4229
|
+
const r = b.getBoundingClientRect();
|
|
4230
|
+
return r.width > 1 && r.height > 1;
|
|
4231
|
+
})
|
|
4232
|
+
.slice(0, 8)
|
|
4233
|
+
.map((b) => (b.textContent || b.value || "").trim().slice(0, 40))
|
|
4234
|
+
.filter((t) => t.length > 0);
|
|
4235
|
+
})
|
|
4236
|
+
.catch(() => []);
|
|
4237
|
+
console.error(`[universal-bot] Google advanceOAuthConsent failed — visible buttons: ` +
|
|
4238
|
+
`${seen.length === 0 ? "<none>" : seen.map((s) => JSON.stringify(s)).join(", ")}`);
|
|
4106
4239
|
return false;
|
|
4107
4240
|
}
|
|
4108
4241
|
// Restore the product page once the OAuth handshake completes. A
|