latchkey 3.5.0 → 3.7.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/skills/generic/latchkey/SKILL.md +1 -1
- package/dist/skills/openclaw/latchkey/SKILL.md +1 -1
- package/dist/src/apiCredentials/serialization.d.ts +12 -0
- package/dist/src/apiCredentials/serialization.d.ts.map +1 -1
- package/dist/src/apiCredentials/serialization.js +7 -0
- package/dist/src/apiCredentials/serialization.js.map +1 -1
- package/dist/src/oauthUtils.d.ts +2 -2
- package/dist/src/oauthUtils.d.ts.map +1 -1
- package/dist/src/oauthUtils.js +36 -15
- package/dist/src/oauthUtils.js.map +1 -1
- package/dist/src/serviceRegistry.d.ts.map +1 -1
- package/dist/src/serviceRegistry.js +4 -1
- package/dist/src/serviceRegistry.js.map +1 -1
- package/dist/src/services/fastmail-dav.d.ts +55 -0
- package/dist/src/services/fastmail-dav.d.ts.map +1 -0
- package/dist/src/services/fastmail-dav.js +98 -0
- package/dist/src/services/fastmail-dav.js.map +1 -0
- package/dist/src/services/fastmail.d.ts +79 -0
- package/dist/src/services/fastmail.d.ts.map +1 -0
- package/dist/src/services/fastmail.js +298 -0
- package/dist/src/services/fastmail.js.map +1 -0
- package/dist/src/services/google/gmail.d.ts.map +1 -1
- package/dist/src/services/google/gmail.js +6 -1
- package/dist/src/services/google/gmail.js.map +1 -1
- package/dist/src/services/index.d.ts +3 -0
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +3 -0
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/tailscale.d.ts +74 -0
- package/dist/src/services/tailscale.d.ts.map +1 -0
- package/dist/src/services/tailscale.js +221 -0
- package/dist/src/services/tailscale.js.map +1 -0
- package/dist/src/sharedOperations.d.ts +1 -1
- package/dist/src/sharedOperations.d.ts.map +1 -1
- package/dist/src/sharedOperations.js +12 -1
- package/dist/src/sharedOperations.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tests/serviceRegistry.test.js +32 -1
- package/dist/tests/serviceRegistry.test.js.map +1 -1
- package/dist/tests/servicesAgainstRecordings.test.js +12 -3
- package/dist/tests/servicesAgainstRecordings.test.js.map +1 -1
- package/dist/tests/tailscale.test.d.ts +2 -0
- package/dist/tests/tailscale.test.d.ts.map +1 -0
- package/dist/tests/tailscale.test.js +79 -0
- package/dist/tests/tailscale.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tailscale service implementation.
|
|
3
|
+
*
|
|
4
|
+
* The Tailscale admin API (https://api.tailscale.com/api/v2/) authenticates with
|
|
5
|
+
* an API access token (`tskey-api-...`) that an Owner/Admin creates in the
|
|
6
|
+
* admin console's Keys page. The token's value is revealed exactly once at
|
|
7
|
+
* creation time (like Linear, HuggingFace and OpenRouter), so we sign the user
|
|
8
|
+
* into the admin console, generate a fresh access token on their behalf, and
|
|
9
|
+
* read its value from the one-time reveal dialog.
|
|
10
|
+
*
|
|
11
|
+
* A single API access token grants the full set of actions its owning user may
|
|
12
|
+
* perform: tailnet-wide user management (role changes, approval, suspension,
|
|
13
|
+
* deletion), device management, ACL/policy, DNS, and the minting of further
|
|
14
|
+
* keys (including the auth keys the `tailscale` CLI consumes to bring up
|
|
15
|
+
* nodes). It expires after at most 90 days, after which the user re-runs the
|
|
16
|
+
* browser login to mint a new one -- the token is static and is not refreshable.
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
import { ApiCredentialStatus } from '../apiCredentials/base.js';
|
|
20
|
+
import { typeLikeHuman } from '../playwrightUtils.js';
|
|
21
|
+
import { runCapturedAsync } from '../curl.js';
|
|
22
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, LoginFailedError, isBrowserClosedError, LoginCancelledError, } from './core/base.js';
|
|
23
|
+
const DEFAULT_TIMEOUT_MS = 30000;
|
|
24
|
+
// The Tailscale admin REST API.
|
|
25
|
+
const TAILSCALE_API_BASE_URL = 'https://api.tailscale.com/';
|
|
26
|
+
// `latchkey auth browser` opens this; it redirects to the SSO sign-in page and
|
|
27
|
+
// then back to the admin console once the user is signed in.
|
|
28
|
+
const TAILSCALE_LOGIN_URL = 'https://login.tailscale.com/admin';
|
|
29
|
+
// The admin console's Keys page, where API access tokens are generated.
|
|
30
|
+
const TAILSCALE_KEYS_URL = 'https://console.tailscale.com/admin/settings/keys';
|
|
31
|
+
// The admin console host; a document response served from it means the user is
|
|
32
|
+
// signed in (the sign-in flow itself is served from login.tailscale.com and the
|
|
33
|
+
// SSO provider).
|
|
34
|
+
const TAILSCALE_CONSOLE_HOST = 'console.tailscale.com';
|
|
35
|
+
// GET /tailnet/{tailnet}/settings is a cheap read that answers 200 for any
|
|
36
|
+
// valid token with the access the API access token carries (full user powers).
|
|
37
|
+
// It doubles as the credential check once the tailnet is known.
|
|
38
|
+
const TAILSCALE_SETTINGS_URL_PREFIX = 'https://api.tailscale.com/api/v2/tailnet/';
|
|
39
|
+
// API access tokens are prefixed `tskey-api-`; the reveal dialog renders the
|
|
40
|
+
// value as plain text (not inside an input).
|
|
41
|
+
const TAILSCALE_TOKEN_PATTERN = /tskey-api-[A-Za-z0-9-]+/;
|
|
42
|
+
/**
|
|
43
|
+
* Credentials for the Tailscale API: a static API access token plus the tailnet
|
|
44
|
+
* it belongs to. The tailnet is part of nearly every useful Tailscale API path
|
|
45
|
+
* and the API exposes no tailnet-independent way to validate a token, so the
|
|
46
|
+
* connector captures it at mint time (it is shown in the admin console's
|
|
47
|
+
* navigation) and stores it alongside the token.
|
|
48
|
+
*/
|
|
49
|
+
export const TailscaleCredentialsSchema = z.object({
|
|
50
|
+
objectType: z.literal('tailscale'),
|
|
51
|
+
token: z.string(),
|
|
52
|
+
tailnet: z.string(),
|
|
53
|
+
});
|
|
54
|
+
export class TailscaleCredentials {
|
|
55
|
+
objectType = 'tailscale';
|
|
56
|
+
token;
|
|
57
|
+
tailnet;
|
|
58
|
+
constructor(token, tailnet) {
|
|
59
|
+
this.token = token;
|
|
60
|
+
this.tailnet = tailnet;
|
|
61
|
+
}
|
|
62
|
+
injectIntoCurlCall(curlArguments) {
|
|
63
|
+
return Promise.resolve(['-H', `Authorization: Bearer ${this.token}`, ...curlArguments]);
|
|
64
|
+
}
|
|
65
|
+
// The token is static and its expiry date is not exposed in a parseable form
|
|
66
|
+
// at creation time; validity is determined by the live credential check
|
|
67
|
+
// rather than a local clock.
|
|
68
|
+
isExpired() {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
toJSON() {
|
|
72
|
+
return {
|
|
73
|
+
objectType: this.objectType,
|
|
74
|
+
token: this.token,
|
|
75
|
+
tailnet: this.tailnet,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
static fromJSON(data) {
|
|
79
|
+
return new TailscaleCredentials(data.token, data.tailnet);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
class TailscaleServiceSession extends BrowserFollowupServiceSession {
|
|
83
|
+
followupWork = FollowupWork.CreateApiToken;
|
|
84
|
+
isLoggedIn = false;
|
|
85
|
+
onResponse(response) {
|
|
86
|
+
if (this.isLoggedIn) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (response.request().resourceType() !== 'document') {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
let url;
|
|
93
|
+
try {
|
|
94
|
+
url = new URL(response.url());
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (url.hostname !== TAILSCALE_CONSOLE_HOST) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (response.status() >= 200 && response.status() < 400) {
|
|
103
|
+
this.isLoggedIn = true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
isLoginComplete() {
|
|
107
|
+
return this.isLoggedIn;
|
|
108
|
+
}
|
|
109
|
+
async performBrowserFollowup(context, _oldCredentials) {
|
|
110
|
+
const page = context.pages()[0];
|
|
111
|
+
if (!page) {
|
|
112
|
+
throw new LoginFailedError('No page available in browser context.');
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
await page.goto(TAILSCALE_KEYS_URL, { waitUntil: 'domcontentloaded' });
|
|
116
|
+
// The tailnet name is the first link in the admin shell's navigation; it
|
|
117
|
+
// is part of every useful API call, so read it before the mint dialog
|
|
118
|
+
// covers the page.
|
|
119
|
+
const tailnetLink = page.locator('#app-root a').first();
|
|
120
|
+
await tailnetLink.waitFor({ timeout: DEFAULT_TIMEOUT_MS });
|
|
121
|
+
const tailnet = (await tailnetLink.innerText()).trim();
|
|
122
|
+
if (!tailnet) {
|
|
123
|
+
throw new LoginFailedError('Failed to read the Tailscale tailnet name.');
|
|
124
|
+
}
|
|
125
|
+
// Open the "Generate API access token" dialog. There are two "Generate..."
|
|
126
|
+
// buttons on the Keys page (auth key and access token); the access-token
|
|
127
|
+
// one is labelled with a trailing ellipsis, which distinguishes it from
|
|
128
|
+
// the dialog's submit button.
|
|
129
|
+
const openButton = page.getByRole('button', { name: 'Generate access token\u2026' });
|
|
130
|
+
await openButton.waitFor({ timeout: DEFAULT_TIMEOUT_MS });
|
|
131
|
+
await openButton.click();
|
|
132
|
+
const mintDialog = page.getByRole('dialog', { name: 'Generate API access token' });
|
|
133
|
+
await mintDialog.waitFor({ timeout: DEFAULT_TIMEOUT_MS });
|
|
134
|
+
// The description input is the first input in the dialog (the "Add an
|
|
135
|
+
// optional description" text above it is a label, not a placeholder).
|
|
136
|
+
const descriptionInput = mintDialog.locator('input').first();
|
|
137
|
+
await descriptionInput.waitFor({ timeout: DEFAULT_TIMEOUT_MS });
|
|
138
|
+
await typeLikeHuman(page, descriptionInput, this.generateAppName());
|
|
139
|
+
// Expiration defaults to 90 days; leave it as-is.
|
|
140
|
+
const generateButton = mintDialog.getByRole('button', {
|
|
141
|
+
name: 'Generate access token',
|
|
142
|
+
exact: true,
|
|
143
|
+
});
|
|
144
|
+
await generateButton.waitFor({ timeout: DEFAULT_TIMEOUT_MS });
|
|
145
|
+
await generateButton.click();
|
|
146
|
+
// The same dialog is then reused to reveal the new token exactly once,
|
|
147
|
+
// as plain text.
|
|
148
|
+
const revealDialog = page.getByRole('dialog', { name: 'Generated new key' });
|
|
149
|
+
await revealDialog.waitFor({ timeout: DEFAULT_TIMEOUT_MS });
|
|
150
|
+
const revealText = await revealDialog.innerText();
|
|
151
|
+
const match = TAILSCALE_TOKEN_PATTERN.exec(revealText);
|
|
152
|
+
if (!match) {
|
|
153
|
+
throw new LoginFailedError('Failed to extract the API access token from Tailscale.');
|
|
154
|
+
}
|
|
155
|
+
await page.close();
|
|
156
|
+
return new TailscaleCredentials(match[0], tailnet);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
if (error instanceof Error && isBrowserClosedError(error)) {
|
|
160
|
+
throw new LoginCancelledError();
|
|
161
|
+
}
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
export class Tailscale extends Service {
|
|
167
|
+
name = 'tailscale';
|
|
168
|
+
displayName = 'Tailscale';
|
|
169
|
+
baseApiUrls = [TAILSCALE_API_BASE_URL];
|
|
170
|
+
loginUrl = TAILSCALE_LOGIN_URL;
|
|
171
|
+
info = 'Tailscale admin API for tailnet-wide management (users, devices, policy, keys). ' +
|
|
172
|
+
'Docs: https://tailscale.com/docs/reference/tailscale-api and interactive ' +
|
|
173
|
+
'https://tailscale.com/api. A browser login mints an API access token (tskey-api) ' +
|
|
174
|
+
'that carries the full set of actions its owning user may perform and expires ' +
|
|
175
|
+
'after at most 90 days; re-run the login to mint a new one. Most endpoints are ' +
|
|
176
|
+
'scoped to a tailnet (e.g. /api/v2/tailnet/{tailnet}/users); the stored credential ' +
|
|
177
|
+
'remembers the tailnet seen at login.';
|
|
178
|
+
// The credential check needs the tailnet, which the static
|
|
179
|
+
// credentialCheckCurlArguments cannot carry, so checkApiCredentials is
|
|
180
|
+
// overridden below and this value is unused (mirrors RegisteredService).
|
|
181
|
+
credentialCheckCurlArguments = [];
|
|
182
|
+
async checkApiCredentials(apiCredentials) {
|
|
183
|
+
// The tailnet is needed to validate a token and is only carried by the
|
|
184
|
+
// browser-minted credential. A manually-set credential (e.g. `auth set -H
|
|
185
|
+
// "Authorization: Bearer ..."`) has no tailnet to build the check URL
|
|
186
|
+
// from, so its status cannot be determined locally; `latchkey curl` still
|
|
187
|
+
// injects it normally.
|
|
188
|
+
if (!(apiCredentials instanceof TailscaleCredentials)) {
|
|
189
|
+
return ApiCredentialStatus.Unknown;
|
|
190
|
+
}
|
|
191
|
+
const checkUrl = `${TAILSCALE_SETTINGS_URL_PREFIX}${encodeURIComponent(apiCredentials.tailnet)}/settings`;
|
|
192
|
+
const result = await runCapturedAsync([
|
|
193
|
+
'-s',
|
|
194
|
+
'-w',
|
|
195
|
+
'\n%{http_code}',
|
|
196
|
+
'-H',
|
|
197
|
+
`Authorization: Bearer ${apiCredentials.token}`,
|
|
198
|
+
checkUrl,
|
|
199
|
+
], 10);
|
|
200
|
+
// The `-w '\n%{http_code}'` above appends the status code as the final line.
|
|
201
|
+
const statusCode = result.stdout.slice(result.stdout.lastIndexOf('\n') + 1).trim();
|
|
202
|
+
return statusCode === '200' ? ApiCredentialStatus.Valid : ApiCredentialStatus.Invalid;
|
|
203
|
+
}
|
|
204
|
+
setCredentialsExample(serviceName) {
|
|
205
|
+
return `latchkey auth set ${serviceName} -H "Authorization: Bearer <token>"`;
|
|
206
|
+
}
|
|
207
|
+
// The API access token is owned by the user who minted it but exposes no
|
|
208
|
+
// queryable "current user" endpoint; the tailnet it belongs to is the most
|
|
209
|
+
// meaningful account identifier available without an extra request.
|
|
210
|
+
getAccount(apiCredentials) {
|
|
211
|
+
if (apiCredentials instanceof TailscaleCredentials) {
|
|
212
|
+
return Promise.resolve(apiCredentials.tailnet);
|
|
213
|
+
}
|
|
214
|
+
return Promise.resolve(null);
|
|
215
|
+
}
|
|
216
|
+
getSession(appNamePrefix) {
|
|
217
|
+
return new TailscaleServiceSession(this, appNamePrefix);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
export const TAILSCALE = new Tailscale();
|
|
221
|
+
//# sourceMappingURL=tailscale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailscale.js","sourceRoot":"","sources":["../../../src/services/tailscale.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ export interface CredentialStatusEntry {
|
|
|
44
44
|
export type AccountCredentialStatuses = Record<string, CredentialStatusEntry>;
|
|
45
45
|
export interface ServicesInfoResult {
|
|
46
46
|
readonly type: 'built-in' | 'user-registered';
|
|
47
|
-
readonly baseApiUrls: readonly
|
|
47
|
+
readonly baseApiUrls: readonly string[];
|
|
48
48
|
readonly authOptions: readonly string[];
|
|
49
49
|
readonly credentials: AccountCredentialStatuses;
|
|
50
50
|
readonly setCredentialsExample: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedOperations.d.ts","sourceRoot":"","sources":["../../src/sharedOperations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,WAAW,EAAE,MAAM;CAMhC;AAED,qBAAa,yBAA0B,SAAQ,KAAK;;CAKnD;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIjD;AAoCD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,SAAS,MAAM,EAAE,CAoBnB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sharedOperations.d.ts","sourceRoot":"","sources":["../../src/sharedOperations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,WAAW,EAAE,MAAM;CAMhC;AAED,qBAAa,yBAA0B,SAAQ,KAAK;;CAKnD;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIjD;AAoCD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,SAAS,MAAM,EAAE,CAoBnB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AA0C9E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,UAAQ,GACd,OAAO,CAAC,kBAAkB,CAAC,CA0B7B;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,EACd,OAAO,UAAQ,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAoBpD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CAuC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,wBAAwB,CAAC,CA4BnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,eAAe,EACzB,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,oBAAoB,CAyBtB"}
|
|
@@ -95,6 +95,17 @@ async function computeAccountStatuses(registry, apiCredentialStore, config, serv
|
|
|
95
95
|
}));
|
|
96
96
|
return Object.fromEntries(entries);
|
|
97
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Render one entry of a service's `baseApiUrls` for display.
|
|
100
|
+
*
|
|
101
|
+
* A service may match by literal prefix or by pattern, and a `RegExp` has no
|
|
102
|
+
* useful JSON form — it serializes as `{}`, which told a reader nothing about
|
|
103
|
+
* which hosts the service covers. Patterns are rendered in `/.../` literal
|
|
104
|
+
* form so they stay distinguishable from a plain prefix.
|
|
105
|
+
*/
|
|
106
|
+
function formatBaseApiUrl(baseApiUrl) {
|
|
107
|
+
return typeof baseApiUrl === 'string' ? baseApiUrl : String(baseApiUrl);
|
|
108
|
+
}
|
|
98
109
|
export async function servicesInfo(registry, apiCredentialStore, config, serviceName, offline = false) {
|
|
99
110
|
const service = lookupService(registry, serviceName);
|
|
100
111
|
const supportsBrowser = service.getSession !== undefined && !config.browserDisabled;
|
|
@@ -104,7 +115,7 @@ export async function servicesInfo(registry, apiCredentialStore, config, service
|
|
|
104
115
|
const serviceType = service instanceof RegisteredService ? 'user-registered' : 'built-in';
|
|
105
116
|
return {
|
|
106
117
|
type: serviceType,
|
|
107
|
-
baseApiUrls: service.baseApiUrls,
|
|
118
|
+
baseApiUrls: service.baseApiUrls.map(formatBaseApiUrl),
|
|
108
119
|
authOptions,
|
|
109
120
|
credentials,
|
|
110
121
|
setCredentialsExample: service.setCredentialsExample(serviceName),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedOperations.js","sourceRoot":"","sources":["../../src/sharedOperations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sharedOperations.js","sourceRoot":"","sources":["../../src/sharedOperations.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "3.
|
|
1
|
+
export declare const VERSION = "3.7.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import { DuplicateServiceNameError, InvalidServiceNameError, ServiceRegistry, SERVICE_REGISTRY, canonicalizeServiceName, hideServicesFromRegistry, } from '../src/serviceRegistry.js';
|
|
3
3
|
import { RegisteredService } from '../src/services/core/registered.js';
|
|
4
|
-
import { SLACK, DISCORD, GITHUB, DROPBOX, LINEAR, NOTION, GOOGLE_GMAIL, GOOGLE_CALENDAR, GOOGLE_DRIVE, GOOGLE_SHEETS, GOOGLE_DOCS, GOOGLE_SLIDES, GOOGLE_PEOPLE, MAILCHIMP, GITLAB, AWS, TELEGRAM, RAMP, TODOIST, } from '../src/services/index.js';
|
|
4
|
+
import { SLACK, DISCORD, GITHUB, DROPBOX, LINEAR, NOTION, GOOGLE_GMAIL, GOOGLE_CALENDAR, GOOGLE_DRIVE, GOOGLE_SHEETS, GOOGLE_DOCS, GOOGLE_SLIDES, GOOGLE_PEOPLE, MAILCHIMP, FASTMAIL, FASTMAIL_DAV, GITLAB, AWS, TELEGRAM, RAMP, TODOIST, } from '../src/services/index.js';
|
|
5
5
|
/**
|
|
6
6
|
* The primary (first-registered) service that matches a URL. Mirrors how the
|
|
7
7
|
* injection pipeline treats registration order as the tie-breaker.
|
|
@@ -26,6 +26,8 @@ describe('ServiceRegistry', () => {
|
|
|
26
26
|
['google-slides', GOOGLE_SLIDES],
|
|
27
27
|
['google-people', GOOGLE_PEOPLE],
|
|
28
28
|
['mailchimp', MAILCHIMP],
|
|
29
|
+
['fastmail', FASTMAIL],
|
|
30
|
+
['fastmail-dav', FASTMAIL_DAV],
|
|
29
31
|
['aws', AWS],
|
|
30
32
|
['telegram', TELEGRAM],
|
|
31
33
|
['ramp', RAMP],
|
|
@@ -60,6 +62,15 @@ describe('ServiceRegistry', () => {
|
|
|
60
62
|
['https://api.notion.com/v1/users/me', NOTION],
|
|
61
63
|
['https://api.mailchimp.com/3.0/ping', MAILCHIMP],
|
|
62
64
|
['https://us1.api.mailchimp.com/3.0/lists', MAILCHIMP],
|
|
65
|
+
// All four host shapes one Fastmail account can span: session discovery,
|
|
66
|
+
// the region-homed JMAP api the session points at, and the blob CDN in
|
|
67
|
+
// both its plain and region-homed forms.
|
|
68
|
+
['https://api.fastmail.com/jmap/session', FASTMAIL],
|
|
69
|
+
['https://phl.api.fastmail.com/jmap/api/', FASTMAIL],
|
|
70
|
+
['https://www.fastmailusercontent.com/jmap/download/u1/G1/x?type=x', FASTMAIL],
|
|
71
|
+
['https://phl-www.fastmailusercontent.com/jmap/download/u1/G1/x?type=x', FASTMAIL],
|
|
72
|
+
['https://carddav.fastmail.com/dav/addressbooks', FASTMAIL_DAV],
|
|
73
|
+
['https://caldav.fastmail.com/dav/calendars', FASTMAIL_DAV],
|
|
63
74
|
['https://sts.amazonaws.com/?Action=GetCallerIdentity', AWS],
|
|
64
75
|
['https://s3.us-east-1.amazonaws.com/my-bucket', AWS],
|
|
65
76
|
['https://api.ramp.com/developer/v1/transactions', RAMP],
|
|
@@ -70,6 +81,26 @@ describe('ServiceRegistry', () => {
|
|
|
70
81
|
expect(primaryServiceForUrl(SERVICE_REGISTRY, url)).toBe(service);
|
|
71
82
|
});
|
|
72
83
|
}
|
|
84
|
+
it('never lets the two Fastmail services claim the same URL', () => {
|
|
85
|
+
// `latchkey curl` picks among services matching a URL by registration
|
|
86
|
+
// order and offers no way to name one, so overlap here would silently
|
|
87
|
+
// route a request with whichever credential was registered first — e.g. a
|
|
88
|
+
// JMAP OAuth token sent to CardDAV, which rejects it. The services are
|
|
89
|
+
// split by host precisely so this can't happen.
|
|
90
|
+
const urls = [
|
|
91
|
+
'https://api.fastmail.com/jmap/session',
|
|
92
|
+
'https://phl.api.fastmail.com/jmap/api/',
|
|
93
|
+
'https://www.fastmailusercontent.com/jmap/download/u1/G1/x?type=x',
|
|
94
|
+
'https://phl-www.fastmailusercontent.com/jmap/download/u1/G1/x?type=x',
|
|
95
|
+
'https://carddav.fastmail.com/dav/addressbooks',
|
|
96
|
+
'https://caldav.fastmail.com/dav/calendars',
|
|
97
|
+
'https://carddav.fastmail.com/dav/principals/',
|
|
98
|
+
];
|
|
99
|
+
for (const url of urls) {
|
|
100
|
+
const claimants = SERVICE_REGISTRY.getCandidatesByUrl(url).filter((service) => service === FASTMAIL || service === FASTMAIL_DAV);
|
|
101
|
+
expect(claimants).toHaveLength(1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
73
104
|
it('should return null for unknown URL', () => {
|
|
74
105
|
expect(primaryServiceForUrl(SERVICE_REGISTRY, 'https://example.com/api')).toBeNull();
|
|
75
106
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceRegistry.test.js","sourceRoot":"","sources":["../../tests/serviceRegistry.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serviceRegistry.test.js","sourceRoot":"","sources":["../../tests/serviceRegistry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,11 +32,20 @@ const DEFAULT_RECORDING_NAME = 'login_session.json';
|
|
|
32
32
|
// Do not test services that require special followup steps: their credential is
|
|
33
33
|
// minted by an interactive browser action (a BrowserFollowupServiceSession) and
|
|
34
34
|
// is not present in the recorded login network traffic, so replaying a recording
|
|
35
|
-
// cannot reconstruct it. ngrok, huggingface and
|
|
36
|
-
// their token is created and read from a one-time reveal dialog,
|
|
35
|
+
// cannot reconstruct it. ngrok, huggingface, openrouter and tailscale are such
|
|
36
|
+
// services -- their token is created and read from a one-time reveal dialog,
|
|
37
|
+
// exactly like linear.
|
|
37
38
|
// NOTE: todoist is also a BrowserFollowupServiceSession and arguably belongs here
|
|
38
39
|
// too; it predates this list and is left as-is to keep this change scoped.
|
|
39
|
-
const BLACKLIST = new Set([
|
|
40
|
+
const BLACKLIST = new Set([
|
|
41
|
+
'dropbox',
|
|
42
|
+
'github',
|
|
43
|
+
'linear',
|
|
44
|
+
'ngrok',
|
|
45
|
+
'huggingface',
|
|
46
|
+
'openrouter',
|
|
47
|
+
'tailscale',
|
|
48
|
+
]);
|
|
40
49
|
class InvalidRecordingError extends Error {
|
|
41
50
|
constructor(message) {
|
|
42
51
|
super(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servicesAgainstRecordings.test.js","sourceRoot":"","sources":["../../tests/servicesAgainstRecordings.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAW,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,iCAAiC;AACjC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,6CAA6C;AAC7C,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAE/E,+DAA+D;AAC/D,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAEpD,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"servicesAgainstRecordings.test.js","sourceRoot":"","sources":["../../tests/servicesAgainstRecordings.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailscale.test.d.ts","sourceRoot":"","sources":["../../tests/tailscale.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { TAILSCALE, TailscaleCredentials } from '../src/services/tailscale.js';
|
|
3
|
+
import { ApiCredentialStatus } from '../src/apiCredentials/base.js';
|
|
4
|
+
import { serializeCredentials, deserializeCredentials, ApiCredentialsSchema, } from '../src/apiCredentials/serialization.js';
|
|
5
|
+
import { SERVICE_REGISTRY } from '../src/serviceRegistry.js';
|
|
6
|
+
import { resetAsyncSubprocessRunner, setAsyncSubprocessRunner } from '../src/curl.js';
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
resetAsyncSubprocessRunner();
|
|
9
|
+
});
|
|
10
|
+
function mockCurlStdout(stdout) {
|
|
11
|
+
setAsyncSubprocessRunner(() => Promise.resolve({ returncode: 0, stdout: Buffer.from(stdout), stderr: '' }));
|
|
12
|
+
}
|
|
13
|
+
function primaryServiceForUrl(url) {
|
|
14
|
+
return SERVICE_REGISTRY.getByUrl(url);
|
|
15
|
+
}
|
|
16
|
+
describe('Tailscale URL matching', () => {
|
|
17
|
+
it('matches the admin API host and not lookalikes', () => {
|
|
18
|
+
expect(primaryServiceForUrl('https://api.tailscale.com/api/v2/tailnet/example.com/users')).toBe(TAILSCALE);
|
|
19
|
+
expect(primaryServiceForUrl('https://api.tailscale.com/api/v2/tailnet/example.com/keys')).toBe(TAILSCALE);
|
|
20
|
+
});
|
|
21
|
+
it('does not match the admin console or login host', () => {
|
|
22
|
+
expect(primaryServiceForUrl('https://console.tailscale.com/admin/users')).toBeNull();
|
|
23
|
+
expect(primaryServiceForUrl('https://login.tailscale.com/admin')).toBeNull();
|
|
24
|
+
expect(primaryServiceForUrl('https://api.tailscale.com.example.com/api/v2/')).toBeNull();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('Tailscale credentials', () => {
|
|
28
|
+
it('inject an Authorization: Bearer header', async () => {
|
|
29
|
+
const credentials = new TailscaleCredentials('tskey-api-kTest11CNTRL-secret', 'example.com');
|
|
30
|
+
const injected = await credentials.injectIntoCurlCall(['https://api.tailscale.com/api/v2/']);
|
|
31
|
+
expect(injected).toEqual([
|
|
32
|
+
'-H',
|
|
33
|
+
'Authorization: Bearer tskey-api-kTest11CNTRL-secret',
|
|
34
|
+
'https://api.tailscale.com/api/v2/',
|
|
35
|
+
]);
|
|
36
|
+
});
|
|
37
|
+
it('reports the tailnet as the account and does not claim to know expiry', async () => {
|
|
38
|
+
const credentials = new TailscaleCredentials('tskey-api-kTest11CNTRL-secret', 'example.com');
|
|
39
|
+
expect(await TAILSCALE.getAccount(credentials)).toBe('example.com');
|
|
40
|
+
expect(credentials.isExpired()).toBeUndefined();
|
|
41
|
+
});
|
|
42
|
+
it('survives a serialization round-trip', () => {
|
|
43
|
+
const credentials = new TailscaleCredentials('tskey-api-kRound11CNTRL-secret', 'example.com');
|
|
44
|
+
const data = serializeCredentials(credentials);
|
|
45
|
+
// The discriminated union accepts the serialized form.
|
|
46
|
+
ApiCredentialsSchema.parse(data);
|
|
47
|
+
const restored = deserializeCredentials(data);
|
|
48
|
+
expect(restored).toBeInstanceOf(TailscaleCredentials);
|
|
49
|
+
expect(restored.token).toBe('tskey-api-kRound11CNTRL-secret');
|
|
50
|
+
expect(restored.tailnet).toBe('example.com');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('Tailscale credential check', () => {
|
|
54
|
+
// The check targets /tailnet/{tailnet}/settings; the response body is
|
|
55
|
+
// irrelevant, only the trailing HTTP status code (appended by `-w`) decides.
|
|
56
|
+
it('reports valid on a 200 from the tailnet settings endpoint', async () => {
|
|
57
|
+
mockCurlStdout('{"httpsEnabled":true}\n200');
|
|
58
|
+
const credentials = new TailscaleCredentials('tskey-api-kTest11CNTRL-secret', 'example.com');
|
|
59
|
+
expect(await TAILSCALE.checkApiCredentials(credentials)).toBe(ApiCredentialStatus.Valid);
|
|
60
|
+
});
|
|
61
|
+
it('reports invalid on a 401 (expired or revoked token)', async () => {
|
|
62
|
+
mockCurlStdout('\n401');
|
|
63
|
+
const credentials = new TailscaleCredentials('tskey-api-kTest11CNTRL-secret', 'example.com');
|
|
64
|
+
expect(await TAILSCALE.checkApiCredentials(credentials)).toBe(ApiCredentialStatus.Invalid);
|
|
65
|
+
});
|
|
66
|
+
it('reports invalid on a 404 (unknown tailnet)', async () => {
|
|
67
|
+
mockCurlStdout('\n404');
|
|
68
|
+
const credentials = new TailscaleCredentials('tskey-api-kTest11CNTRL-secret', 'example.com');
|
|
69
|
+
expect(await TAILSCALE.checkApiCredentials(credentials)).toBe(ApiCredentialStatus.Invalid);
|
|
70
|
+
});
|
|
71
|
+
it('reports unknown for a non-Tailscale credential (manual auth set)', async () => {
|
|
72
|
+
const raw = {
|
|
73
|
+
injectIntoCurlCall: () => Promise.resolve([]),
|
|
74
|
+
isExpired: () => undefined,
|
|
75
|
+
};
|
|
76
|
+
expect(await TAILSCALE.checkApiCredentials(raw)).toBe(ApiCredentialStatus.Unknown);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=tailscale.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailscale.test.js","sourceRoot":"","sources":["../../tests/tailscale.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "latchkey",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "A CLI tool that injects API credentials into curl requests to third-party services",
|
|
5
5
|
"author": "Imbue <hynek@imbue.com>",
|
|
6
6
|
"repository": {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"node": ">=20"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@imbue-ai/detent": "^1.
|
|
61
|
+
"@imbue-ai/detent": "^1.15.0",
|
|
62
62
|
"@napi-rs/keyring": "^1.2.0",
|
|
63
63
|
"commander": "^12.0.0",
|
|
64
64
|
"playwright": "~1.60.0",
|