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.
- package/dist/src/playwrightUtils.d.ts +57 -0
- package/dist/src/playwrightUtils.d.ts.map +1 -1
- package/dist/src/playwrightUtils.js +247 -8
- package/dist/src/playwrightUtils.js.map +1 -1
- package/dist/src/services/core/base.d.ts +55 -16
- package/dist/src/services/core/base.d.ts.map +1 -1
- package/dist/src/services/core/base.js +119 -31
- package/dist/src/services/core/base.js.map +1 -1
- package/dist/src/services/github.d.ts +2 -1
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +13 -0
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/huggingface.d.ts +2 -1
- package/dist/src/services/huggingface.d.ts.map +1 -1
- package/dist/src/services/huggingface.js +13 -0
- package/dist/src/services/huggingface.js.map +1 -1
- package/dist/src/services/linear.d.ts +2 -1
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +14 -0
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/ngrok.d.ts +2 -1
- package/dist/src/services/ngrok.d.ts.map +1 -1
- package/dist/src/services/ngrok.js +12 -0
- package/dist/src/services/ngrok.js.map +1 -1
- package/dist/src/services/openrouter.d.ts +2 -1
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +12 -0
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/services/tailscale.d.ts +2 -1
- package/dist/src/services/tailscale.d.ts.map +1 -1
- package/dist/src/services/tailscale.js +18 -0
- package/dist/src/services/tailscale.js.map +1 -1
- package/dist/src/services/todoist.d.ts +2 -1
- package/dist/src/services/todoist.d.ts.map +1 -1
- package/dist/src/services/todoist.js +6 -0
- package/dist/src/services/todoist.js.map +1 -1
- package/dist/src/services/zoom.d.ts +2 -1
- package/dist/src/services/zoom.d.ts.map +1 -1
- package/dist/src/services/zoom.js +55 -55
- package/dist/src/services/zoom.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tests/lint.test.js +1 -1
- package/dist/tests/manualCompletion.test.d.ts +10 -0
- package/dist/tests/manualCompletion.test.d.ts.map +1 -0
- package/dist/tests/manualCompletion.test.js +221 -0
- package/dist/tests/manualCompletion.test.js.map +1 -0
- package/dist/tests/manualCredentialForms.test.d.ts +8 -0
- package/dist/tests/manualCredentialForms.test.d.ts.map +1 -0
- package/dist/tests/manualCredentialForms.test.js +64 -0
- package/dist/tests/manualCredentialForms.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { ApiCredentialStatus, ApiCredentialsUsageError, } from '../../apiCredentials/base.js';
|
|
5
5
|
import { DEFAULT_ACCOUNT } from '../../apiCredentials/account.js';
|
|
6
6
|
import { runCapturedAsync } from '../../curl.js';
|
|
7
|
-
import { generateLatchkeyAppName, showSpinnerPage, withTempBrowserContext, } from '../../playwrightUtils.js';
|
|
7
|
+
import { generateLatchkeyAppName, requestCredentialsFromUser, showSpinnerPage, withTempBrowserContext, } from '../../playwrightUtils.js';
|
|
8
8
|
export class NoCurlCredentialsNotSupportedError extends Error {
|
|
9
9
|
constructor(serviceName) {
|
|
10
10
|
super(`Service '${serviceName}' does not support set-nocurl credentials.`);
|
|
@@ -176,17 +176,6 @@ export class ServiceSession {
|
|
|
176
176
|
await page.waitForTimeout(100);
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Optionally diagnose a timeout error that occurred during credential finalization.
|
|
181
|
-
*
|
|
182
|
-
* Services can override this to inspect the page state and return a more
|
|
183
|
-
* specific error (e.g., checking for permission denied messages).
|
|
184
|
-
* If this returns an error, it will be thrown instead of the generic
|
|
185
|
-
* LoginFailedError. If it returns null, the original timeout error message is used.
|
|
186
|
-
*/
|
|
187
|
-
diagnoseTimeoutError(_context, _originalError) {
|
|
188
|
-
return Promise.resolve(null);
|
|
189
|
-
}
|
|
190
179
|
/**
|
|
191
180
|
* Perform the login flow and return the extracted credentials.
|
|
192
181
|
* @param encryptedStorage - Storage for managing credentials
|
|
@@ -217,13 +206,6 @@ export class ServiceSession {
|
|
|
217
206
|
if (error instanceof Error && isBrowserClosedError(error)) {
|
|
218
207
|
throw new LoginCancelledError();
|
|
219
208
|
}
|
|
220
|
-
if (error instanceof Error && isTimeoutError(error)) {
|
|
221
|
-
const diagnosedError = await this.diagnoseTimeoutError(context, error);
|
|
222
|
-
if (diagnosedError !== null) {
|
|
223
|
-
throw diagnosedError;
|
|
224
|
-
}
|
|
225
|
-
throw new LoginFailedError(`Login failed: ${error.message}`);
|
|
226
|
-
}
|
|
227
209
|
throw error;
|
|
228
210
|
}
|
|
229
211
|
if (apiCredentials === null) {
|
|
@@ -297,9 +279,22 @@ export var FollowupWork;
|
|
|
297
279
|
* is doing and how to recover when it fails.
|
|
298
280
|
*/
|
|
299
281
|
export function buildFollowupSpinnerDetails(displayName, followupWork, durationSentence = 'This can take a while.') {
|
|
300
|
-
return
|
|
301
|
-
'If the process fails, click the first browser tab in this window to manually complete it.');
|
|
282
|
+
return `${followupWork} your ${displayName} account. ${durationSentence} `;
|
|
302
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* The notice explains what to do, not what went wrong: the automation's error
|
|
286
|
+
* message means nothing to the user, and it is reported on the command line
|
|
287
|
+
* anyway.
|
|
288
|
+
*/
|
|
289
|
+
function buildFailureNoticeDetails(form) {
|
|
290
|
+
return [
|
|
291
|
+
form.instructions,
|
|
292
|
+
'Then paste the credentials into the form below.',
|
|
293
|
+
'Closing this browser window gives up on the login.',
|
|
294
|
+
].join('\n\n');
|
|
295
|
+
}
|
|
296
|
+
/** How long the browser is left open for the user to finish a failed flow. */
|
|
297
|
+
const MANUAL_COMPLETION_LIMIT_MS = 30 * 60_000;
|
|
303
298
|
/**
|
|
304
299
|
* Service session that requires a browser followup to finalize credentials.
|
|
305
300
|
*
|
|
@@ -308,19 +303,112 @@ export function buildFollowupSpinnerDetails(displayName, followupWork, durationS
|
|
|
308
303
|
* (e.g., navigating to settings and creating an API key).
|
|
309
304
|
*/
|
|
310
305
|
export class BrowserFollowupServiceSession extends ServiceSession {
|
|
311
|
-
followupSpinnerPage = null;
|
|
312
306
|
/**
|
|
313
|
-
*
|
|
314
|
-
* or
|
|
315
|
-
* a
|
|
316
|
-
*
|
|
307
|
+
* Page hiding the automation from the user, for sessions that show one, or
|
|
308
|
+
* null while none is up (or when the spinner is disabled). It doubles as the
|
|
309
|
+
* place where a failure is explained to the user.
|
|
310
|
+
*
|
|
311
|
+
* Subclasses that temporarily surface a real page to the user (e.g. to have
|
|
312
|
+
* terms accepted) bring this page back to the front afterwards.
|
|
317
313
|
*/
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
314
|
+
spinnerPage = null;
|
|
315
|
+
/**
|
|
316
|
+
* Form shown on the failure notice for the user to paste the credentials they
|
|
317
|
+
* created by hand into.
|
|
318
|
+
*
|
|
319
|
+
* Public so the fields and instructions can be inspected without running a
|
|
320
|
+
* browser — which is how the tests check that every session that should offer
|
|
321
|
+
* one does, and that its builder agrees with its field names.
|
|
322
|
+
*/
|
|
323
|
+
manualCredentialForm;
|
|
321
324
|
async finalizeCredentials(_browser, context, oldCredentials) {
|
|
322
|
-
this.
|
|
323
|
-
|
|
325
|
+
this.spinnerPage = await showSpinnerPage(context, `Finalizing ${this.service.displayName} login...`, buildFollowupSpinnerDetails(this.service.displayName, this.followupWork));
|
|
326
|
+
try {
|
|
327
|
+
return await this.performBrowserFollowup(context, oldCredentials);
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
// A browser the user closed is a cancellation, which login() reports;
|
|
331
|
+
// everything else is the automation breaking, which the user may still be
|
|
332
|
+
// able to work around.
|
|
333
|
+
if (!(error instanceof Error) || isBrowserClosedError(error)) {
|
|
334
|
+
throw error;
|
|
335
|
+
}
|
|
336
|
+
return await this.recoverFromFailedFollowup(context, error);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Turn a failed followup into an error the user can act on, without taking
|
|
341
|
+
* the browser away from them.
|
|
342
|
+
*
|
|
343
|
+
* A broken automation usually means the service changed, which is precisely
|
|
344
|
+
* the situation where the flow is still perfectly doable by hand: the browser
|
|
345
|
+
* is signed in and sitting on the right page. So the spinner is replaced by
|
|
346
|
+
* an explanation of what failed and what to do about it, and the window stays
|
|
347
|
+
* open for a while, waiting for the user to paste the credentials in.
|
|
348
|
+
*
|
|
349
|
+
* This needs somewhere to put them, so sessions without a
|
|
350
|
+
* {@link manualCredentialForm} report the failure straight away rather than
|
|
351
|
+
* asking for work latchkey could not accept.
|
|
352
|
+
*/
|
|
353
|
+
async recoverFromFailedFollowup(context, error) {
|
|
354
|
+
// A timeout says nothing beyond "the page did not do what we expected", so
|
|
355
|
+
// it is reported as the login failure it is.
|
|
356
|
+
const failure = isTimeoutError(error)
|
|
357
|
+
? new LoginFailedError(`Login failed: ${error.message}`)
|
|
358
|
+
: error;
|
|
359
|
+
const form = this.manualCredentialForm;
|
|
360
|
+
if (form === undefined) {
|
|
361
|
+
throw failure;
|
|
362
|
+
}
|
|
363
|
+
console.error(`[latchkey] The ${this.service.displayName} login automation failed. The browser ` +
|
|
364
|
+
'window is left open so the credentials can be provided by hand; close it to give up.');
|
|
365
|
+
let credentials;
|
|
366
|
+
try {
|
|
367
|
+
credentials = await requestCredentialsFromUser({
|
|
368
|
+
context,
|
|
369
|
+
spinnerPage: this.spinnerPage,
|
|
370
|
+
message: `${this.service.displayName} credentials could not be retrieved automatically.`,
|
|
371
|
+
details: buildFailureNoticeDetails(form),
|
|
372
|
+
fields: form.fields,
|
|
373
|
+
decide: (values) => this.decideOnSubmittedCredentials(form, values),
|
|
374
|
+
timeoutMs: MANUAL_COMPLETION_LIMIT_MS,
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
// The browser is gone; there is nobody left to ask.
|
|
379
|
+
throw failure;
|
|
380
|
+
}
|
|
381
|
+
if (credentials !== null) {
|
|
382
|
+
return credentials;
|
|
383
|
+
}
|
|
384
|
+
// Nothing came of the request, so the automation failure is what gets reported.
|
|
385
|
+
throw failure;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Turn submitted values into credentials, refusing them with a reason the form
|
|
389
|
+
* can show if the service does not accept them.
|
|
390
|
+
*/
|
|
391
|
+
async decideOnSubmittedCredentials(form, values) {
|
|
392
|
+
// A build error is reported to the user as a problem with what they typed:
|
|
393
|
+
// requestCredentialsFromUser turns it into one.
|
|
394
|
+
const built = form.buildCredentials(values);
|
|
395
|
+
// Some pasted values are not usable as they stand — Zoom's server-to-server
|
|
396
|
+
// app credentials have to mint an access token first — so they get the same
|
|
397
|
+
// refresh the stored ones would, or the check below would call a perfectly
|
|
398
|
+
// good app "missing".
|
|
399
|
+
const credentials = built.isExpired() === true && this.service.refreshCredentials
|
|
400
|
+
? ((await this.service.refreshCredentials(built)) ?? built)
|
|
401
|
+
: built;
|
|
402
|
+
// These were pasted by hand, so they are checked before being taken:
|
|
403
|
+
// finding out now beats storing a typo and failing on the next request.
|
|
404
|
+
const status = await this.service.checkApiCredentials(credentials);
|
|
405
|
+
if (status !== ApiCredentialStatus.Valid) {
|
|
406
|
+
return {
|
|
407
|
+
problem: `${this.service.displayName} did not accept these credentials (${status}). ` +
|
|
408
|
+
'Please check them and try again.',
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
return { accepted: credentials };
|
|
324
412
|
}
|
|
325
413
|
}
|
|
326
414
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/services/core/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,mBAAmB,EAEnB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,sBAAsB,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/services/core/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Response, BrowserContext } from 'playwright';
|
|
5
5
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
6
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
6
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
7
7
|
export declare class UnexpectedGithubCredentialsError extends Error {
|
|
8
8
|
constructor();
|
|
9
9
|
}
|
|
@@ -22,6 +22,7 @@ export declare class GithubTokenBasicAuth implements ApiCredentials {
|
|
|
22
22
|
}
|
|
23
23
|
declare class GithubServiceSession extends BrowserFollowupServiceSession {
|
|
24
24
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
25
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
25
26
|
private isLoggedIn;
|
|
26
27
|
onResponse(response: Response): void;
|
|
27
28
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAmBxB,qBAAa,gCAAiC,SAAQ,KAAK;;CAK1D;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,QAAQ,CAAC,UAAU,EAAG,sBAAsB,CAAU;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,MAAM;IAIzB,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAIhF,SAAS,IAAI,OAAO,GAAG,SAAS;CAGjC;AAwBD,cAAM,oBAAqB,SAAQ,6BAA6B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAa1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAqBpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAwClC;AAED,qBAAa,MAAO,SAAQ,OAAO;IACjC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,WAAW,8EAIT;IACX,QAAQ,CAAC,QAAQ,4CAAwB;IACzC,QAAQ,CAAC,IAAI,SAE+D;IAE5E,QAAQ,CAAC,4BAA4B,2CAA4C;IAEjF,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,iBAAiB,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc;IAU9E,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,oBAAoB;IAIvD,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAY5E;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -65,6 +65,19 @@ const GITHUB_TOKEN_SCOPES = [
|
|
|
65
65
|
];
|
|
66
66
|
class GithubServiceSession extends BrowserFollowupServiceSession {
|
|
67
67
|
followupWork = FollowupWork.CreateApiToken;
|
|
68
|
+
manualCredentialForm = {
|
|
69
|
+
instructions: `To finish by hand, open ${GITHUB_NEW_TOKEN_URL} in the other tab of this window, ` +
|
|
70
|
+
'give the token a name, tick the appropriate scopes ("repo" and "user" ' +
|
|
71
|
+
'are the usual minimum), and click "Generate token".',
|
|
72
|
+
fields: [
|
|
73
|
+
{
|
|
74
|
+
name: 'token',
|
|
75
|
+
label: 'Personal access token',
|
|
76
|
+
hint: 'Starts with "ghp_" (classic) or "github_pat_" (fine-grained).',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
buildCredentials: (values) => new AuthorizationBearer(values.get('token')),
|
|
80
|
+
};
|
|
68
81
|
isLoggedIn = false;
|
|
69
82
|
onResponse(response) {
|
|
70
83
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEtF,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,wFAAwF;AACxF,MAAM,oBAAoB,GAAG,wCAAwC,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,gCAAgC,GACpC,iGAAiG,CAAC;AAEpG,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACzD;QACE,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IACtB,UAAU,GAAG,sBAA+B,CAAC;IAC7C,KAAK,CAAS;IAEvB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,aAAgC;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,SAAS;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,mBAAmB,GAAG;IAC1B,MAAM;IACN,UAAU;IACV,gBAAgB;IAChB,iBAAiB;IACjB,MAAM;IACN,eAAe;IACf,WAAW;IACX,iBAAiB;IACjB,gBAAgB;IAChB,MAAM;IACN,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,WAAW;IACX,SAAS;IACT,8BAA8B;IAC9B,SAAS;CACD,CAAC;AAEX,MAAM,oBAAqB,SAAQ,6BAA6B;IAC3C,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;IAC5C,oBAAoB,GAAyB;QAC7D,YAAY,EACV,2BAA2B,oBAAoB,oCAAoC;YACnF,wEAAwE;YACxE,qDAAqD;QACvD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,uBAAuB;gBAC9B,IAAI,EAAE,+DAA+D;aACtE;SACF;QACD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3E,CAAC;IACM,UAAU,GAAG,KAAK,CAAC;IAE3B,UAAU,CAAC,QAAkB;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,+FAA+F;QAC/F,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,oBAAoB,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,uFAAuF;QACvF,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,sBAAsB,CACpC,OAAuB,EACvB,eAAgC;QAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEtC,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACtE,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACzD,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE7D,8BAA8B;QAC9B,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,+CAA+C,KAAK,IAAI,CAAC,CAAC;YACxF,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC/B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,6FAA6F;QAC7F,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QACnF,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC9D,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;QAE7B,6DAA6D;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAChE,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE5D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,MAAO,SAAQ,OAAO;IACxB,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,QAAQ,CAAC;IACvB,WAAW,GAAG;QACrB,yBAAyB;QACzB,6BAA6B;QAC7B,gCAAgC;KACxB,CAAC;IACF,QAAQ,GAAG,oBAAoB,CAAC;IAChC,IAAI,GACX,mCAAmC;QACnC,yEAAyE,CAAC;IAEnE,4BAA4B,GAAG,CAAC,6BAA6B,CAAU,CAAC;IAEjF,qBAAqB,CAAC,WAAmB;QACvC,OAAO,qBAAqB,WAAW,qCAAqC,CAAC;IAC/E,CAAC;IAEQ,iBAAiB,CAAC,cAA8B,EAAE,GAAW;QACpE,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,CAAC,cAAc,YAAY,mBAAmB,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,gCAAgC,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAEQ,UAAU,CAAC,aAAqB;QACvC,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAEQ,UAAU,CAAC,cAA8B;QAChD,OAAO,wBAAwB,CAC7B,cAAc,EACd,IAAI,CAAC,4BAA4B,EACjC,CAAC,YAAY,EAAE,EAAE;YACf,uEAAuE;YACvE,6DAA6D;YAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAA8B,CAAC;YACrE,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;QAC7B,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
|
@@ -16,9 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import type { Response, BrowserContext } from 'playwright';
|
|
18
18
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
19
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
19
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
20
20
|
declare class HuggingfaceServiceSession extends BrowserFollowupServiceSession {
|
|
21
21
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
22
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
22
23
|
private isLoggedIn;
|
|
23
24
|
onResponse(response: Response): void;
|
|
24
25
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA4CxB,cAAM,yBAA0B,SAAQ,6BAA6B;IACnE,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAa1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwBpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAmClC;AAED,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,kBAAkB;IACtC,QAAQ,CAAC,WAAW,sIAKT;IACX,QAAQ,CAAC,QAAQ,kCAAgB;IACjC,QAAQ,CAAC,IAAI,SAE8E;IAI3F,QAAQ,CAAC,4BAA4B,oDAA4B;IAEjE,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWlE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,yBAAyB;CAGtE;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -55,6 +55,19 @@ const HF_HUB_HOST = 'huggingface.co';
|
|
|
55
55
|
const HF_PRE_LOGIN_PATH_PATTERN = /^\/(login|join|signup|oauth|sso|auth|logout)/i;
|
|
56
56
|
class HuggingfaceServiceSession extends BrowserFollowupServiceSession {
|
|
57
57
|
followupWork = FollowupWork.CreateApiToken;
|
|
58
|
+
manualCredentialForm = {
|
|
59
|
+
instructions: `To finish by hand, open ${HF_NEW_TOKEN_URL} in the other tab of this window, ` +
|
|
60
|
+
'give the token a name, and create it. The token is shown once, in the dialog ' +
|
|
61
|
+
'that follows.',
|
|
62
|
+
fields: [
|
|
63
|
+
{
|
|
64
|
+
name: 'token',
|
|
65
|
+
label: 'Access token',
|
|
66
|
+
hint: 'Starts with "hf_".',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
buildCredentials: (values) => new AuthorizationBearer(values.get('token')),
|
|
70
|
+
};
|
|
58
71
|
isLoggedIn = false;
|
|
59
72
|
onResponse(response) {
|
|
60
73
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AAExB,6EAA6E;AAC7E,+EAA+E;AAC/E,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,gBAAgB;AAChB,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAClD,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;AAC5D,MAAM,2BAA2B,GAAG,yCAAyC,CAAC;AAE9E,iFAAiF;AACjF,gFAAgF;AAChF,kFAAkF;AAClF,kFAAkF;AAClF,kFAAkF;AAClF,iFAAiF;AACjF,0DAA0D;AAE1D,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAEpD,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,2EAA2E;AAC3E,yBAAyB;AACzB,MAAM,gBAAgB,GAAG,4DAA4D,CAAC;AAEtF,mFAAmF;AACnF,MAAM,aAAa,GAAG,sCAAsC,CAAC;AAE7D,yEAAyE;AACzE,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,yBAAyB,GAAG,+CAA+C,CAAC;AAElF,MAAM,yBAA0B,SAAQ,6BAA6B;IAChD,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;IAC5C,oBAAoB,GAAyB;QAC7D,YAAY,EACV,2BAA2B,gBAAgB,oCAAoC;YAC/E,+EAA+E;YAC/E,eAAe;QACjB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,oBAAoB;aAC3B;SACF;QACD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3E,CAAC;IACM,UAAU,GAAG,KAAK,CAAC;IAE3B,UAAU,CAAC,QAAkB;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,UAAU,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QACD,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,sBAAsB,CACpC,OAAuB,EACvB,eAAgC;QAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;QACtE,CAAC;QAED,+EAA+E;QAC/E,4EAA4E;QAC5E,4BAA4B;QAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAElC,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC5D,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACzD,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAEhD,kFAAkF;QAClF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;QAC/F,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5D,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAE3B,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,gBAAgB,CAAC,mDAAmD,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC7B,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAAG,cAAc,CAAC;IAC7B,WAAW,GAAG;QACrB,eAAe;QACf,qBAAqB;QACrB,kBAAkB;QAClB,2BAA2B;KACnB,CAAC;IACF,QAAQ,GAAG,YAAY,CAAC;IACxB,IAAI,GACX,qEAAqE;QACrE,wFAAwF,CAAC;IAE3F,yEAAyE;IACzE,sDAAsD;IAC7C,4BAA4B,GAAG,CAAC,aAAa,CAAU,CAAC;IAEjE,qBAAqB,CAAC,WAAmB;QACvC,OAAO,qBAAqB,WAAW,qCAAqC,CAAC;IAC/E,CAAC;IAEQ,UAAU,CAAC,cAA8B;QAChD,OAAO,wBAAwB,CAC7B,cAAc,EACd,IAAI,CAAC,4BAA4B,EACjC,CAAC,YAAY,EAAE,EAAE;YACf,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAA6C,CAAC;YACpF,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;QAC3C,CAAC,CACF,CAAC;IACJ,CAAC;IAEQ,UAAU,CAAC,aAAqB;QACvC,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Response, BrowserContext } from 'playwright';
|
|
5
5
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
6
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
6
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
7
7
|
declare class LinearServiceSession extends BrowserFollowupServiceSession {
|
|
8
8
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
9
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
9
10
|
private isLoggedIn;
|
|
10
11
|
onResponse(response: Response): void;
|
|
11
12
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqB,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqB,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA4ExB,cAAM,oBAAqB,SAAQ,6BAA6B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAc1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA8BpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAiClC;AAED,qBAAa,MAAO,SAAQ,OAAO;IACjC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,WAAW,uCAAwC;IAC5D,QAAQ,CAAC,QAAQ,8BAAoB;IACrC,QAAQ,CAAC,IAAI,2CAA2C;IAExD,QAAQ,CAAC,4BAA4B,sJAQ1B;IAEX,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAalE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,oBAAoB;CAGjE;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -69,6 +69,20 @@ async function waitForWorkspaceName(page) {
|
|
|
69
69
|
}
|
|
70
70
|
class LinearServiceSession extends BrowserFollowupServiceSession {
|
|
71
71
|
followupWork = FollowupWork.CreateApiToken;
|
|
72
|
+
manualCredentialForm = {
|
|
73
|
+
instructions: 'To finish by hand, open your Linear workspace in the other tab of this window and ' +
|
|
74
|
+
'go to Settings → Security & access → Personal API keys (or ' +
|
|
75
|
+
'https://linear.app/<your-workspace>/settings/account/security/api-keys/new), ' +
|
|
76
|
+
'name the key, and create it. The key is shown once, right after creation.',
|
|
77
|
+
fields: [
|
|
78
|
+
{
|
|
79
|
+
name: 'apiKey',
|
|
80
|
+
label: 'Personal API key',
|
|
81
|
+
hint: 'Starts with "lin_api_".',
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
buildCredentials: (values) => new AuthorizationBare(values.get('apiKey')),
|
|
85
|
+
};
|
|
72
86
|
isLoggedIn = false;
|
|
73
87
|
onResponse(response) {
|
|
74
88
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { Response, BrowserContext } from 'playwright';
|
|
16
16
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
17
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
17
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
18
18
|
declare class NgrokServiceSession extends BrowserFollowupServiceSession {
|
|
19
19
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
20
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
20
21
|
private isLoggedIn;
|
|
21
22
|
onResponse(response: Response): void;
|
|
22
23
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../src/services/ngrok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../src/services/ngrok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAkCxB,cAAM,mBAAoB,SAAQ,6BAA6B;IAC7D,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAY1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA4BpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAkClC;AAED,qBAAa,KAAM,SAAQ,OAAO;IAChC,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,WAAW;IAC/B,QAAQ,CAAC,WAAW,sCAAiC;IACrD,QAAQ,CAAC,QAAQ,uCAAmB;IACpC,QAAQ,CAAC,IAAI,iCAAiC;IAI9C,QAAQ,CAAC,4BAA4B,8CAA+C;IAEpF,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAMzC,UAAU,CAAC,eAAe,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB;CAGhE;AAED,eAAO,MAAM,KAAK,OAAc,CAAC"}
|
|
@@ -43,6 +43,18 @@ function ngrokCredentials(apiKey) {
|
|
|
43
43
|
}
|
|
44
44
|
class NgrokServiceSession extends BrowserFollowupServiceSession {
|
|
45
45
|
followupWork = FollowupWork.CreateApiToken;
|
|
46
|
+
manualCredentialForm = {
|
|
47
|
+
instructions: `To finish by hand, open ${NGROK_NEW_API_KEY_URL} in the other tab of this window, ` +
|
|
48
|
+
'describe the key, and add it. The key is shown once, right after creation.',
|
|
49
|
+
fields: [
|
|
50
|
+
{
|
|
51
|
+
name: 'apiKey',
|
|
52
|
+
label: 'API key',
|
|
53
|
+
hint: 'The long secret shown in the dialog right after the key is added.',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
buildCredentials: (values) => ngrokCredentials(values.get('apiKey')),
|
|
57
|
+
};
|
|
46
58
|
isLoggedIn = false;
|
|
47
59
|
onResponse(response) {
|
|
48
60
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrok.js","sourceRoot":"","sources":["../../../src/services/ngrok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAkB,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ngrok.js","sourceRoot":"","sources":["../../../src/services/ngrok.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import type { Response, BrowserContext } from 'playwright';
|
|
15
15
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
16
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
16
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
17
17
|
declare class OpenrouterServiceSession extends BrowserFollowupServiceSession {
|
|
18
18
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
19
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
19
20
|
private isLoggedIn;
|
|
20
21
|
onResponse(response: Response): void;
|
|
21
22
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA8BxB,cAAM,wBAAyB,SAAQ,6BAA6B;IAClE,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAY1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwBpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAwDlC;AAED,qBAAa,UAAW,SAAQ,OAAO;IACrC,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,gBAAgB;IACpC,QAAQ,CAAC,WAAW,6CAAsC;IAC1D,QAAQ,CAAC,QAAQ,mCAAwB;IACzC,QAAQ,CAAC,IAAI,+FACiF;IAI9F,QAAQ,CAAC,4BAA4B,gDAAsC;IAE3E,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAMzC,UAAU,CAAC,eAAe,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,wBAAwB;CAGrE;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -37,6 +37,18 @@ const OPENROUTER_PRE_LOGIN_PATH_PATTERN = /^\/(sign-in|sign-up|signin|signup|sso
|
|
|
37
37
|
const OPENROUTER_KEY_PATTERN = /sk-or-v1-[A-Za-z0-9-]+/;
|
|
38
38
|
class OpenrouterServiceSession extends BrowserFollowupServiceSession {
|
|
39
39
|
followupWork = FollowupWork.CreateApiToken;
|
|
40
|
+
manualCredentialForm = {
|
|
41
|
+
instructions: `To finish by hand, open ${OPENROUTER_KEYS_URL} in the other tab of this window, ` +
|
|
42
|
+
'create a key, and copy the value the dialog reveals.',
|
|
43
|
+
fields: [
|
|
44
|
+
{
|
|
45
|
+
name: 'apiKey',
|
|
46
|
+
label: 'API key',
|
|
47
|
+
hint: 'Starts with "sk-or-v1-".',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
buildCredentials: (values) => new AuthorizationBearer(values.get('apiKey')),
|
|
51
|
+
};
|
|
40
52
|
isLoggedIn = false;
|
|
41
53
|
onResponse(response) {
|
|
42
54
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import type { Response, BrowserContext } from 'playwright';
|
|
19
19
|
import { z } from 'zod';
|
|
20
20
|
import { ApiCredentialStatus, ApiCredentials } from '../apiCredentials/base.js';
|
|
21
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
21
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
22
22
|
/**
|
|
23
23
|
* Credentials for the Tailscale API: a static API access token plus the tailnet
|
|
24
24
|
* it belongs to. The tailnet is part of nearly every useful Tailscale API path
|
|
@@ -52,6 +52,7 @@ export declare class TailscaleCredentials implements ApiCredentials {
|
|
|
52
52
|
}
|
|
53
53
|
declare class TailscaleServiceSession extends BrowserFollowupServiceSession {
|
|
54
54
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
55
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
55
56
|
private isLoggedIn;
|
|
56
57
|
onResponse(response: Response): void;
|
|
57
58
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailscale.d.ts","sourceRoot":"","sources":["../../../src/services/tailscale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"tailscale.d.ts","sourceRoot":"","sources":["../../../src/services/tailscale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAIZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA4BxB;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAIrC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElF,qBAAa,oBAAqB,YAAW,cAAc;IACzD,QAAQ,CAAC,UAAU,EAAG,WAAW,CAAU;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK1C,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAOhF,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC,MAAM,IAAI,wBAAwB;IAQlC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,oBAAoB;CAGtE;AAED,cAAM,uBAAwB,SAAQ,6BAA6B;IACjE,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAmB1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAqBpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CA+DlC;AAED,qBAAa,SAAU,SAAQ,OAAO;IACpC,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,WAAW,0CAAqC;IACzD,QAAQ,CAAC,QAAQ,uCAAuB;IACxC,QAAQ,CAAC,IAAI,SAO4B;IAKzC,QAAQ,CAAC,4BAA4B,cAAe;IAErC,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4BhG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAOzC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOlE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,uBAAuB;CAGpE;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -81,6 +81,24 @@ export class TailscaleCredentials {
|
|
|
81
81
|
}
|
|
82
82
|
class TailscaleServiceSession extends BrowserFollowupServiceSession {
|
|
83
83
|
followupWork = FollowupWork.CreateApiToken;
|
|
84
|
+
manualCredentialForm = {
|
|
85
|
+
instructions: `To finish by hand, open ${TAILSCALE_KEYS_URL} in the other tab of this window and ` +
|
|
86
|
+
'generate an API access token. The tailnet name is shown at the top of the admin ' +
|
|
87
|
+
'console; almost every Tailscale API path needs it, which is why it is asked for here.',
|
|
88
|
+
fields: [
|
|
89
|
+
{
|
|
90
|
+
name: 'token',
|
|
91
|
+
label: 'API access token',
|
|
92
|
+
hint: 'Starts with "tskey-api-".',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'tailnet',
|
|
96
|
+
label: 'Tailnet',
|
|
97
|
+
hint: 'For example "example.com" or "tail1234.ts.net".',
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
buildCredentials: (values) => new TailscaleCredentials(values.get('token'), values.get('tailnet')),
|
|
101
|
+
};
|
|
84
102
|
isLoggedIn = false;
|
|
85
103
|
onResponse(response) {
|
|
86
104
|
if (this.isLoggedIn) {
|