latchkey 3.7.0 → 3.8.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 (52) hide show
  1. package/dist/src/playwrightUtils.d.ts +57 -0
  2. package/dist/src/playwrightUtils.d.ts.map +1 -1
  3. package/dist/src/playwrightUtils.js +247 -8
  4. package/dist/src/playwrightUtils.js.map +1 -1
  5. package/dist/src/services/core/base.d.ts +55 -16
  6. package/dist/src/services/core/base.d.ts.map +1 -1
  7. package/dist/src/services/core/base.js +119 -31
  8. package/dist/src/services/core/base.js.map +1 -1
  9. package/dist/src/services/github.d.ts +2 -1
  10. package/dist/src/services/github.d.ts.map +1 -1
  11. package/dist/src/services/github.js +13 -0
  12. package/dist/src/services/github.js.map +1 -1
  13. package/dist/src/services/huggingface.d.ts +2 -1
  14. package/dist/src/services/huggingface.d.ts.map +1 -1
  15. package/dist/src/services/huggingface.js +13 -0
  16. package/dist/src/services/huggingface.js.map +1 -1
  17. package/dist/src/services/linear.d.ts +2 -1
  18. package/dist/src/services/linear.d.ts.map +1 -1
  19. package/dist/src/services/linear.js +14 -0
  20. package/dist/src/services/linear.js.map +1 -1
  21. package/dist/src/services/ngrok.d.ts +2 -1
  22. package/dist/src/services/ngrok.d.ts.map +1 -1
  23. package/dist/src/services/ngrok.js +12 -0
  24. package/dist/src/services/ngrok.js.map +1 -1
  25. package/dist/src/services/openrouter.d.ts +2 -1
  26. package/dist/src/services/openrouter.d.ts.map +1 -1
  27. package/dist/src/services/openrouter.js +12 -0
  28. package/dist/src/services/openrouter.js.map +1 -1
  29. package/dist/src/services/tailscale.d.ts +2 -1
  30. package/dist/src/services/tailscale.d.ts.map +1 -1
  31. package/dist/src/services/tailscale.js +18 -0
  32. package/dist/src/services/tailscale.js.map +1 -1
  33. package/dist/src/services/todoist.d.ts +2 -1
  34. package/dist/src/services/todoist.d.ts.map +1 -1
  35. package/dist/src/services/todoist.js +6 -0
  36. package/dist/src/services/todoist.js.map +1 -1
  37. package/dist/src/services/zoom.d.ts +2 -1
  38. package/dist/src/services/zoom.d.ts.map +1 -1
  39. package/dist/src/services/zoom.js +55 -55
  40. package/dist/src/services/zoom.js.map +1 -1
  41. package/dist/src/version.d.ts +1 -1
  42. package/dist/src/version.js +1 -1
  43. package/dist/tests/lint.test.js +1 -1
  44. package/dist/tests/manualCompletion.test.d.ts +10 -0
  45. package/dist/tests/manualCompletion.test.d.ts.map +1 -0
  46. package/dist/tests/manualCompletion.test.js +221 -0
  47. package/dist/tests/manualCompletion.test.js.map +1 -0
  48. package/dist/tests/manualCredentialForms.test.d.ts +8 -0
  49. package/dist/tests/manualCredentialForms.test.d.ts.map +1 -0
  50. package/dist/tests/manualCredentialForms.test.js +64 -0
  51. package/dist/tests/manualCredentialForms.test.js.map +1 -0
  52. package/package.json +1 -1
@@ -45,6 +45,14 @@ export declare function withTempBrowserContext<T>(encryptedStorage: EncryptedSto
45
45
  * unlike fill() which sets the value directly.
46
46
  */
47
47
  export declare function typeLikeHuman(page: Page, locator: Locator, text: string): Promise<void>;
48
+ /** One value the user can paste back when the automation could not get it. */
49
+ export interface CredentialFormField {
50
+ /** Key the submitted value appears under. */
51
+ readonly name: string;
52
+ readonly label: string;
53
+ /** Example or explanation shown under the input. */
54
+ readonly hint?: string;
55
+ }
48
56
  /**
49
57
  * Show a spinner overlay that hides page content from the user.
50
58
  * The overlay persists across page navigations within the browser context.
@@ -59,4 +67,53 @@ export declare function typeLikeHuman(page: Page, locator: Locator, text: string
59
67
  * type, so longer explanations do not read like a ragged centered block.
60
68
  */
61
69
  export declare function showSpinnerPage(context: BrowserContext, message: string, details?: string): Promise<Page | null>;
70
+ export declare class CredentialFormFieldMissingError extends Error {
71
+ constructor(fieldName: string);
72
+ }
73
+ /** Non-empty values the user submitted, keyed by field name. */
74
+ export declare class CredentialFormValues {
75
+ private readonly values;
76
+ constructor(values: ReadonlyMap<string, string>);
77
+ get(fieldName: string): string;
78
+ }
79
+ /**
80
+ * Turn what the form handed over into values, or null if it is not a complete
81
+ * set. The form checks completeness too; this is the Node-side half of that,
82
+ * so callers can rely on every field having a value.
83
+ */
84
+ export declare function parseSubmittedCredentialValues(submitted: unknown, fields: readonly CredentialFormField[]): CredentialFormValues | null;
85
+ /** What the caller makes of a submission: a result, or a problem to report back. */
86
+ export type CredentialFormDecision<T> = {
87
+ readonly accepted: T;
88
+ } | {
89
+ readonly problem: string;
90
+ };
91
+ export interface CredentialRequest<T> {
92
+ readonly context: BrowserContext;
93
+ /**
94
+ * Page to show the request on, typically the spinner the user has been
95
+ * staring at. A page is opened when there is none (or it is already gone).
96
+ */
97
+ readonly spinnerPage: Page | null;
98
+ readonly message: string;
99
+ readonly details: string;
100
+ readonly fields: readonly CredentialFormField[];
101
+ /**
102
+ * Decides what a submission is worth, e.g. by checking the credentials it
103
+ * builds against the service. A returned problem is shown in the form, which
104
+ * then lets the user correct and submit again.
105
+ */
106
+ readonly decide: (values: CredentialFormValues) => Promise<CredentialFormDecision<T>>;
107
+ /** How long the request stays up before it is given up on. */
108
+ readonly timeoutMs: number;
109
+ }
110
+ /**
111
+ * Ask the user to paste in credentials the automation could not get, and wait
112
+ * for them to submit something acceptable.
113
+ *
114
+ * Returns null when nothing usable arrived: the user closed the browser, or the
115
+ * request timed out. There is no polling — the page calls in when the user
116
+ * submits, and its "checking..." state is resolved by what `decide` says.
117
+ */
118
+ export declare function requestCredentialsFromUser<T>(request: CredentialRequest<T>): Promise<T | null>;
62
119
  //# sourceMappingURL=playwrightUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightUtils.d.ts","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,qBAAa,iCAAkC,SAAQ,KAAK;;CAQ3D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAUjD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,WAAW,EAAE,MAAM,EAAE,cAAc,GAAE,KAAK,GAAG,YAAoB;CAM9E;AAMD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAItF;AA2CD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,CAAC,CAAC,CAoEZ;AAMD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;AA+DD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,SAAK,GACX,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAQtB"}
1
+ {"version":3,"file":"playwrightUtils.d.ts","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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"}
@@ -176,11 +176,18 @@ export async function typeLikeHuman(page, locator, text) {
176
176
  await page.waitForTimeout(delay);
177
177
  }
178
178
  }
179
- // Script that creates the spinner overlay, designed to run in browser context
180
- function createSpinnerOverlayScript(message, details) {
179
+ /**
180
+ * Script that creates the latchkey overlay, designed to run in browser context.
181
+ *
182
+ * The texts are injected as JSON literals and assigned as text rather than
183
+ * markup, so an error message that happens to contain a backtick or an angle
184
+ * bracket cannot break the script or the page.
185
+ */
186
+ function createOverlayScript(content) {
187
+ const { message, details, showSpinner, formFields } = content;
181
188
  return `
182
189
  (() => {
183
- if (document.getElementById('latchkey-spinner-overlay')) return;
190
+ document.getElementById('latchkey-spinner-overlay')?.remove();
184
191
  const overlay = document.createElement('div');
185
192
  overlay.id = 'latchkey-spinner-overlay';
186
193
  overlay.innerHTML = \`
@@ -215,6 +222,10 @@ function createSpinnerOverlayScript(message, details) {
215
222
  text-align: center;
216
223
  max-width: 80%;
217
224
  white-space: pre-line;
225
+ /* The text is there to be read from and copied (URLs, mostly), which
226
+ needs the pointer to reach it — the overlay itself stays inert. */
227
+ pointer-events: auto;
228
+ user-select: text;
218
229
  }
219
230
  #latchkey-spinner-overlay .details {
220
231
  margin-top: 44px;
@@ -222,16 +233,140 @@ function createSpinnerOverlayScript(message, details) {
222
233
  font-size: 13px;
223
234
  line-height: 1.6;
224
235
  text-align: left;
225
- max-width: 360px;
236
+ max-width: 460px;
237
+ white-space: pre-line;
238
+ pointer-events: auto;
239
+ user-select: text;
240
+ }
241
+ #latchkey-spinner-overlay form {
242
+ margin-top: 28px;
243
+ width: 460px;
244
+ max-width: 80%;
245
+ display: flex;
246
+ flex-direction: column;
247
+ gap: 14px;
248
+ pointer-events: auto;
249
+ font-size: 13px;
250
+ color: #555;
251
+ }
252
+ #latchkey-spinner-overlay form label {
253
+ display: block;
254
+ margin-bottom: 4px;
255
+ }
256
+ #latchkey-spinner-overlay form input {
257
+ width: 100%;
258
+ box-sizing: border-box;
259
+ padding: 8px 10px;
260
+ border: 1px solid #cfcfcf;
261
+ border-radius: 4px;
262
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
263
+ font-size: 13px;
264
+ background: #fff;
265
+ }
266
+ #latchkey-spinner-overlay form .hint {
267
+ margin-top: 4px;
268
+ color: #8a8a8a;
269
+ font-size: 12px;
270
+ }
271
+ #latchkey-spinner-overlay form button {
272
+ align-self: flex-start;
273
+ padding: 8px 16px;
274
+ border: none;
275
+ border-radius: 4px;
276
+ background: #007bff;
277
+ color: #fff;
278
+ font-size: 13px;
279
+ cursor: pointer;
280
+ }
281
+ #latchkey-spinner-overlay form button:disabled {
282
+ background: #9dc7f5;
283
+ cursor: default;
284
+ }
285
+ #latchkey-spinner-overlay .form-status {
286
+ color: #c0392b;
287
+ font-size: 13px;
288
+ min-height: 18px;
289
+ white-space: pre-line;
290
+ }
291
+ #latchkey-spinner-overlay .form-status.accepted {
292
+ color: #1e7e34;
226
293
  }
227
294
  @keyframes latchkey-spin {
228
295
  to { transform: rotate(360deg); }
229
296
  }
230
297
  </style>
231
- <div class="spinner"></div>
232
- <div class="message">${message}</div>
233
- ${details === '' ? '' : `<div class="details">${details}</div>`}
298
+ ${showSpinner ? '<div class="spinner"></div>' : ''}
299
+ <div class="message"></div>
300
+ <div class="details"></div>
234
301
  \`;
302
+ overlay.querySelector('.message').textContent = ${JSON.stringify(message)};
303
+ const detailsText = ${JSON.stringify(details)};
304
+ const detailsElement = overlay.querySelector('.details');
305
+ if (detailsText === '') {
306
+ detailsElement.remove();
307
+ } else {
308
+ detailsElement.textContent = detailsText;
309
+ }
310
+
311
+ const fields = ${JSON.stringify(formFields)};
312
+ if (fields.length > 0) {
313
+ const form = document.createElement('form');
314
+ const inputs = fields.map((field) => {
315
+ const wrapper = document.createElement('div');
316
+ const label = document.createElement('label');
317
+ label.textContent = field.label;
318
+ const input = document.createElement('input');
319
+ input.type = 'text';
320
+ input.autocomplete = 'off';
321
+ input.spellcheck = false;
322
+ label.appendChild(input);
323
+ wrapper.appendChild(label);
324
+ if (field.hint) {
325
+ const hint = document.createElement('div');
326
+ hint.className = 'hint';
327
+ hint.textContent = field.hint;
328
+ wrapper.appendChild(hint);
329
+ }
330
+ form.appendChild(wrapper);
331
+ return { name: field.name, input: input };
332
+ });
333
+
334
+ const status = document.createElement('div');
335
+ status.className = 'form-status';
336
+ const submit = document.createElement('button');
337
+ submit.type = 'submit';
338
+ submit.textContent = 'Use these credentials';
339
+ form.appendChild(submit);
340
+ form.appendChild(status);
341
+
342
+ form.addEventListener('submit', async (event) => {
343
+ event.preventDefault();
344
+ const values = {};
345
+ for (const entry of inputs) {
346
+ values[entry.name] = entry.input.value.trim();
347
+ }
348
+ const isComplete = inputs.every((entry) => values[entry.name] !== '');
349
+ if (!isComplete) {
350
+ status.textContent = 'Please fill in every field.';
351
+ return;
352
+ }
353
+ status.className = 'form-status';
354
+ status.textContent = 'Checking the credentials...';
355
+ submit.disabled = true;
356
+ const decision = await window['${SUBMIT_CREDENTIALS_BINDING}'](values);
357
+ if (decision && decision.problem) {
358
+ status.textContent = decision.problem;
359
+ submit.disabled = false;
360
+ return;
361
+ }
362
+ status.className = 'form-status accepted';
363
+ status.textContent = 'Credentials accepted. This window can be closed.';
364
+ });
365
+
366
+ overlay.appendChild(form);
367
+ setTimeout(() => { inputs[0].input.focus(); }, 0);
368
+ }
369
+
235
370
  document.body.appendChild(overlay);
236
371
  })()
237
372
  `;
@@ -254,8 +389,112 @@ export async function showSpinnerPage(context, message, details = '') {
254
389
  return null;
255
390
  }
256
391
  const spinnerPage = await context.newPage();
257
- await spinnerPage.evaluate(createSpinnerOverlayScript(message, details));
392
+ await spinnerPage.evaluate(createOverlayScript({ message, details, showSpinner: true, formFields: [] }));
258
393
  await spinnerPage.bringToFront();
259
394
  return spinnerPage;
260
395
  }
396
+ /** Name the credential form calls to hand what the user typed back to latchkey. */
397
+ const SUBMIT_CREDENTIALS_BINDING = '__latchkeySubmitCredentials';
398
+ export class CredentialFormFieldMissingError extends Error {
399
+ constructor(fieldName) {
400
+ super(`The credential form did not provide a value for '${fieldName}'.`);
401
+ this.name = 'CredentialFormFieldMissingError';
402
+ }
403
+ }
404
+ /** Non-empty values the user submitted, keyed by field name. */
405
+ export class CredentialFormValues {
406
+ values;
407
+ constructor(values) {
408
+ this.values = values;
409
+ }
410
+ get(fieldName) {
411
+ const value = this.values.get(fieldName);
412
+ if (value === undefined) {
413
+ throw new CredentialFormFieldMissingError(fieldName);
414
+ }
415
+ return value;
416
+ }
417
+ }
418
+ /**
419
+ * Turn what the form handed over into values, or null if it is not a complete
420
+ * set. The form checks completeness too; this is the Node-side half of that,
421
+ * so callers can rely on every field having a value.
422
+ */
423
+ export function parseSubmittedCredentialValues(submitted, fields) {
424
+ if (typeof submitted !== 'object' || submitted === null) {
425
+ return null;
426
+ }
427
+ const submittedValues = submitted;
428
+ const values = new Map();
429
+ for (const field of fields) {
430
+ const value = submittedValues[field.name];
431
+ if (typeof value !== 'string' || value === '') {
432
+ return null;
433
+ }
434
+ values.set(field.name, value);
435
+ }
436
+ return new CredentialFormValues(values);
437
+ }
438
+ /**
439
+ * Ask the user to paste in credentials the automation could not get, and wait
440
+ * for them to submit something acceptable.
441
+ *
442
+ * Returns null when nothing usable arrived: the user closed the browser, or the
443
+ * request timed out. There is no polling — the page calls in when the user
444
+ * submits, and its "checking..." state is resolved by what `decide` says.
445
+ */
446
+ export async function requestCredentialsFromUser(request) {
447
+ const { context, spinnerPage, message, details, fields, decide, timeoutMs } = request;
448
+ const page = spinnerPage !== null && !spinnerPage.isClosed() ? spinnerPage : await context.newPage();
449
+ let resolveAccepted = () => {
450
+ /* replaced below */
451
+ };
452
+ const accepted = new Promise((resolve) => {
453
+ resolveAccepted = resolve;
454
+ });
455
+ // Listened for before the form goes up: a browser closed while it is being
456
+ // rendered should end the wait just the same.
457
+ const abandoned = new Promise((resolve) => {
458
+ const giveUp = () => {
459
+ resolve(null);
460
+ };
461
+ page.on('close', giveUp);
462
+ context.on('close', giveUp);
463
+ context.browser()?.on('disconnected', giveUp);
464
+ });
465
+ await page.exposeFunction(SUBMIT_CREDENTIALS_BINDING, async (submitted) => {
466
+ const values = parseSubmittedCredentialValues(submitted, fields);
467
+ if (values === null) {
468
+ return { problem: 'Please fill in every field.' };
469
+ }
470
+ let decision;
471
+ try {
472
+ decision = await decide(values);
473
+ }
474
+ catch (error) {
475
+ // The page is waiting for an answer, so failures are reported as
476
+ // problems rather than left to become an unhandled rejection there.
477
+ return { problem: error instanceof Error ? error.message : 'These values cannot be used.' };
478
+ }
479
+ if ('problem' in decision) {
480
+ return { problem: decision.problem };
481
+ }
482
+ resolveAccepted(decision.accepted);
483
+ return { accepted: true };
484
+ });
485
+ await page.evaluate(createOverlayScript({ message, details, showSpinner: false, formFields: fields }));
486
+ await page.bringToFront();
487
+ let timer;
488
+ const timedOut = new Promise((resolve) => {
489
+ timer = setTimeout(() => {
490
+ resolve(null);
491
+ }, timeoutMs);
492
+ });
493
+ try {
494
+ return await Promise.race([accepted, abandoned, timedOut]);
495
+ }
496
+ finally {
497
+ clearTimeout(timer);
498
+ }
499
+ }
261
500
  //# sourceMappingURL=playwrightUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightUtils.js","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playwrightUtils.js","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,25 @@ import type { Browser, BrowserContext, Page, Response } from 'playwright';
5
5
  import type { z, ZodError, ZodTypeAny } from 'zod';
6
6
  import { ApiCredentialStatus, ApiCredentials } from '../../apiCredentials/base.js';
7
7
  import { EncryptedStorage } from '../../encryptedStorage.js';
8
- import { type BrowserLaunchOptions } from '../../playwrightUtils.js';
8
+ import { type BrowserLaunchOptions, type CredentialFormField, type CredentialFormValues } from '../../playwrightUtils.js';
9
+ /**
10
+ * Way out of a failed automation: the values the user can produce by hand and
11
+ * paste back, and how to turn them into credentials.
12
+ *
13
+ * The build step only shapes the values; whether they actually work is decided
14
+ * by the service's credential check, which runs before they are accepted.
15
+ */
16
+ export interface ManualCredentialForm {
17
+ /**
18
+ * What the user can do by hand, e.g. "create a token in Settings →
19
+ * Developer". Shown above the fields, so it should read as instructions
20
+ * rather than as a description. Don't forget that the breakage might have
21
+ * occurred in the middle of the process (not necessarily at the start).
22
+ */
23
+ readonly instructions: string;
24
+ readonly fields: readonly CredentialFormField[];
25
+ buildCredentials(values: CredentialFormValues): ApiCredentials;
26
+ }
9
27
  export declare class NoCurlCredentialsNotSupportedError extends Error {
10
28
  constructor(serviceName: string);
11
29
  }
@@ -193,15 +211,6 @@ export declare abstract class ServiceSession {
193
211
  * Wait until the browser login phase is complete.
194
212
  */
195
213
  private waitForLoginComplete;
196
- /**
197
- * Optionally diagnose a timeout error that occurred during credential finalization.
198
- *
199
- * Services can override this to inspect the page state and return a more
200
- * specific error (e.g., checking for permission denied messages).
201
- * If this returns an error, it will be thrown instead of the generic
202
- * LoginFailedError. If it returns null, the original timeout error message is used.
203
- */
204
- protected diagnoseTimeoutError(_context: BrowserContext, _originalError: Error): Promise<Error | null>;
205
214
  /**
206
215
  * Optional preparation step before login.
207
216
  * Services can override this to perform setup (e.g., creating OAuth clients).
@@ -270,16 +279,26 @@ export declare function buildFollowupSpinnerDetails(displayName: string, followu
270
279
  * (e.g., navigating to settings and creating an API key).
271
280
  */
272
281
  export declare abstract class BrowserFollowupServiceSession extends ServiceSession {
273
- private followupSpinnerPage;
274
282
  /** What the followup does in the user's account, shown on the spinner page. */
275
283
  protected abstract readonly followupWork: FollowupWork;
276
284
  /**
277
- * Spinner page hiding the automation from the user while the followup runs,
278
- * or null when the spinner is disabled. Subclasses that temporarily surface
279
- * a real page to the user (e.g. to have terms accepted) bring this page back
280
- * to the front afterwards.
285
+ * Page hiding the automation from the user, for sessions that show one, or
286
+ * null while none is up (or when the spinner is disabled). It doubles as the
287
+ * place where a failure is explained to the user.
288
+ *
289
+ * Subclasses that temporarily surface a real page to the user (e.g. to have
290
+ * terms accepted) bring this page back to the front afterwards.
281
291
  */
282
- protected get spinnerPage(): Page | null;
292
+ protected spinnerPage: Page | null;
293
+ /**
294
+ * Form shown on the failure notice for the user to paste the credentials they
295
+ * created by hand into.
296
+ *
297
+ * Public so the fields and instructions can be inspected without running a
298
+ * browser — which is how the tests check that every session that should offer
299
+ * one does, and that its builder agrees with its field names.
300
+ */
301
+ readonly manualCredentialForm?: ManualCredentialForm;
283
302
  /**
284
303
  * Perform actions in the browser to finalize and extract API credentials.
285
304
  * This runs in the same browser session used for login.
@@ -288,5 +307,25 @@ export declare abstract class BrowserFollowupServiceSession extends ServiceSessi
288
307
  */
289
308
  protected abstract performBrowserFollowup(context: BrowserContext, oldCredentials?: ApiCredentials): Promise<ApiCredentials | null>;
290
309
  protected finalizeCredentials(_browser: Browser, context: BrowserContext, oldCredentials?: ApiCredentials): Promise<ApiCredentials | null>;
310
+ /**
311
+ * Turn a failed followup into an error the user can act on, without taking
312
+ * the browser away from them.
313
+ *
314
+ * A broken automation usually means the service changed, which is precisely
315
+ * the situation where the flow is still perfectly doable by hand: the browser
316
+ * is signed in and sitting on the right page. So the spinner is replaced by
317
+ * an explanation of what failed and what to do about it, and the window stays
318
+ * open for a while, waiting for the user to paste the credentials in.
319
+ *
320
+ * This needs somewhere to put them, so sessions without a
321
+ * {@link manualCredentialForm} report the failure straight away rather than
322
+ * asking for work latchkey could not accept.
323
+ */
324
+ private recoverFromFailedFollowup;
325
+ /**
326
+ * Turn submitted values into credentials, refusing them with a reason the form
327
+ * can show if the service does not accept them.
328
+ */
329
+ private decideOnSubmittedCredentials;
291
330
  }
292
331
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/services/core/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/services/core/base.ts"],"names":[],"mappings":"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"}