@trusty-squire/mcp 1.0.0 → 1.0.1-rc.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.
Files changed (177) hide show
  1. package/README.md +9 -15
  2. package/dist/bot/credential-text.d.ts +4 -0
  3. package/dist/bot/credential-text.d.ts.map +1 -0
  4. package/dist/bot/credential-text.js +297 -0
  5. package/dist/bot/credential-text.js.map +1 -0
  6. package/dist/bot/email-verification.d.ts +2 -0
  7. package/dist/bot/email-verification.d.ts.map +1 -0
  8. package/dist/bot/email-verification.js +47 -0
  9. package/dist/bot/email-verification.js.map +1 -0
  10. package/dist/bot/google-login.d.ts +1 -0
  11. package/dist/bot/google-login.d.ts.map +1 -1
  12. package/dist/bot/google-login.js +47 -2
  13. package/dist/bot/google-login.js.map +1 -1
  14. package/dist/bot/index.d.ts +0 -40
  15. package/dist/bot/index.d.ts.map +1 -1
  16. package/dist/bot/index.js +8 -156
  17. package/dist/bot/index.js.map +1 -1
  18. package/dist/bot/login-state.d.ts +2 -0
  19. package/dist/bot/login-state.d.ts.map +1 -1
  20. package/dist/bot/login-state.js +44 -0
  21. package/dist/bot/login-state.js.map +1 -1
  22. package/dist/bot/oauth-detect.d.ts +8 -0
  23. package/dist/bot/oauth-detect.d.ts.map +1 -0
  24. package/dist/bot/oauth-detect.js +329 -0
  25. package/dist/bot/oauth-detect.js.map +1 -0
  26. package/dist/bot/onboarding-capture.d.ts +1 -1
  27. package/dist/bot/onboarding-capture.d.ts.map +1 -1
  28. package/dist/bot/operator-recipe.d.ts +24 -24
  29. package/dist/bot/promote-to-skill.d.ts +1 -1
  30. package/dist/bot/promote-to-skill.d.ts.map +1 -1
  31. package/dist/bot/promote-to-skill.js +7 -5
  32. package/dist/bot/promote-to-skill.js.map +1 -1
  33. package/dist/bot/provision-session.d.ts +10 -0
  34. package/dist/bot/provision-session.d.ts.map +1 -1
  35. package/dist/bot/provision-session.js +126 -5
  36. package/dist/bot/provision-session.js.map +1 -1
  37. package/dist/bot/provision-types.d.ts +69 -0
  38. package/dist/bot/provision-types.d.ts.map +1 -0
  39. package/dist/bot/provision-types.js +9 -0
  40. package/dist/bot/provision-types.js.map +1 -0
  41. package/dist/bot/semantic-transition.d.ts +1 -1
  42. package/dist/bot/semantic-transition.d.ts.map +1 -1
  43. package/dist/skill-cli/cli.d.ts +1 -7
  44. package/dist/skill-cli/cli.d.ts.map +1 -1
  45. package/dist/skill-cli/cli.js +1 -69
  46. package/dist/skill-cli/cli.js.map +1 -1
  47. package/dist/tools/provision-drive.d.ts +48 -8
  48. package/dist/tools/provision-drive.d.ts.map +1 -1
  49. package/dist/tools/provision-drive.js +127 -2
  50. package/dist/tools/provision-drive.js.map +1 -1
  51. package/dist/tools/store-credential.d.ts +4 -4
  52. package/dist/tools/use-credential.d.ts +6 -6
  53. package/package.json +2 -6
  54. package/dist/bot/affordance-probe.d.ts +0 -15
  55. package/dist/bot/affordance-probe.d.ts.map +0 -1
  56. package/dist/bot/affordance-probe.js +0 -61
  57. package/dist/bot/affordance-probe.js.map +0 -1
  58. package/dist/bot/agent.d.ts +0 -449
  59. package/dist/bot/agent.d.ts.map +0 -1
  60. package/dist/bot/agent.js +0 -13634
  61. package/dist/bot/agent.js.map +0 -1
  62. package/dist/bot/debug.d.ts +0 -3
  63. package/dist/bot/debug.d.ts.map +0 -1
  64. package/dist/bot/debug.js +0 -35
  65. package/dist/bot/debug.js.map +0 -1
  66. package/dist/bot/email-code-fetcher.d.ts +0 -5
  67. package/dist/bot/email-code-fetcher.d.ts.map +0 -1
  68. package/dist/bot/email-code-fetcher.js +0 -33
  69. package/dist/bot/email-code-fetcher.js.map +0 -1
  70. package/dist/bot/flow-engine.d.ts +0 -7
  71. package/dist/bot/flow-engine.d.ts.map +0 -1
  72. package/dist/bot/flow-engine.js +0 -13
  73. package/dist/bot/flow-engine.js.map +0 -1
  74. package/dist/bot/form-fill.d.ts +0 -172
  75. package/dist/bot/form-fill.d.ts.map +0 -1
  76. package/dist/bot/form-fill.js +0 -444
  77. package/dist/bot/form-fill.js.map +0 -1
  78. package/dist/bot/inbox-client.d.ts +0 -45
  79. package/dist/bot/inbox-client.d.ts.map +0 -1
  80. package/dist/bot/inbox-client.js +0 -220
  81. package/dist/bot/inbox-client.js.map +0 -1
  82. package/dist/bot/llm-client.d.ts +0 -89
  83. package/dist/bot/llm-client.d.ts.map +0 -1
  84. package/dist/bot/llm-client.js +0 -493
  85. package/dist/bot/llm-client.js.map +0 -1
  86. package/dist/bot/nav-search.d.ts +0 -114
  87. package/dist/bot/nav-search.d.ts.map +0 -1
  88. package/dist/bot/nav-search.js +0 -670
  89. package/dist/bot/nav-search.js.map +0 -1
  90. package/dist/bot/notify-api.d.ts +0 -9
  91. package/dist/bot/notify-api.d.ts.map +0 -1
  92. package/dist/bot/notify-api.js +0 -49
  93. package/dist/bot/notify-api.js.map +0 -1
  94. package/dist/bot/oauth-flow.d.ts +0 -48
  95. package/dist/bot/oauth-flow.d.ts.map +0 -1
  96. package/dist/bot/oauth-flow.js +0 -111
  97. package/dist/bot/oauth-flow.js.map +0 -1
  98. package/dist/bot/observation-frame.d.ts +0 -16
  99. package/dist/bot/observation-frame.d.ts.map +0 -1
  100. package/dist/bot/observation-frame.js +0 -22
  101. package/dist/bot/observation-frame.js.map +0 -1
  102. package/dist/bot/post-signup-action-executor.d.ts +0 -53
  103. package/dist/bot/post-signup-action-executor.d.ts.map +0 -1
  104. package/dist/bot/post-signup-action-executor.js +0 -104
  105. package/dist/bot/post-signup-action-executor.js.map +0 -1
  106. package/dist/bot/post-signup-flow.d.ts +0 -51
  107. package/dist/bot/post-signup-flow.d.ts.map +0 -1
  108. package/dist/bot/post-signup-flow.js +0 -155
  109. package/dist/bot/post-signup-flow.js.map +0 -1
  110. package/dist/bot/post-signup-login-flow.d.ts +0 -28
  111. package/dist/bot/post-signup-login-flow.d.ts.map +0 -1
  112. package/dist/bot/post-signup-login-flow.js +0 -35
  113. package/dist/bot/post-signup-login-flow.js.map +0 -1
  114. package/dist/bot/post-signup-recovery-state.d.ts +0 -150
  115. package/dist/bot/post-signup-recovery-state.d.ts.map +0 -1
  116. package/dist/bot/post-signup-recovery-state.js +0 -253
  117. package/dist/bot/post-signup-recovery-state.js.map +0 -1
  118. package/dist/bot/post-signup-synthetic-capture.d.ts +0 -43
  119. package/dist/bot/post-signup-synthetic-capture.d.ts.map +0 -1
  120. package/dist/bot/post-signup-synthetic-capture.js +0 -84
  121. package/dist/bot/post-signup-synthetic-capture.js.map +0 -1
  122. package/dist/bot/prewarm-cache.d.ts +0 -3
  123. package/dist/bot/prewarm-cache.d.ts.map +0 -1
  124. package/dist/bot/prewarm-cache.js +0 -91
  125. package/dist/bot/prewarm-cache.js.map +0 -1
  126. package/dist/bot/read-otp.d.ts +0 -21
  127. package/dist/bot/read-otp.d.ts.map +0 -1
  128. package/dist/bot/read-otp.js +0 -170
  129. package/dist/bot/read-otp.js.map +0 -1
  130. package/dist/bot/redact.d.ts +0 -3
  131. package/dist/bot/redact.d.ts.map +0 -1
  132. package/dist/bot/redact.js +0 -132
  133. package/dist/bot/redact.js.map +0 -1
  134. package/dist/bot/rejection-record.d.ts +0 -70
  135. package/dist/bot/rejection-record.d.ts.map +0 -1
  136. package/dist/bot/rejection-record.js +0 -76
  137. package/dist/bot/rejection-record.js.map +0 -1
  138. package/dist/bot/replay-skill.d.ts +0 -180
  139. package/dist/bot/replay-skill.d.ts.map +0 -1
  140. package/dist/bot/replay-skill.js +0 -4361
  141. package/dist/bot/replay-skill.js.map +0 -1
  142. package/dist/bot/signup-lock.d.ts +0 -17
  143. package/dist/bot/signup-lock.d.ts.map +0 -1
  144. package/dist/bot/signup-lock.js +0 -174
  145. package/dist/bot/signup-lock.js.map +0 -1
  146. package/dist/bot/signup-oauth-flow.d.ts +0 -16
  147. package/dist/bot/signup-oauth-flow.d.ts.map +0 -1
  148. package/dist/bot/signup-oauth-flow.js +0 -31
  149. package/dist/bot/signup-oauth-flow.js.map +0 -1
  150. package/dist/bot/state-classifier.d.ts +0 -18
  151. package/dist/bot/state-classifier.d.ts.map +0 -1
  152. package/dist/bot/state-classifier.js +0 -127
  153. package/dist/bot/state-classifier.js.map +0 -1
  154. package/dist/bot/terminal-gate.d.ts +0 -22
  155. package/dist/bot/terminal-gate.d.ts.map +0 -1
  156. package/dist/bot/terminal-gate.js +0 -184
  157. package/dist/bot/terminal-gate.js.map +0 -1
  158. package/dist/bot/unwinnable-services.d.ts +0 -7
  159. package/dist/bot/unwinnable-services.d.ts.map +0 -1
  160. package/dist/bot/unwinnable-services.js +0 -69
  161. package/dist/bot/unwinnable-services.js.map +0 -1
  162. package/dist/data/service-categories.d.ts +0 -11
  163. package/dist/data/service-categories.d.ts.map +0 -1
  164. package/dist/data/service-categories.js +0 -149
  165. package/dist/data/service-categories.js.map +0 -1
  166. package/dist/provision-run.d.ts +0 -45
  167. package/dist/provision-run.d.ts.map +0 -1
  168. package/dist/provision-run.js +0 -99
  169. package/dist/provision-run.js.map +0 -1
  170. package/dist/tools/provision-any.d.ts +0 -207
  171. package/dist/tools/provision-any.d.ts.map +0 -1
  172. package/dist/tools/provision-any.js +0 -1519
  173. package/dist/tools/provision-any.js.map +0 -1
  174. package/dist/tools/signup-telemetry.d.ts +0 -38
  175. package/dist/tools/signup-telemetry.d.ts.map +0 -1
  176. package/dist/tools/signup-telemetry.js +0 -103
  177. package/dist/tools/signup-telemetry.js.map +0 -1
@@ -11,36 +11,36 @@ declare const inputSchema: z.ZodEffects<z.ZodObject<{
11
11
  auth_shape: z.ZodOptional<z.ZodString>;
12
12
  }, "strip", z.ZodTypeAny, {
13
13
  service: string;
14
+ value?: string | undefined;
14
15
  type?: string | undefined;
15
16
  label?: string | undefined;
16
- value?: string | undefined;
17
17
  fields?: Record<string, string> | undefined;
18
18
  env_var_suggestion?: string | undefined;
19
19
  observed_hosts?: string[] | undefined;
20
20
  auth_shape?: string | undefined;
21
21
  }, {
22
22
  service: string;
23
+ value?: string | undefined;
23
24
  type?: string | undefined;
24
25
  label?: string | undefined;
25
- value?: string | undefined;
26
26
  fields?: Record<string, string> | undefined;
27
27
  env_var_suggestion?: string | undefined;
28
28
  observed_hosts?: string[] | undefined;
29
29
  auth_shape?: string | undefined;
30
30
  }>, {
31
31
  service: string;
32
+ value?: string | undefined;
32
33
  type?: string | undefined;
33
34
  label?: string | undefined;
34
- value?: string | undefined;
35
35
  fields?: Record<string, string> | undefined;
36
36
  env_var_suggestion?: string | undefined;
37
37
  observed_hosts?: string[] | undefined;
38
38
  auth_shape?: string | undefined;
39
39
  }, {
40
40
  service: string;
41
+ value?: string | undefined;
41
42
  type?: string | undefined;
42
43
  label?: string | undefined;
43
- value?: string | undefined;
44
44
  fields?: Record<string, string> | undefined;
45
45
  env_var_suggestion?: string | undefined;
46
46
  observed_hosts?: string[] | undefined;
@@ -12,22 +12,22 @@ declare const inputSchema: z.ZodEffects<z.ZodObject<{
12
12
  }, "strip", z.ZodTypeAny, {
13
13
  method: string;
14
14
  url: string;
15
- body?: string | undefined;
16
15
  headers?: Record<string, string> | undefined;
16
+ body?: string | undefined;
17
17
  query?: Record<string, string> | undefined;
18
18
  }, {
19
19
  method: string;
20
20
  url: string;
21
- body?: string | undefined;
22
21
  headers?: Record<string, string> | undefined;
22
+ body?: string | undefined;
23
23
  query?: Record<string, string> | undefined;
24
24
  }>;
25
25
  }, "strip", z.ZodTypeAny, {
26
26
  http: {
27
27
  method: string;
28
28
  url: string;
29
- body?: string | undefined;
30
29
  headers?: Record<string, string> | undefined;
30
+ body?: string | undefined;
31
31
  query?: Record<string, string> | undefined;
32
32
  };
33
33
  service?: string | undefined;
@@ -36,8 +36,8 @@ declare const inputSchema: z.ZodEffects<z.ZodObject<{
36
36
  http: {
37
37
  method: string;
38
38
  url: string;
39
- body?: string | undefined;
40
39
  headers?: Record<string, string> | undefined;
40
+ body?: string | undefined;
41
41
  query?: Record<string, string> | undefined;
42
42
  };
43
43
  service?: string | undefined;
@@ -46,8 +46,8 @@ declare const inputSchema: z.ZodEffects<z.ZodObject<{
46
46
  http: {
47
47
  method: string;
48
48
  url: string;
49
- body?: string | undefined;
50
49
  headers?: Record<string, string> | undefined;
50
+ body?: string | undefined;
51
51
  query?: Record<string, string> | undefined;
52
52
  };
53
53
  service?: string | undefined;
@@ -56,8 +56,8 @@ declare const inputSchema: z.ZodEffects<z.ZodObject<{
56
56
  http: {
57
57
  method: string;
58
58
  url: string;
59
- body?: string | undefined;
60
59
  headers?: Record<string, string> | undefined;
60
+ body?: string | undefined;
61
61
  query?: Record<string, string> | undefined;
62
62
  };
63
63
  service?: string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trusty-squire/mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.1-rc.1",
4
4
  "license": "MIT",
5
5
  "mcpName": "io.github.Trusty-Squire/mcp",
6
6
  "type": "module",
@@ -11,11 +11,7 @@
11
11
  },
12
12
  "files": [
13
13
  "dist",
14
- "assets",
15
- "!dist/bot/eval-*",
16
- "!dist/bot/build-corpus.*",
17
- "!dist/bot/label-target.*",
18
- "!dist/bot/failure-stats.*"
14
+ "assets"
19
15
  ],
20
16
  "publishConfig": {
21
17
  "access": "public"
@@ -1,15 +0,0 @@
1
- import type { BrowserController, InteractiveElement } from "./browser.js";
2
- import { type OAuthProviderId } from "./oauth-providers.js";
3
- export interface PageAffordances {
4
- providers: OAuthProviderId[];
5
- has_email_signup: boolean;
6
- has_email_field: boolean;
7
- card_gate: boolean;
8
- interstitial: boolean;
9
- final_url: string;
10
- inventory_size: number;
11
- }
12
- export type AffordanceClassification = Omit<PageAffordances, "final_url" | "inventory_size">;
13
- export declare function classifyAffordances(inventory: readonly InteractiveElement[], text: string): AffordanceClassification;
14
- export declare function probeAffordances(browser: BrowserController, url: string): Promise<PageAffordances>;
15
- //# sourceMappingURL=affordance-probe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"affordance-probe.d.ts","sourceRoot":"","sources":["../../src/bot/affordance-probe.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI7E,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,eAAe,EACf,WAAW,GAAG,gBAAgB,CAC/B,CAAC;AAKF,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,IAAI,EAAE,MAAM,GACX,wBAAwB,CA+B1B;AAOD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,CAAC,CAe1B"}
@@ -1,61 +0,0 @@
1
- // affordance-probe.ts — the ONE canonical "load a page, read its
2
- // affordances" primitive. The GROUND TRUTH for "what does this page
3
- // actually offer": OAuth providers, an email-signup form, a card gate,
4
- // an anti-bot interstitial.
5
- //
6
- // Why this module exists: the canonical "BrowserController.start → goto →
7
- // extract → classify" routine. The verify loop uses it to distinguish a
8
- // brittle replay failure (page still servable) from genuine skill rot.
9
- //
10
- // The classification is split into a PURE function (classifyAffordances)
11
- // that takes an already-extracted inventory + text — unit-testable
12
- // without a browser — and an async probeAffordances that does the DOM
13
- // read and delegates to the pure classifier.
14
- import { classifyInterstitialText } from "./browser.js";
15
- import { findOAuthButton } from "./agent.js";
16
- import { OAUTH_PROVIDERS } from "./oauth-providers.js";
17
- const PROVIDER_IDS = Object.keys(OAUTH_PROVIDERS);
18
- // Pure: classify a page's interactive inventory + visible text into
19
- // affordances. No browser, no I/O — given the same inputs it always
20
- // returns the same result, which is what makes it unit-testable.
21
- export function classifyAffordances(inventory, text) {
22
- const providers = PROVIDER_IDS.filter((p) => findOAuthButton(inventory, p) !== null);
23
- const isField = (el, ...types) => el.tag === "input" &&
24
- (types.includes(el.type ?? "") ||
25
- types.some((t) => (el.name ?? "").toLowerCase().includes(t)));
26
- const has_email = inventory.some((el) => isField(el, "email") || /email/i.test(el.name ?? el.placeholder ?? ""));
27
- const has_password = inventory.some((el) => isField(el, "password"));
28
- const card_field = inventory.some((el) => el.tag === "input" &&
29
- /card|cc-?number|cardnumber|cvc|cvv/i.test(`${el.name ?? ""} ${el.placeholder ?? ""} ${el.ariaLabel ?? ""}`));
30
- const card_text = /\b(credit card|payment method|card number|billing (information|details))\b/i.test(text);
31
- const { onInterstitial, verificationPassed } = classifyInterstitialText(text);
32
- return {
33
- providers,
34
- has_email_signup: has_email && has_password,
35
- has_email_field: has_email,
36
- card_gate: card_field || card_text,
37
- interstitial: onInterstitial && !verificationPassed,
38
- };
39
- }
40
- // Load `url` in the given (already-started) browser and report its
41
- // affordances. The caller owns the BrowserController lifecycle — this
42
- // only navigates + reads, so it can be reused mid-flow (e.g. the
43
- // verifier's auto-probe-before-retire guard borrows the browser it
44
- // already has open).
45
- export async function probeAffordances(browser, url) {
46
- await browser.goto(url);
47
- await browser.wait(3);
48
- const [inventory, text] = await Promise.all([
49
- browser.extractInteractiveElements(),
50
- browser
51
- .extractText()
52
- .then((s) => s.slice(0, 6000))
53
- .catch(() => ""),
54
- ]);
55
- return {
56
- ...classifyAffordances(inventory, text),
57
- final_url: browser.currentUrl(),
58
- inventory_size: inventory.length,
59
- };
60
- }
61
- //# sourceMappingURL=affordance-probe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"affordance-probe.js","sourceRoot":"","sources":["../../src/bot/affordance-probe.ts"],"names":[],"mappings":"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"}
@@ -1,449 +0,0 @@
1
- import type { BrowserController, CaptchaKind, CaptchaVariant, InteractiveElement } from "./browser.js";
2
- import { type OAuthProviderId } from "./oauth-providers.js";
3
- import { TwoCaptchaSolver } from "./captcha-solver-2captcha.js";
4
- export { isAtAccountReviewGate, isAtOAuthAccountLinkVerificationGate, isAtPaywall, isOnboardingReviewGate, isSignupsClosed, } from "./terminal-gate.js";
5
- export { extractAllLabeledTokensFromReason, hasAnyExtractedCredential, isMultiCredBundle, terminalReasonInvalidatesCredentialSuccess, } from "./credential-extraction-flow.js";
6
- import type { FailureStage } from "./failure-stage.js";
7
- import { type LLMClient, type LLMPair } from "./llm-client.js";
8
- export interface AgentInbox {
9
- waitForEmail(input: {
10
- alias: string;
11
- matcher: {
12
- subject?: RegExp;
13
- from?: RegExp;
14
- body_contains?: string;
15
- };
16
- timeout_seconds: number;
17
- }): Promise<{
18
- subject: string;
19
- from_address: string;
20
- parsed_links: ReadonlyArray<string>;
21
- parsed_codes: ReadonlyArray<string>;
22
- body_html?: string | null;
23
- }>;
24
- }
25
- export declare function verificationLinkFailed(pageText: string): boolean;
26
- export declare function parseFirebaseEmailAction(url: string): {
27
- apiKey: string;
28
- oobCode: string;
29
- } | null;
30
- export declare function applyFirebaseEmailVerification(apiKey: string, oobCode: string): Promise<{
31
- ok: boolean;
32
- email?: string;
33
- error?: string;
34
- }>;
35
- export declare function submitWasRejected(pageText: string): boolean;
36
- export declare function expectsVerificationEmail(pageText: string): boolean;
37
- export declare function detectEmailLinkGate(url: string, title: string, pageText: string, inventory?: readonly InteractiveElement[]): boolean;
38
- export declare function isBrowserNavigationErrorPage(url: string, title: string, pageText: string): boolean;
39
- export declare class LLMCallBudgetExceeded extends Error {
40
- constructor(budget: number);
41
- }
42
- export declare class OAuthSessionNotPersistedError extends Error {
43
- constructor(message: string);
44
- }
45
- export declare function serviceSlug(service: string): string;
46
- export declare function hasCuratedServiceKeyPath(service: string): boolean;
47
- export declare function shouldRevealBeforeCredentialSweep(input: {
48
- url: string;
49
- pageText: string;
50
- }): boolean;
51
- export declare function credentialActionSignature(step: PostVerifyStep, inventory: readonly InteractiveElement[]): string | null;
52
- export declare function isRepeatingCredentialActionCycle(signatures: readonly string[], pageText?: string): boolean;
53
- export declare function detectExistingAccountNoExtract(input: {
54
- url: string;
55
- pageText: string;
56
- lastPlannerReason: string;
57
- }): boolean;
58
- export declare function findCreateKeyAffordance(inventory: readonly InteractiveElement[]): InteractiveElement | null;
59
- export declare function findKeyModalSubmit(inventory: readonly InteractiveElement[], excludeSelector: string): InteractiveElement | null;
60
- export declare function findKeyNameInput(inventory: readonly InteractiveElement[]): InteractiveElement | null;
61
- export declare function findWizardEscapeNavLink(inventory: readonly InteractiveElement[], alreadyClicked?: ReadonlySet<string>): InteractiveElement | null;
62
- export declare function findApiKeysNavLink(inventory: readonly InteractiveElement[], alreadyClicked?: ReadonlySet<string>): InteractiveElement | null;
63
- export declare function findRenderAccountSettingsLink(inventory: readonly InteractiveElement[], alreadyClicked?: ReadonlySet<string>): InteractiveElement | null;
64
- export declare function findRenderAccountMenuTrigger(inventory: readonly InteractiveElement[]): InteractiveElement | null;
65
- export declare function findRelocatedCredentialPageRecoveryLink(input: {
66
- currentUrl: string;
67
- pageText: string;
68
- inventory: readonly InteractiveElement[];
69
- alreadyClicked?: ReadonlySet<string> | undefined;
70
- }): InteractiveElement | null;
71
- export declare function findAccountScopeListEntry(input: {
72
- currentUrl: string;
73
- pageText: string;
74
- inventory: readonly InteractiveElement[];
75
- alreadyClicked?: ReadonlySet<string> | undefined;
76
- }): InteractiveElement | null;
77
- export declare function findPendingResourceSetupSubmit(inventory: readonly InteractiveElement[]): InteractiveElement | null;
78
- export declare function pickStuckLoopFallbackUrl(currentUrl: string, alreadyTried: ReadonlySet<string>, service?: string, appUrl?: string): string | null;
79
- export declare function guessSignupUrl(service: string): string;
80
- export declare function firstHttpsUrl(text: string): string | null;
81
- export declare function resolveSignupUrl(service: string, llm: LLMClient | null | undefined, opts?: {
82
- log?: (line: string) => void;
83
- lookupSkillUrl?: () => Promise<string | null>;
84
- }): Promise<string>;
85
- export declare function isGoogleSearchUrl(url: string): boolean;
86
- export declare function hasSignupIntentPath(url: string): boolean;
87
- export declare function isMarketingAuthDeadEndUrl(url: string): boolean;
88
- export declare function isAuthEntryPageForPreExtraction(input: {
89
- url: string;
90
- html?: string;
91
- inventory: readonly InteractiveElement[];
92
- }): boolean;
93
- export declare function hasNativeSignupForm(inventory: readonly InteractiveElement[]): boolean;
94
- export declare function googleConsentIsBasicFromDom(bodyText: string): boolean;
95
- export declare function googleGisConsentIsBasic(bodyText: string): boolean;
96
- export declare function pickChooserAccount(targetEmail: string | undefined, identifiers: readonly string[]): string | null;
97
- export interface SignupTask {
98
- service: string;
99
- signupUrl?: string | undefined;
100
- lookupSkillUrl?: ((service: string) => Promise<string | null>) | undefined;
101
- email: string;
102
- generatePassword: () => string;
103
- inbox?: AgentInbox | undefined;
104
- verificationTimeoutSeconds?: number | undefined;
105
- postVerifyMaxRounds?: number | undefined;
106
- oauthProvider?: OAuthProviderId | undefined;
107
- oauthAccountEmail?: string | undefined;
108
- forceForm?: boolean | undefined;
109
- scopeHint?: string | undefined;
110
- stepsSink?: string[] | undefined;
111
- allowExtraOAuthScopes?: readonly string[] | undefined;
112
- allowBlindOAuthConsent?: boolean | undefined;
113
- machineToken?: string | undefined;
114
- apiBase?: string | undefined;
115
- allowOperatorInboxOtp?: boolean | undefined;
116
- }
117
- export type ExtractFailureUploader = (input: {
118
- service: string;
119
- url: string;
120
- title: string;
121
- step_label: string;
122
- extract_reason: string;
123
- candidates: ReadonlyArray<string>;
124
- html: string;
125
- screenshot_jpeg_base64?: string;
126
- }) => Promise<void>;
127
- export type RoundUploader = (input: {
128
- service: string;
129
- round: number;
130
- kind: string;
131
- url: string;
132
- title: string;
133
- inventory_count: number;
134
- observed_reason: string;
135
- html: string;
136
- screenshot_jpeg_base64?: string;
137
- }) => Promise<void>;
138
- export declare function imageMediaType(base64: string): "image/png" | "image/jpeg";
139
- export interface SignupResult {
140
- success: boolean;
141
- credentials?: {
142
- api_key?: string;
143
- username?: string;
144
- password?: string;
145
- [key: string]: string | undefined;
146
- };
147
- error?: string;
148
- steps: string[];
149
- failure_stage?: FailureStage;
150
- llm_calls?: number;
151
- llm_backends?: readonly string[];
152
- browser_channel?: string | null;
153
- proxied?: boolean;
154
- stealth_profile?: "baseline" | "cdp_hardened";
155
- via?: "bot" | "skill";
156
- skill_id?: string;
157
- skill_version?: string;
158
- captcha?: {
159
- kind: CaptchaKind;
160
- variant: CaptchaVariant;
161
- challenge_rendered: boolean;
162
- blocked: boolean;
163
- };
164
- }
165
- export type FillAction = {
166
- kind: "fill";
167
- selector: string;
168
- value_kind: FillValueKind;
169
- literal?: string;
170
- reason: string;
171
- } | {
172
- kind: "check";
173
- selector: string;
174
- reason: string;
175
- } | {
176
- kind: "select";
177
- selector: string;
178
- reason: string;
179
- option_text?: string;
180
- } | {
181
- kind: "click";
182
- selector: string;
183
- reason: string;
184
- };
185
- export interface SignupPlan {
186
- actions: FillAction[];
187
- submit_selector: string;
188
- confidence: "high" | "medium" | "low";
189
- notes?: string;
190
- }
191
- export declare function planSimpleEmailOnlySignup(inventory: readonly InteractiveElement[]): SignupPlan | null;
192
- export type PostVerifyStep = {
193
- kind: "done";
194
- reason: string;
195
- } | {
196
- kind: "extract";
197
- reason: string;
198
- } | {
199
- kind: "login";
200
- reason: string;
201
- } | {
202
- kind: "click";
203
- selector: string;
204
- reason: string;
205
- } | {
206
- kind: "fill";
207
- selector: string;
208
- value: string;
209
- reason: string;
210
- } | {
211
- kind: "select";
212
- selector: string;
213
- reason: string;
214
- option_text?: string;
215
- } | {
216
- kind: "check";
217
- selector: string;
218
- reason: string;
219
- } | {
220
- kind: "scroll";
221
- selector?: string;
222
- reason: string;
223
- } | {
224
- kind: "navigate";
225
- url: string;
226
- reason: string;
227
- } | {
228
- kind: "wait";
229
- seconds: number;
230
- reason: string;
231
- };
232
- export declare function coercePostVerifyIdentityFillStep(step: PostVerifyStep, inventory: readonly InteractiveElement[], credentials?: {
233
- email: string;
234
- password: string;
235
- } | undefined): PostVerifyStep;
236
- declare const FILL_VALUE_KINDS: readonly ["email", "password", "name", "username", "company", "phone", "literal"];
237
- type FillValueKind = (typeof FILL_VALUE_KINDS)[number];
238
- interface SignupIdentity {
239
- firstName: string;
240
- lastName: string;
241
- displayName: string;
242
- username: string;
243
- }
244
- export declare function identityFromEmail(email: string): SignupIdentity;
245
- export declare function resolvePlannedFillValue(action: FillAction & {
246
- kind: "fill";
247
- }, fillValues: Record<FillValueKind, string>, el: InteractiveElement | undefined, identity: SignupIdentity): string;
248
- export declare function pickFormSubmitSelector(inventory: readonly InteractiveElement[]): string | null;
249
- export declare function parseSignupPlan(raw: string, allowedSelectors?: ReadonlySet<string>, fallbackSubmitSelector?: string): SignupPlan;
250
- export declare function isSubmitTimeout(reason: string): boolean;
251
- export declare function splitKeyboardShortcut(text: string): {
252
- label: string;
253
- shortcut: string | null;
254
- };
255
- export declare function formatInventory(inventory: readonly InteractiveElement[]): string;
256
- export declare function hostMatchesServiceDomain(hostname: string, serviceSlug: string): boolean;
257
- export declare function looksLike404(title: string, bodyText: string): boolean;
258
- export declare function looksLikeParkedDomainPage(title: string, bodyText: string): boolean;
259
- export declare function looksLikeBrowserNetworkError(title: string, bodyText: string): boolean;
260
- export declare function shouldAbortOAuthFirstOnDeadPage(title: string, bodyText: string): boolean;
261
- export declare function parseGoogleProjectId(url: string): string | null;
262
- export declare function isAuthenticatedGoogleConsoleUrl(url: string): boolean;
263
- export declare function looksLikeMfaEnrollmentGate(text: string): boolean;
264
- export declare function titleFromHtml(html: string): string;
265
- export declare function classifySignupHtml(html: string, title?: string): "signup" | "login" | "other";
266
- export declare function extractVerifyWallAlias(text: string): string | null;
267
- export declare function isContinuationFormStep(html: string, inventory: ReadonlyArray<InteractiveElement>): boolean;
268
- export declare function findSignupCtaElement(inventory: ReadonlyArray<InteractiveElement>): InteractiveElement | null;
269
- export declare function isSandboxDemoState(url: string, bodyText: string): boolean;
270
- export declare function findCreateAccountCta(inventory: ReadonlyArray<InteractiveElement>): InteractiveElement | null;
271
- export declare function findOAuthAccountLinkCta(pageText: string, inventory: ReadonlyArray<InteractiveElement>): InteractiveElement | null;
272
- export declare function resolveSignupUrlByProbe(hintUrl: string, serviceSlug: string, fetchText: (url: string) => Promise<{
273
- finalUrl: string;
274
- status: number;
275
- bodyText: string;
276
- } | null>, log?: (m: string) => void): Promise<string | null>;
277
- export declare function isAntiBotInterstitialText(visibleText: string): boolean;
278
- export declare function detectAntiBotBlock(html: string): string | null;
279
- export declare function detectCredentialExtractionBlock(html: string, visibleText?: string): string | null;
280
- export declare function detectAlreadySignedIn(args: {
281
- inventory: readonly InteractiveElement[];
282
- url: string;
283
- }): boolean;
284
- export declare function detectFormFillIsDashboard(plan: {
285
- readonly notes?: string;
286
- readonly actions: readonly {
287
- readonly reason: string;
288
- }[];
289
- }): boolean;
290
- export declare function detectOAuthProvidersInInventory(inventory: readonly InteractiveElement[]): OAuthProviderId[];
291
- export declare function isOauthOnlyChooser(inventory: readonly InteractiveElement[]): boolean;
292
- export declare function findOAuthButton(inventory: readonly InteractiveElement[], provider: OAuthProviderId): InteractiveElement | null;
293
- export declare function isLoginLoopState(url: string, inventory: readonly InteractiveElement[], provider: OAuthProviderId): InteractiveElement | null;
294
- export declare function pathOf(url: string): string;
295
- export type PostOAuthGate = {
296
- kind: "ok";
297
- } | {
298
- kind: "manual_login_fallback";
299
- } | {
300
- kind: "email_otp_required";
301
- } | {
302
- kind: "sso_restricted";
303
- };
304
- export declare function detectManualLoginFallback(url: string, inventory: readonly InteractiveElement[]): boolean;
305
- export declare function detectEmailOtpGate(url: string, title: string, pageText: string, inventory?: readonly InteractiveElement[]): boolean;
306
- export declare function detectSsoRestriction(pageText: string): boolean;
307
- export declare function detectOAuthRegistrationDisabled(url: string, bodyText: string): boolean;
308
- export declare function detectGoogleNoAccount(url: string, bodyText: string): boolean;
309
- export declare function isOAuthProviderHost(url: string): boolean;
310
- export declare function detectStuckOnGoogleOAuth(url: string): boolean;
311
- export declare function isGoogleConsumerPostOAuthUrl(url: string): boolean;
312
- export declare function canonicalGoogleConsoleEntryUrl(url: string): string | null;
313
- export declare function isOAuthCallbackRoute(url: string): boolean;
314
- export declare function findFirstOAuthButton(inventory: readonly InteractiveElement[], providers: readonly OAuthProviderId[]): {
315
- provider: OAuthProviderId;
316
- button: InteractiveElement;
317
- } | null;
318
- export declare function findSignInAdvanceButton(inventory: readonly InteractiveElement[], providers: readonly OAuthProviderId[]): InteractiveElement | null;
319
- export declare function orderOAuthCandidates(pinned: OAuthProviderId | undefined, loggedIn: readonly OAuthProviderId[]): OAuthProviderId[];
320
- export declare function defaultOAuthProviderForService(service: string): OAuthProviderId | undefined;
321
- export declare function parsePostVerifyStep(raw: string, allowedSelectors?: ReadonlySet<string>): PostVerifyStep;
322
- export declare function isTruncatedCapture(sourceText: string, capturedKey: string): boolean;
323
- export declare function extractQuotedTokenFromReason(reason: string, pageText: string): string | null;
324
- export declare function extractApiKeyFromText(text: string): string | null;
325
- export declare function isCredentialNoiseCandidate(candidate: string): boolean;
326
- export declare function isDocumentationUrl(url: string): boolean;
327
- export declare function pickVerificationLink(links: readonly string[]): string | null;
328
- export declare function pickVerificationLinkFromHtml(bodyHtml: string): string | null;
329
- export declare function pickServiceDomainLink(links: readonly string[], serviceHost: string | null): string | null;
330
- export declare function extractCodeFromEmailBody(email: {
331
- subject: string;
332
- body_text?: string | null;
333
- body_html?: string | null;
334
- }, recipient?: string): string | null;
335
- export declare function isVerificationCodeGate(inventory: readonly InteractiveElement[], pageText: string): boolean;
336
- export declare function pickUniqueNameField(inventory: readonly InteractiveElement[]): InteractiveElement | null;
337
- export declare function pickOnboardingSubmit(inventory: readonly InteractiveElement[]): InteractiveElement | null;
338
- export declare function isOnboardingForwardLabel(label: string): boolean;
339
- export declare function retargetCredentialAppTypeChoice(step: PostVerifyStep, inventory: readonly InteractiveElement[]): PostVerifyStep;
340
- export declare function coerceCheckboxClickStep(step: PostVerifyStep, inventory: readonly InteractiveElement[]): PostVerifyStep;
341
- export declare function retargetSubmitToDefaultedPicker(step: PostVerifyStep, inventory: readonly InteractiveElement[]): PostVerifyStep;
342
- export declare function pickOnboardingLeafChoice(inventory: readonly InteractiveElement[], alreadyTried?: ReadonlySet<string>): InteractiveElement | null;
343
- export declare function isStalledOnActions(effects: ReadonlyArray<{
344
- kind: string;
345
- pageUnchanged: boolean;
346
- selector?: string | null;
347
- }>, threshold?: number): boolean;
348
- export declare function isLoginPageUrl(url: string): boolean;
349
- export declare function isLoginPageInventory(inventory: readonly InteractiveElement[]): boolean;
350
- export declare function isSignupOrLoginRoute(url: string): boolean;
351
- export declare function isPostVerifyAuthResetRoute(input: {
352
- url: string;
353
- round: number;
354
- hasExtractedCredential: boolean;
355
- }): boolean;
356
- export declare function isGitHubOAuthRateLimitPage(url: string, htmlOrText: string): boolean;
357
- export declare function originRoot(url: string): string | null;
358
- export declare function isLoadingShellText(text: string): boolean;
359
- export declare const SHELL_MAX_ELEMENTS = 5;
360
- export declare function isLoadingShell(visibleText: string, inventoryCount: number): boolean;
361
- export declare class SpaNeverHydratedError extends Error {
362
- constructor(message: string);
363
- }
364
- export declare function isAuthProcessingText(text: string): boolean;
365
- export declare class SignupAgent {
366
- private browser;
367
- private llmCallCount;
368
- private captureChainRound;
369
- private resolvedSignupUrl;
370
- private readonly backendsUsed;
371
- private lastResolvedModel;
372
- private lastResolvedProvider;
373
- private readonly llmPair;
374
- private captchaEncounter;
375
- private committedToEmailPath;
376
- private oauthEmailFallbackTried;
377
- private invisibleCaptcha;
378
- private resultTail;
379
- private resolveCaptchaEncounter;
380
- private runCaptchaGate;
381
- private executePlan;
382
- private planExecuteWithRetry;
383
- private captureFormObservationFrame;
384
- private captureTextObservationFrame;
385
- private advancePinnedGoogleIdentifierPage;
386
- private capturePostVerifyObservationFrame;
387
- private planExecuteViaEngine;
388
- private reapplyPlanFieldActionsAfterCaptcha;
389
- private buildSubmitDisabledHint;
390
- private captureSignupFormRounds;
391
- private buildInventory;
392
- private tryApproveGoogleConsentScreen;
393
- private tryClickGoogleChooserCard;
394
- private effectiveLoggedInProviders;
395
- private resolveOAuthCandidates;
396
- private verifyPlan;
397
- private readonly extractFailureUploader?;
398
- private readonly roundUploader?;
399
- private currentService;
400
- private pendingOtpCode;
401
- private pendingVerificationAlias;
402
- private lastPostVerifyDoneReason;
403
- private currentMachineToken;
404
- private currentApiBase;
405
- private heightenedAuthFired;
406
- private readonly captchaSolver?;
407
- constructor(browser: BrowserController, llm?: LLMClient | LLMPair, opts?: {
408
- extractFailureUploader?: ExtractFailureUploader;
409
- roundUploader?: RoundUploader;
410
- captchaSolver?: TwoCaptchaSolver;
411
- googleChallengeTimeoutMs?: number;
412
- });
413
- private googleChallengeTimeoutMs;
414
- get backends(): readonly string[];
415
- private callLLM;
416
- private callLLMInner;
417
- private runPrewarm;
418
- signup(task: SignupTask): Promise<SignupResult>;
419
- private runSignup;
420
- private runOAuthFlow;
421
- private oauthAbort;
422
- private waitForGoogleChallenge;
423
- private extractGoogleNumberViaVision;
424
- private waitForGitHubChallenge;
425
- private oauthLoginFormPresent;
426
- private planSignupForm;
427
- private looksLikeValidationFailure;
428
- private pickVerificationLink;
429
- private waitForVerificationEmail;
430
- private enterEmailVerificationCode;
431
- private maybeFirePostVerifyHeightenedAuth;
432
- private extractFromDomProximity;
433
- private countPresentedCredentialLabels;
434
- private harvestVisibleCredentials;
435
- private attemptMintNewKey;
436
- private runNavSearchPhase;
437
- private postVerifyLoop;
438
- private salvageExtractCaptureIfNeeded;
439
- private writeFastPathSyntheticCapture;
440
- private loginWithCredentials;
441
- private planPostVerifyStep;
442
- private findSignupLink;
443
- private detectContinuationFormStep;
444
- private looksLikeSignupPage;
445
- private extractCredentials;
446
- private extractCredentialsViaEngine;
447
- private tryCopyButtonExtraction;
448
- }
449
- //# sourceMappingURL=agent.d.ts.map