@trusty-squire/mcp 0.2.0 → 0.3.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.
- package/dist/api-client.d.ts +13 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +5 -0
- package/dist/api-client.js.map +1 -1
- package/dist/bot/agent.d.ts +8 -0
- package/dist/bot/agent.d.ts.map +1 -1
- package/dist/bot/agent.js +139 -17
- package/dist/bot/agent.js.map +1 -1
- package/dist/bot/browser.d.ts.map +1 -1
- package/dist/bot/browser.js +8 -0
- package/dist/bot/browser.js.map +1 -1
- package/dist/bot/onboarding-capture.d.ts +17 -0
- package/dist/bot/onboarding-capture.d.ts.map +1 -0
- package/dist/bot/onboarding-capture.js +52 -0
- package/dist/bot/onboarding-capture.js.map +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-credentials.d.ts +6 -0
- package/dist/tools/list-credentials.d.ts.map +1 -0
- package/dist/tools/list-credentials.js +33 -0
- package/dist/tools/list-credentials.js.map +1 -0
- package/dist/tools/provision-any.d.ts.map +1 -1
- package/dist/tools/provision-any.js +45 -0
- package/dist/tools/provision-any.js.map +1 -1
- package/dist/tools/provision.d.ts.map +1 -1
- package/dist/tools/provision.js +4 -0
- package/dist/tools/provision.js.map +1 -1
- package/package.json +1 -1
- package/dist/bot/oauth-thin-slice.d.ts +0 -2
- package/dist/bot/oauth-thin-slice.d.ts.map +0 -1
- package/dist/bot/oauth-thin-slice.js +0 -203
- package/dist/bot/oauth-thin-slice.js.map +0 -1
package/dist/api-client.d.ts
CHANGED
|
@@ -49,6 +49,16 @@ export interface CredentialResponse {
|
|
|
49
49
|
reference: string;
|
|
50
50
|
retrieved_at: string;
|
|
51
51
|
}
|
|
52
|
+
export interface VaultCredentialSummary {
|
|
53
|
+
id: string;
|
|
54
|
+
reference: string;
|
|
55
|
+
service: string | null;
|
|
56
|
+
key_name: string | null;
|
|
57
|
+
type: string;
|
|
58
|
+
created_at: string;
|
|
59
|
+
last_retrieved_at: string | null;
|
|
60
|
+
retrieval_count: number;
|
|
61
|
+
}
|
|
52
62
|
export interface DirectoryEntry {
|
|
53
63
|
service: string;
|
|
54
64
|
latest_version: string;
|
|
@@ -76,6 +86,9 @@ export declare class ApiClient {
|
|
|
76
86
|
createRun(input: ProvisionInput): Promise<CreateRunResponse>;
|
|
77
87
|
getRun(runId: string): Promise<RunSummary>;
|
|
78
88
|
getCredential(reference: string, purpose: string): Promise<CredentialResponse>;
|
|
89
|
+
listCredentials(): Promise<{
|
|
90
|
+
credentials: VaultCredentialSummary[];
|
|
91
|
+
}>;
|
|
79
92
|
listSubscriptions(): Promise<{
|
|
80
93
|
subscriptions: unknown[];
|
|
81
94
|
}>;
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.js
CHANGED
|
@@ -39,6 +39,11 @@ export class ApiClient {
|
|
|
39
39
|
async getCredential(reference, purpose) {
|
|
40
40
|
return this.get(`/v1/credentials/${encodeURIComponent(reference)}?purpose=${encodeURIComponent(purpose)}`);
|
|
41
41
|
}
|
|
42
|
+
// Metadata list of every credential in the account's vault — no
|
|
43
|
+
// secret values. The discovery half of the credential loop.
|
|
44
|
+
async listCredentials() {
|
|
45
|
+
return this.get("/v1/vault/credentials");
|
|
46
|
+
}
|
|
42
47
|
// ── Subscriptions ─────────────────────────────────────────
|
|
43
48
|
async listSubscriptions() {
|
|
44
49
|
return this.get("/v1/subscriptions");
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,oEAAoE;AACpE,iEAAiE;AACjE,+DAA+D;AAE/D,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CACH,8GAA8G,CAC/G,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IAEnB;IACA;IAEA;IAJlB,YACkB,MAAc,EACd,IAAY,EAC5B,OAAe,EACC,IAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAEZ,SAAI,GAAJ,IAAI,CAAU;QAG9B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/agent.d.ts
CHANGED
|
@@ -90,6 +90,14 @@ export type PostVerifyStep = {
|
|
|
90
90
|
selector: string;
|
|
91
91
|
value: string;
|
|
92
92
|
reason: string;
|
|
93
|
+
} | {
|
|
94
|
+
kind: "select";
|
|
95
|
+
selector: string;
|
|
96
|
+
reason: string;
|
|
97
|
+
} | {
|
|
98
|
+
kind: "check";
|
|
99
|
+
selector: string;
|
|
100
|
+
reason: string;
|
|
93
101
|
} | {
|
|
94
102
|
kind: "navigate";
|
|
95
103
|
url: string;
|
package/dist/bot/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/bot/agent.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/bot/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/agent.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { rankAndCapInventory, scoreSignupButton } from "./browser.js";
|
|
11
11
|
import { OAUTH_PROVIDERS, extractOAuthScopes, } from "./oauth-providers.js";
|
|
12
12
|
import { saveDebugSnapshot } from "./debug.js";
|
|
13
|
+
import { captureOnboardingRound } from "./onboarding-capture.js";
|
|
13
14
|
import { wasRecentlyPrewarmed, recordPrewarmSuccess } from "./prewarm-cache.js";
|
|
14
15
|
import { pickLLMPair, } from "./llm-client.js";
|
|
15
16
|
// Hard cap on LLM calls per signup. A signup that runs away to 20+ calls
|
|
@@ -360,6 +361,16 @@ export function parsePostVerifyStep(raw, allowedSelectors) {
|
|
|
360
361
|
reason,
|
|
361
362
|
};
|
|
362
363
|
}
|
|
364
|
+
case "select": {
|
|
365
|
+
const selector = requireString(obj, "selector", "post-verify select step");
|
|
366
|
+
checkSelector(selector, "post-verify select step");
|
|
367
|
+
return { kind: "select", selector, reason };
|
|
368
|
+
}
|
|
369
|
+
case "check": {
|
|
370
|
+
const selector = requireString(obj, "selector", "post-verify check step");
|
|
371
|
+
checkSelector(selector, "post-verify check step");
|
|
372
|
+
return { kind: "check", selector, reason };
|
|
373
|
+
}
|
|
363
374
|
case "navigate":
|
|
364
375
|
return {
|
|
365
376
|
kind: "navigate",
|
|
@@ -430,26 +441,36 @@ const EMBEDDED_KEY_PREFIXES = [
|
|
|
430
441
|
// bearing logic and deserves direct coverage.
|
|
431
442
|
export function extractApiKeyFromText(text) {
|
|
432
443
|
const prefixed = [
|
|
433
|
-
/\bre_[a-zA-Z0-
|
|
444
|
+
/\bre_[a-zA-Z0-9_]{20,}\b/, // Resend (key body contains underscores)
|
|
434
445
|
/\bsk_(?:live|test)_[a-zA-Z0-9]{20,}\b/, // Stripe secret
|
|
435
|
-
|
|
446
|
+
// NOTE: client-embedded PUBLIC keys are deliberately NOT matched —
|
|
447
|
+
// Stripe publishable (pk_live_/pk_test_) and PostHog project
|
|
448
|
+
// (phc_) keys ship in the client-side JS of every site that uses
|
|
449
|
+
// those vendors, so finding one on a page means "this service
|
|
450
|
+
// embeds Stripe/PostHog", not "here is the user's credential".
|
|
451
|
+
// Each produced a false success on Mistral (its billing pk_live_,
|
|
452
|
+
// then its analytics phc_, surfaced as the api_key).
|
|
436
453
|
/\bkey-[a-f0-9]{32}\b/, // Mailgun
|
|
437
|
-
/\bphc_[a-zA-Z0-9]{32,}\b/, // PostHog
|
|
438
454
|
/\bSG\.[a-zA-Z0-9_\-]{20,}\.[a-zA-Z0-9_\-]{20,}\b/, // SendGrid
|
|
439
455
|
/\brnd_[a-zA-Z0-9]{20,}\b/, // Render
|
|
456
|
+
/\bsntry[su]_[A-Za-z0-9_=\-]{20,}/, // Sentry org/user auth token
|
|
440
457
|
];
|
|
441
458
|
for (const pattern of prefixed) {
|
|
442
459
|
const match = text.match(pattern);
|
|
443
460
|
if (match !== null)
|
|
444
461
|
return match[0];
|
|
445
462
|
}
|
|
446
|
-
// Labeled patterns. The
|
|
447
|
-
// `[ \t]*[:=]
|
|
448
|
-
//
|
|
449
|
-
// the
|
|
450
|
-
//
|
|
463
|
+
// Labeled patterns. The label and value MUST be separated by a real
|
|
464
|
+
// separator — a colon/equals, or whitespace — `(?:[ \t]*[:=][ \t]*|[ \t]+)`,
|
|
465
|
+
// never a newline. A MANDATORY separator is what keeps the regex from
|
|
466
|
+
// latching the label onto glued dashboard nav text: a sidebar
|
|
467
|
+
// rendering "API Keys" "Webhooks" "Settings" as adjacent links
|
|
468
|
+
// concatenates in textContent to "API KeysWebhooksSettings…", and an
|
|
469
|
+
// optional-gap regex would capture "sWebhooksSettings…" as the key
|
|
470
|
+
// (Resend false-positive). Requiring `:`/`=`/space means "API Key"
|
|
471
|
+
// followed immediately by a letter does not match.
|
|
451
472
|
const labeled = [
|
|
452
|
-
/(?:api[_\s-]?key|access[_\s-]?token|secret[_\s-]?key)[ \t]*[:=]
|
|
473
|
+
/(?:api[_\s-]?key|access[_\s-]?token|secret[_\s-]?key)(?:[ \t]*[:=][ \t]*|[ \t]+)([a-zA-Z0-9_\-]{20,})/i,
|
|
453
474
|
/\b[Bb]earer[ \t]+([a-zA-Z0-9_\-.]{30,})/,
|
|
454
475
|
];
|
|
455
476
|
for (const pattern of labeled) {
|
|
@@ -624,6 +645,7 @@ export class SignupAgent {
|
|
|
624
645
|
let errorReplans = 0;
|
|
625
646
|
let progressReplans = 0;
|
|
626
647
|
let emptyPlans = 0;
|
|
648
|
+
let oauthScanRetries = 0;
|
|
627
649
|
let hint;
|
|
628
650
|
const oauthProvider = task.oauthProvider;
|
|
629
651
|
for (;;) {
|
|
@@ -645,6 +667,16 @@ export class SignupAgent {
|
|
|
645
667
|
`— taking the OAuth path`);
|
|
646
668
|
return { kind: "oauth", selector: oauthButton.selector };
|
|
647
669
|
}
|
|
670
|
+
// SSO buttons frequently load async — Mistral renders its
|
|
671
|
+
// icon-only provider buttons after the email form. Re-extract
|
|
672
|
+
// a couple of times before giving up on the OAuth path.
|
|
673
|
+
if (oauthScanRetries < 2) {
|
|
674
|
+
oauthScanRetries += 1;
|
|
675
|
+
steps.push(`OAuth-first: no ${label} affordance yet — waiting for an async ` +
|
|
676
|
+
`render (retry ${oauthScanRetries}/2)`);
|
|
677
|
+
await this.browser.wait(3);
|
|
678
|
+
continue;
|
|
679
|
+
}
|
|
648
680
|
steps.push(`OAuth-first requested but no ${label} affordance on the page — ` +
|
|
649
681
|
`falling back to form-fill`);
|
|
650
682
|
}
|
|
@@ -1266,7 +1298,7 @@ export class SignupAgent {
|
|
|
1266
1298
|
if (credentials.api_key === undefined) {
|
|
1267
1299
|
credentials = await this.postVerifyLoop({
|
|
1268
1300
|
service: task.service,
|
|
1269
|
-
maxRounds: task.postVerifyMaxRounds ??
|
|
1301
|
+
maxRounds: task.postVerifyMaxRounds ?? 12,
|
|
1270
1302
|
steps,
|
|
1271
1303
|
});
|
|
1272
1304
|
}
|
|
@@ -1437,23 +1469,42 @@ ${formatInventory(input.inventory)}`,
|
|
|
1437
1469
|
async postVerifyLoop(args) {
|
|
1438
1470
|
let credentials = await this.extractCredentials();
|
|
1439
1471
|
let loginAttempts = 0;
|
|
1472
|
+
let planFailures = 0;
|
|
1440
1473
|
const oauth = args.credentials === undefined;
|
|
1441
1474
|
// Re-plan hint for the next round — set when an `extract` step
|
|
1442
1475
|
// found no key, which means the visible key text is masked /
|
|
1443
1476
|
// truncated (the S3-class trap: the planner sees a key-shaped
|
|
1444
|
-
// string and keeps asking to extract it forever)
|
|
1477
|
+
// string and keeps asking to extract it forever), or when the
|
|
1478
|
+
// planner's last step was rejected.
|
|
1445
1479
|
let hint;
|
|
1446
1480
|
for (let round = 0; round < args.maxRounds; round++) {
|
|
1447
1481
|
if (credentials.api_key !== undefined || credentials.username !== undefined) {
|
|
1448
1482
|
args.steps.push(`Post-verify: credentials found on round ${round}.`);
|
|
1449
1483
|
return credentials;
|
|
1450
1484
|
}
|
|
1451
|
-
|
|
1485
|
+
// Settle the page first — the previous round's click may have
|
|
1486
|
+
// triggered a navigation, and reading a page mid-navigation
|
|
1487
|
+
// throws "execution context destroyed". waitForFormReady is
|
|
1488
|
+
// best-effort (swallows its own timeouts).
|
|
1489
|
+
await this.browser.waitForFormReady();
|
|
1452
1490
|
// DOM-grounded inventory so the planner picks verified selectors
|
|
1453
1491
|
// instead of inventing CSS that never resolves. A dashboard has
|
|
1454
1492
|
// far more nav links than a signup form, so the button cap is
|
|
1455
1493
|
// widened (the "API Keys"/"Settings" links must survive ranking).
|
|
1456
|
-
|
|
1494
|
+
// Reading state can still race a navigation — a transient throw
|
|
1495
|
+
// burns the round rather than crashing the whole run.
|
|
1496
|
+
let state;
|
|
1497
|
+
let inventory;
|
|
1498
|
+
try {
|
|
1499
|
+
state = await this.browser.getState();
|
|
1500
|
+
inventory = await this.buildInventory(args.steps, undefined, 80);
|
|
1501
|
+
}
|
|
1502
|
+
catch (err) {
|
|
1503
|
+
args.steps.push(`Post-verify round ${round}: page was mid-navigation ` +
|
|
1504
|
+
`(${err instanceof Error ? err.message : String(err)}) — retrying`);
|
|
1505
|
+
await this.browser.wait(2);
|
|
1506
|
+
continue;
|
|
1507
|
+
}
|
|
1457
1508
|
let nextStep;
|
|
1458
1509
|
try {
|
|
1459
1510
|
nextStep = await this.planPostVerifyStep({
|
|
@@ -1467,10 +1518,39 @@ ${formatInventory(input.inventory)}`,
|
|
|
1467
1518
|
});
|
|
1468
1519
|
}
|
|
1469
1520
|
catch (err) {
|
|
1470
|
-
|
|
1471
|
-
|
|
1521
|
+
// The planner's output did not validate — most often a
|
|
1522
|
+
// selector not in the inventory (the model copied the whole
|
|
1523
|
+
// line, not just the `selector=` value). Re-plan with a hint
|
|
1524
|
+
// rather than abandon the run, the same resilience the
|
|
1525
|
+
// form-fill planner has. Bounded so a persistently broken
|
|
1526
|
+
// planner still terminates.
|
|
1527
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
1528
|
+
planFailures += 1;
|
|
1529
|
+
if (planFailures > 3) {
|
|
1530
|
+
args.steps.push(`Post-verify round ${round}: planner failed ${planFailures}x (${reason}) — stopping.`);
|
|
1531
|
+
break;
|
|
1532
|
+
}
|
|
1533
|
+
args.steps.push(`Post-verify round ${round}: planner output rejected (${reason}) — re-planning.`);
|
|
1534
|
+
hint =
|
|
1535
|
+
"Your previous step was REJECTED. A click/fill/select `selector` must be " +
|
|
1536
|
+
"EXACTLY the value after `selector=` on one inventory line — copy only that " +
|
|
1537
|
+
"value (it runs to the end of the line), never the leading `[n] tag …` part " +
|
|
1538
|
+
"and never the whole line.";
|
|
1539
|
+
continue;
|
|
1472
1540
|
}
|
|
1473
1541
|
args.steps.push(`Post-verify ${round + 1}/${args.maxRounds}: ${nextStep.kind} — ${nextStep.reason}`);
|
|
1542
|
+
// Dev-only (env-gated): dump this round's real page state +
|
|
1543
|
+
// inventory into the E1 eval-corpus format, so onboarding
|
|
1544
|
+
// adapters can be iterated offline without re-running the
|
|
1545
|
+
// rate-limited OAuth handshake.
|
|
1546
|
+
captureOnboardingRound({
|
|
1547
|
+
service: args.service,
|
|
1548
|
+
round,
|
|
1549
|
+
oauth,
|
|
1550
|
+
state,
|
|
1551
|
+
inventory,
|
|
1552
|
+
observed: nextStep,
|
|
1553
|
+
});
|
|
1474
1554
|
if (nextStep.kind === "done")
|
|
1475
1555
|
break;
|
|
1476
1556
|
hint = undefined;
|
|
@@ -1495,6 +1575,16 @@ ${formatInventory(input.inventory)}`,
|
|
|
1495
1575
|
else if (nextStep.kind === "fill") {
|
|
1496
1576
|
await this.browser.type(nextStep.selector, nextStep.value);
|
|
1497
1577
|
}
|
|
1578
|
+
else if (nextStep.kind === "select") {
|
|
1579
|
+
await this.browser.selectOption(nextStep.selector);
|
|
1580
|
+
await this.browser.wait(1);
|
|
1581
|
+
}
|
|
1582
|
+
else if (nextStep.kind === "check") {
|
|
1583
|
+
// browser.check force-ticks + scrolls into view + verifies —
|
|
1584
|
+
// a styled TOS checkbox a plain click can't flip.
|
|
1585
|
+
await this.browser.check(nextStep.selector);
|
|
1586
|
+
await this.browser.wait(1);
|
|
1587
|
+
}
|
|
1498
1588
|
else if (nextStep.kind === "navigate") {
|
|
1499
1589
|
await this.browser.goto(nextStep.url);
|
|
1500
1590
|
await this.browser.wait(3);
|
|
@@ -1523,7 +1613,14 @@ ${formatInventory(input.inventory)}`,
|
|
|
1523
1613
|
args.steps.push(`Post-verify action failed (${nextStep.kind}): ${err instanceof Error ? err.message : String(err)}`);
|
|
1524
1614
|
// Don't bail — Claude may recover on the next round.
|
|
1525
1615
|
}
|
|
1526
|
-
|
|
1616
|
+
// Re-extract — but tolerate the page still navigating from the
|
|
1617
|
+
// step just taken; the next round settles and re-reads.
|
|
1618
|
+
try {
|
|
1619
|
+
credentials = await this.extractCredentials();
|
|
1620
|
+
}
|
|
1621
|
+
catch {
|
|
1622
|
+
// page mid-navigation — next round's waitForFormReady handles it
|
|
1623
|
+
}
|
|
1527
1624
|
}
|
|
1528
1625
|
return credentials;
|
|
1529
1626
|
}
|
|
@@ -1585,6 +1682,8 @@ Schema:
|
|
|
1585
1682
|
{"kind":"login","reason":"the page is a login form / we were signed out"}
|
|
1586
1683
|
{"kind":"click","selector":"<a selector= copied verbatim from the inventory>","reason":"e.g. open the API keys page"}
|
|
1587
1684
|
{"kind":"fill","selector":"<a selector= from the inventory>","value":"value","reason":"unusual — only for a required project-name etc."}
|
|
1685
|
+
{"kind":"select","selector":"<a selector= from the inventory, tag=select>","reason":"pick an option for a dropdown — region, role, country"}
|
|
1686
|
+
{"kind":"check","selector":"<a selector= from the inventory, type=checkbox>","reason":"tick a terms-of-service / agreement checkbox"}
|
|
1588
1687
|
{"kind":"navigate","url":"https://...","reason":"e.g. go directly to /settings/api-keys"}
|
|
1589
1688
|
{"kind":"wait","seconds":N,"reason":"page is still loading"}
|
|
1590
1689
|
|
|
@@ -1610,6 +1709,11 @@ Strategy:
|
|
|
1610
1709
|
${loginGuidance}
|
|
1611
1710
|
- If we're on a "verify your phone" / "verify email" wall, return done (we can't solve those).
|
|
1612
1711
|
- If the page wants the user to create a project/key before showing it, fill the minimum and click create.
|
|
1712
|
+
- For a required dropdown (an inventory entry with tag=select — region, role, country), use {"kind":"select"} — a "click" cannot pick a <select> option, so do not click it repeatedly.
|
|
1713
|
+
- A post-OAuth onboarding form (organization name, region, terms) is normal — fill/select/check its fields and click Continue to advance toward the dashboard; do not return "done" just because it is a form.
|
|
1714
|
+
- If a "Create"/"Continue" button is disabled, look for a required terms-of-service / agreement checkbox and tick it with {"kind":"check"} — use the checkbox's own inventory selector (an entry with type=checkbox), NOT the adjacent "Terms of Service" link. A "click" on a styled checkbox often fails to flip it; use "check".
|
|
1715
|
+
- Prefer the simplest credential path: a project- or organization-level API token / auth token usually needs only a name. A "personal token" with a grid of per-scope permission dropdowns is more work — choose it only if no simpler token type is offered.
|
|
1716
|
+
- On a token-creation form whose permission/scope dropdowns default to "No Access" / "None", you MUST use a select step to set a non-default permission on at least one dropdown BEFORE clicking the create button — creating with all-default permissions does nothing. Do not click the create button repeatedly; set a permission first.
|
|
1613
1717
|
- Round ${input.round + 1} of ${input.maxRounds}. Prefer "done" if you're not making progress.`;
|
|
1614
1718
|
const userBlocks = [
|
|
1615
1719
|
{ kind: "image", media_type: "image/png", data_base64: input.state.screenshot },
|
|
@@ -1633,7 +1737,25 @@ ${formatInventory(input.inventory)}${input.hint !== undefined ? `\n\nIMPORTANT
|
|
|
1633
1737
|
system: systemPrompt,
|
|
1634
1738
|
userBlocks,
|
|
1635
1739
|
maxTokens: 500,
|
|
1636
|
-
parse: (raw) =>
|
|
1740
|
+
parse: (raw) => {
|
|
1741
|
+
const step = parsePostVerifyStep(raw, allowed);
|
|
1742
|
+
// A `check` must land on a real checkbox/radio — the planner
|
|
1743
|
+
// otherwise picks the adjacent "Terms of Service" *link*, which
|
|
1744
|
+
// page.check() cannot tick. Reject it so the round re-plans.
|
|
1745
|
+
if (step.kind === "check") {
|
|
1746
|
+
const el = input.inventory.find((e) => e.selector === step.selector);
|
|
1747
|
+
const checkable = el !== undefined &&
|
|
1748
|
+
((el.tag === "input" &&
|
|
1749
|
+
(el.type === "checkbox" || el.type === "radio")) ||
|
|
1750
|
+
el.role === "checkbox" ||
|
|
1751
|
+
el.role === "radio");
|
|
1752
|
+
if (!checkable) {
|
|
1753
|
+
throw new Error(`post-verify check step: ${JSON.stringify(step.selector)} is not a ` +
|
|
1754
|
+
`checkbox — pick the actual agreement checkbox, not its label or link`);
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
return step;
|
|
1758
|
+
},
|
|
1637
1759
|
});
|
|
1638
1760
|
}
|
|
1639
1761
|
async findSignupLink() {
|