latchkey 2.21.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +36 -4
  2. package/dist/skills/generic/latchkey/SKILL.md +21 -0
  3. package/dist/skills/openclaw/latchkey/SKILL.md +21 -0
  4. package/dist/src/apiCredentials/account.d.ts +28 -0
  5. package/dist/src/apiCredentials/account.d.ts.map +1 -0
  6. package/dist/src/apiCredentials/account.js +49 -0
  7. package/dist/src/apiCredentials/account.js.map +1 -0
  8. package/dist/src/apiCredentials/store.d.ts +70 -4
  9. package/dist/src/apiCredentials/store.d.ts.map +1 -1
  10. package/dist/src/apiCredentials/store.js +161 -19
  11. package/dist/src/apiCredentials/store.js.map +1 -1
  12. package/dist/src/apiCredentials/utils.d.ts +2 -2
  13. package/dist/src/apiCredentials/utils.d.ts.map +1 -1
  14. package/dist/src/apiCredentials/utils.js +5 -5
  15. package/dist/src/apiCredentials/utils.js.map +1 -1
  16. package/dist/src/cli.js +1 -1
  17. package/dist/src/cli.js.map +1 -1
  18. package/dist/src/cliCommands.d.ts.map +1 -1
  19. package/dist/src/cliCommands.js +118 -22
  20. package/dist/src/cliCommands.js.map +1 -1
  21. package/dist/src/config.d.ts +6 -0
  22. package/dist/src/config.d.ts.map +1 -1
  23. package/dist/src/config.js +8 -0
  24. package/dist/src/config.js.map +1 -1
  25. package/dist/src/configDataStore.d.ts +3 -0
  26. package/dist/src/configDataStore.d.ts.map +1 -1
  27. package/dist/src/configDataStore.js +1 -0
  28. package/dist/src/configDataStore.js.map +1 -1
  29. package/dist/src/curl.d.ts +21 -16
  30. package/dist/src/curl.d.ts.map +1 -1
  31. package/dist/src/curl.js +17 -24
  32. package/dist/src/curl.js.map +1 -1
  33. package/dist/src/curlInjection.d.ts +8 -2
  34. package/dist/src/curlInjection.d.ts.map +1 -1
  35. package/dist/src/curlInjection.js +13 -8
  36. package/dist/src/curlInjection.js.map +1 -1
  37. package/dist/src/errorMessages.d.ts +2 -2
  38. package/dist/src/errorMessages.d.ts.map +1 -1
  39. package/dist/src/errorMessages.js +22 -6
  40. package/dist/src/errorMessages.js.map +1 -1
  41. package/dist/src/gateway/gatewayEndpoint.d.ts +1 -1
  42. package/dist/src/gateway/gatewayEndpoint.d.ts.map +1 -1
  43. package/dist/src/gateway/gatewayEndpoint.js +3 -1
  44. package/dist/src/gateway/gatewayEndpoint.js.map +1 -1
  45. package/dist/src/gateway/latchkeyEndpoint.d.ts +6 -0
  46. package/dist/src/gateway/latchkeyEndpoint.d.ts.map +1 -1
  47. package/dist/src/gateway/latchkeyEndpoint.js +6 -4
  48. package/dist/src/gateway/latchkeyEndpoint.js.map +1 -1
  49. package/dist/src/index.d.ts +2 -2
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/index.js +1 -1
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/migrations.d.ts +27 -1
  54. package/dist/src/migrations.d.ts.map +1 -1
  55. package/dist/src/migrations.js +141 -4
  56. package/dist/src/migrations.js.map +1 -1
  57. package/dist/src/oauthUtils.d.ts +2 -2
  58. package/dist/src/oauthUtils.d.ts.map +1 -1
  59. package/dist/src/oauthUtils.js +5 -5
  60. package/dist/src/oauthUtils.js.map +1 -1
  61. package/dist/src/services/aws.d.ts +1 -0
  62. package/dist/src/services/aws.d.ts.map +1 -1
  63. package/dist/src/services/aws.js +13 -0
  64. package/dist/src/services/aws.js.map +1 -1
  65. package/dist/src/services/calendly.d.ts +2 -0
  66. package/dist/src/services/calendly.d.ts.map +1 -1
  67. package/dist/src/services/calendly.js +7 -0
  68. package/dist/src/services/calendly.js.map +1 -1
  69. package/dist/src/services/coolify.d.ts +3 -1
  70. package/dist/src/services/coolify.d.ts.map +1 -1
  71. package/dist/src/services/coolify.js +10 -1
  72. package/dist/src/services/coolify.js.map +1 -1
  73. package/dist/src/services/core/base.d.ts +43 -1
  74. package/dist/src/services/core/base.d.ts.map +1 -1
  75. package/dist/src/services/core/base.js +29 -9
  76. package/dist/src/services/core/base.js.map +1 -1
  77. package/dist/src/services/core/registered.d.ts +1 -0
  78. package/dist/src/services/core/registered.d.ts.map +1 -1
  79. package/dist/src/services/core/registered.js +5 -0
  80. package/dist/src/services/core/registered.js.map +1 -1
  81. package/dist/src/services/discord.d.ts +1 -0
  82. package/dist/src/services/discord.d.ts.map +1 -1
  83. package/dist/src/services/discord.js +9 -0
  84. package/dist/src/services/discord.js.map +1 -1
  85. package/dist/src/services/dropbox.d.ts +2 -1
  86. package/dist/src/services/dropbox.d.ts.map +1 -1
  87. package/dist/src/services/dropbox.js +17 -11
  88. package/dist/src/services/dropbox.js.map +1 -1
  89. package/dist/src/services/figma.d.ts +2 -0
  90. package/dist/src/services/figma.d.ts.map +1 -1
  91. package/dist/src/services/figma.js +7 -0
  92. package/dist/src/services/figma.js.map +1 -1
  93. package/dist/src/services/github.d.ts +1 -0
  94. package/dist/src/services/github.d.ts.map +1 -1
  95. package/dist/src/services/github.js +9 -0
  96. package/dist/src/services/github.js.map +1 -1
  97. package/dist/src/services/gitlab.d.ts +2 -0
  98. package/dist/src/services/gitlab.d.ts.map +1 -1
  99. package/dist/src/services/gitlab.js +9 -0
  100. package/dist/src/services/gitlab.js.map +1 -1
  101. package/dist/src/services/google/analytics.d.ts +0 -1
  102. package/dist/src/services/google/analytics.d.ts.map +1 -1
  103. package/dist/src/services/google/analytics.js +0 -3
  104. package/dist/src/services/google/analytics.js.map +1 -1
  105. package/dist/src/services/google/base.d.ts +11 -0
  106. package/dist/src/services/google/base.d.ts.map +1 -1
  107. package/dist/src/services/google/base.js +26 -7
  108. package/dist/src/services/google/base.js.map +1 -1
  109. package/dist/src/services/google/calendar.d.ts +0 -1
  110. package/dist/src/services/google/calendar.d.ts.map +1 -1
  111. package/dist/src/services/google/calendar.js +0 -3
  112. package/dist/src/services/google/calendar.js.map +1 -1
  113. package/dist/src/services/google/directions.d.ts +1 -0
  114. package/dist/src/services/google/directions.d.ts.map +1 -1
  115. package/dist/src/services/google/directions.js +5 -0
  116. package/dist/src/services/google/directions.js.map +1 -1
  117. package/dist/src/services/google/docs.d.ts +0 -1
  118. package/dist/src/services/google/docs.d.ts.map +1 -1
  119. package/dist/src/services/google/docs.js +0 -3
  120. package/dist/src/services/google/docs.js.map +1 -1
  121. package/dist/src/services/google/drive.d.ts +0 -1
  122. package/dist/src/services/google/drive.d.ts.map +1 -1
  123. package/dist/src/services/google/drive.js +0 -3
  124. package/dist/src/services/google/drive.js.map +1 -1
  125. package/dist/src/services/google/gmail.d.ts +0 -1
  126. package/dist/src/services/google/gmail.d.ts.map +1 -1
  127. package/dist/src/services/google/gmail.js +0 -3
  128. package/dist/src/services/google/gmail.js.map +1 -1
  129. package/dist/src/services/google/people.d.ts +0 -1
  130. package/dist/src/services/google/people.d.ts.map +1 -1
  131. package/dist/src/services/google/people.js +0 -3
  132. package/dist/src/services/google/people.js.map +1 -1
  133. package/dist/src/services/google/sheets.d.ts +0 -1
  134. package/dist/src/services/google/sheets.d.ts.map +1 -1
  135. package/dist/src/services/google/sheets.js +0 -3
  136. package/dist/src/services/google/sheets.js.map +1 -1
  137. package/dist/src/services/google/slides.d.ts +0 -1
  138. package/dist/src/services/google/slides.d.ts.map +1 -1
  139. package/dist/src/services/google/slides.js +0 -3
  140. package/dist/src/services/google/slides.js.map +1 -1
  141. package/dist/src/services/index.d.ts +1 -1
  142. package/dist/src/services/index.d.ts.map +1 -1
  143. package/dist/src/services/index.js.map +1 -1
  144. package/dist/src/services/linear.d.ts +2 -1
  145. package/dist/src/services/linear.d.ts.map +1 -1
  146. package/dist/src/services/linear.js +8 -1
  147. package/dist/src/services/linear.js.map +1 -1
  148. package/dist/src/services/mailchimp.d.ts +2 -0
  149. package/dist/src/services/mailchimp.d.ts.map +1 -1
  150. package/dist/src/services/mailchimp.js +7 -0
  151. package/dist/src/services/mailchimp.js.map +1 -1
  152. package/dist/src/services/notion-mcp.d.ts +3 -2
  153. package/dist/src/services/notion-mcp.d.ts.map +1 -1
  154. package/dist/src/services/notion-mcp.js +111 -14
  155. package/dist/src/services/notion-mcp.js.map +1 -1
  156. package/dist/src/services/notion.d.ts +2 -0
  157. package/dist/src/services/notion.d.ts.map +1 -1
  158. package/dist/src/services/notion.js +17 -0
  159. package/dist/src/services/notion.js.map +1 -1
  160. package/dist/src/services/ramp.d.ts +11 -2
  161. package/dist/src/services/ramp.d.ts.map +1 -1
  162. package/dist/src/services/ramp.js +35 -9
  163. package/dist/src/services/ramp.js.map +1 -1
  164. package/dist/src/services/sentry.d.ts +3 -2
  165. package/dist/src/services/sentry.d.ts.map +1 -1
  166. package/dist/src/services/sentry.js +12 -27
  167. package/dist/src/services/sentry.js.map +1 -1
  168. package/dist/src/services/slack.d.ts +3 -2
  169. package/dist/src/services/slack.d.ts.map +1 -1
  170. package/dist/src/services/slack.js +19 -13
  171. package/dist/src/services/slack.js.map +1 -1
  172. package/dist/src/services/stripe.d.ts +7 -0
  173. package/dist/src/services/stripe.d.ts.map +1 -1
  174. package/dist/src/services/stripe.js +15 -0
  175. package/dist/src/services/stripe.js.map +1 -1
  176. package/dist/src/services/telegram.d.ts +1 -0
  177. package/dist/src/services/telegram.d.ts.map +1 -1
  178. package/dist/src/services/telegram.js +7 -0
  179. package/dist/src/services/telegram.js.map +1 -1
  180. package/dist/src/services/todoist.d.ts +2 -1
  181. package/dist/src/services/todoist.d.ts.map +1 -1
  182. package/dist/src/services/todoist.js +9 -1
  183. package/dist/src/services/todoist.js.map +1 -1
  184. package/dist/src/services/umami.d.ts +3 -1
  185. package/dist/src/services/umami.d.ts.map +1 -1
  186. package/dist/src/services/umami.js +11 -1
  187. package/dist/src/services/umami.js.map +1 -1
  188. package/dist/src/services/yelp.d.ts +1 -0
  189. package/dist/src/services/yelp.d.ts.map +1 -1
  190. package/dist/src/services/yelp.js +5 -0
  191. package/dist/src/services/yelp.js.map +1 -1
  192. package/dist/src/services/zoom.d.ts +8 -0
  193. package/dist/src/services/zoom.d.ts.map +1 -1
  194. package/dist/src/services/zoom.js +16 -0
  195. package/dist/src/services/zoom.js.map +1 -1
  196. package/dist/src/sharedOperations.d.ts +30 -10
  197. package/dist/src/sharedOperations.d.ts.map +1 -1
  198. package/dist/src/sharedOperations.js +67 -29
  199. package/dist/src/sharedOperations.js.map +1 -1
  200. package/dist/src/version.d.ts +1 -1
  201. package/dist/src/version.d.ts.map +1 -1
  202. package/dist/src/version.js +1 -1
  203. package/dist/src/version.js.map +1 -1
  204. package/dist/tests/apiCredentialStore.test.js +155 -2
  205. package/dist/tests/apiCredentialStore.test.js.map +1 -1
  206. package/dist/tests/apiCredentialsUtils.test.js +1 -1
  207. package/dist/tests/apiCredentialsUtils.test.js.map +1 -1
  208. package/dist/tests/cli.test.js +334 -147
  209. package/dist/tests/cli.test.js.map +1 -1
  210. package/dist/tests/config.test.js +5 -0
  211. package/dist/tests/config.test.js.map +1 -1
  212. package/dist/tests/gateway.test.js +8 -18
  213. package/dist/tests/gateway.test.js.map +1 -1
  214. package/dist/tests/latchkeyEndpoint.test.js +18 -28
  215. package/dist/tests/latchkeyEndpoint.test.js.map +1 -1
  216. package/dist/tests/migrations.test.js +299 -39
  217. package/dist/tests/migrations.test.js.map +1 -1
  218. package/dist/tests/mockService.d.ts +25 -0
  219. package/dist/tests/mockService.d.ts.map +1 -0
  220. package/dist/tests/mockService.js +40 -0
  221. package/dist/tests/mockService.js.map +1 -0
  222. package/dist/tests/oauthUtils.test.js +12 -12
  223. package/dist/tests/oauthUtils.test.js.map +1 -1
  224. package/dist/tests/serviceAccounts.test.d.ts +12 -0
  225. package/dist/tests/serviceAccounts.test.d.ts.map +1 -0
  226. package/dist/tests/serviceAccounts.test.js +278 -0
  227. package/dist/tests/serviceAccounts.test.js.map +1 -0
  228. package/dist/tests/sharedOperations.test.js +327 -58
  229. package/dist/tests/sharedOperations.test.js.map +1 -1
  230. package/package.json +1 -1
@@ -4,15 +4,17 @@ import { join } from 'node:path';
4
4
  import { tmpdir } from 'node:os';
5
5
  import { EncryptedStorage } from '../src/encryptedStorage.js';
6
6
  import { ApiCredentialStore } from '../src/apiCredentials/store.js';
7
- import { ApiCredentialStatus, OAuthCredentials } from '../src/apiCredentials/base.js';
7
+ import { OAuthCredentials } from '../src/apiCredentials/base.js';
8
8
  import { SlackApiCredentials } from '../src/services/slack.js';
9
- import { NoCurlCredentialsNotSupportedError, PrepareInputInvalidError, PrepareNotSupportedError, } from '../src/services/core/base.js';
9
+ import { PrepareInputInvalidError, PrepareNotSupportedError, } from '../src/services/core/base.js';
10
+ import { MockService } from './mockService.js';
10
11
  import { GOOGLE_GMAIL } from '../src/services/google/gmail.js';
11
12
  import { NOTION_MCP } from '../src/services/notion-mcp.js';
12
13
  import { RegisteredService } from '../src/services/core/registered.js';
13
14
  import { ServiceRegistry } from '../src/serviceRegistry.js';
15
+ import { saveBrowserConfig } from '../src/configDataStore.js';
14
16
  import { Config } from '../src/config.js';
15
- import { servicesList, servicesInfo, authList, authBrowser, authBrowserPrepare, prepareService, UnknownServiceError, PreparationRequiredError, } from '../src/sharedOperations.js';
17
+ import { servicesList, servicesInfo, authList, authBrowser, authBrowserPrepare, prepareService, UnknownServiceError, AccountNotFoundError, PreparationRequiredError, } from '../src/sharedOperations.js';
16
18
  import { BrowserFlowsNotSupportedError } from '../src/playwrightUtils.js';
17
19
  const TEST_ENCRYPTION_KEY = 'dGVzdGtleXRlc3RrZXl0ZXN0a2V5dGVzdGtleXRlc3Q=';
18
20
  function writeSecureFile(path, content) {
@@ -20,25 +22,7 @@ function writeSecureFile(path, content) {
20
22
  storage.writeFile(path, content);
21
23
  }
22
24
  function createMockService(overrides = {}) {
23
- return {
24
- name: 'slack',
25
- displayName: 'Slack',
26
- baseApiUrls: ['https://slack.com/api/'],
27
- loginUrl: 'https://slack.com/signin',
28
- info: 'Test info for Slack service.',
29
- credentialCheckCurlArguments: ['https://slack.com/api/auth.test'],
30
- checkApiCredentials: vi.fn().mockResolvedValue(ApiCredentialStatus.Valid),
31
- setCredentialsExample(serviceName) {
32
- return `latchkey auth set ${serviceName} -H "Authorization: Bearer xoxb-your-token"`;
33
- },
34
- getCredentialsNoCurl() {
35
- throw new NoCurlCredentialsNotSupportedError('slack');
36
- },
37
- getSession: vi.fn().mockReturnValue({
38
- login: vi.fn().mockResolvedValue(new SlackApiCredentials('xoxc-test-token', 'test-cookie')),
39
- }),
40
- ...overrides,
41
- };
25
+ return Object.assign(new MockService(), overrides);
42
26
  }
43
27
  function createMockConfig(overrides = {}) {
44
28
  const defaultConfig = new Config(() => undefined);
@@ -55,7 +39,9 @@ describe('operations', () => {
55
39
  });
56
40
  function createApiCredentialStore(credentialsData = {}) {
57
41
  const storePath = join(tempDir, 'credentials.json');
58
- writeSecureFile(storePath, JSON.stringify(credentialsData));
42
+ // Store credentials under the default account, matching the on-disk layout.
43
+ const nestedCredentials = Object.fromEntries(Object.entries(credentialsData).map(([service, creds]) => [service, { '': creds }]));
44
+ writeSecureFile(storePath, JSON.stringify({ credentials: nestedCredentials }));
59
45
  const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
60
46
  return new ApiCredentialStore(storePath, encryptedStorage);
61
47
  }
@@ -110,7 +96,7 @@ describe('operations', () => {
110
96
  expect(info.baseApiUrls).toEqual(['https://slack.com/api/']);
111
97
  expect(info.authOptions).toContain('browser');
112
98
  expect(info.authOptions).toContain('set');
113
- expect(info.credentialStatus).toBe('missing');
99
+ expect(info.credentials).toEqual({});
114
100
  expect(info.developerNotes).toBe('Test info for Slack service.');
115
101
  });
116
102
  it('should throw UnknownServiceError for unknown service', async () => {
@@ -136,6 +122,19 @@ describe('operations', () => {
136
122
  const info = await servicesInfo(registry, store, config, 'my-gitlab');
137
123
  expect(info.type).toBe('user-registered');
138
124
  });
125
+ it('should return stored credentials keyed by account', async () => {
126
+ const service = createMockService();
127
+ const registry = new ServiceRegistry([service]);
128
+ const store = createApiCredentialStore();
129
+ store.save('slack', new SlackApiCredentials('default-token', 'default-cookie'));
130
+ store.save('slack', new SlackApiCredentials('work-token', 'work-cookie'), 'work@example.com');
131
+ const config = createMockConfig();
132
+ const info = await servicesInfo(registry, store, config, 'slack');
133
+ expect(info.credentials).toEqual({
134
+ '': { credentialType: 'slack', credentialStatus: 'valid' },
135
+ 'work@example.com': { credentialType: 'slack', credentialStatus: 'valid' },
136
+ });
137
+ });
139
138
  });
140
139
  describe('authList', () => {
141
140
  it('should return stored credentials with status', async () => {
@@ -146,8 +145,10 @@ describe('operations', () => {
146
145
  });
147
146
  const result = await authList(registry, store, createMockConfig());
148
147
  expect(result.slack).toEqual({
149
- credentialType: 'slack',
150
- credentialStatus: 'valid',
148
+ '': {
149
+ credentialType: 'slack',
150
+ credentialStatus: 'valid',
151
+ },
151
152
  });
152
153
  });
153
154
  it('should return empty object when no credentials stored', async () => {
@@ -163,8 +164,10 @@ describe('operations', () => {
163
164
  });
164
165
  const result = await authList(registry, store, createMockConfig());
165
166
  expect(result.unknown).toEqual({
166
- credentialType: 'rawCurl',
167
- credentialStatus: 'valid',
167
+ '': {
168
+ credentialType: 'rawCurl',
169
+ credentialStatus: 'valid',
170
+ },
168
171
  });
169
172
  });
170
173
  });
@@ -197,6 +200,223 @@ describe('operations', () => {
197
200
  const config = createMockConfig();
198
201
  await expect(authBrowser(registry, store, encryptedStorage, config, 'slack')).rejects.toThrow(PreparationRequiredError);
199
202
  });
203
+ it('stores credentials under the account reported by the login flow', async () => {
204
+ const originalPlatform = process.platform;
205
+ // Pretend we are on macOS so the graphical-environment check passes
206
+ // without relying on DISPLAY being set.
207
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
208
+ try {
209
+ const login = vi.fn().mockResolvedValue({
210
+ credentials: new SlackApiCredentials('xoxc-token', 'cookie'),
211
+ account: 'user@example.com',
212
+ });
213
+ const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
214
+ const registry = new ServiceRegistry([service]);
215
+ const store = createApiCredentialStore();
216
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
217
+ const config = createMockConfig({ directory: tempDir });
218
+ // A valid browser config is required for the login flow to start; point
219
+ // it at any existing file.
220
+ saveBrowserConfig(config.configPath, {
221
+ executablePath: process.execPath,
222
+ source: 'system',
223
+ discoveredAt: new Date().toISOString(),
224
+ });
225
+ const result = await authBrowser(registry, store, encryptedStorage, config, 'slack');
226
+ expect(result).toEqual({ account: 'user@example.com' });
227
+ expect(store.listAccounts('slack')).toEqual(['user@example.com']);
228
+ expect(store.get('slack', 'user@example.com')).toBeInstanceOf(SlackApiCredentials);
229
+ }
230
+ finally {
231
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
232
+ }
233
+ });
234
+ it('omits the browser state path when ephemeral browser mode is enabled', async () => {
235
+ const originalPlatform = process.platform;
236
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
237
+ try {
238
+ const login = vi.fn().mockResolvedValue({
239
+ credentials: new SlackApiCredentials('xoxc-token', 'cookie'),
240
+ account: 'user@example.com',
241
+ });
242
+ const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
243
+ const registry = new ServiceRegistry([service]);
244
+ const store = createApiCredentialStore();
245
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
246
+ const config = createMockConfig({
247
+ directory: tempDir,
248
+ browserEphemeral: true,
249
+ });
250
+ saveBrowserConfig(config.configPath, {
251
+ executablePath: process.execPath,
252
+ source: 'system',
253
+ discoveredAt: new Date().toISOString(),
254
+ });
255
+ await authBrowser(registry, store, encryptedStorage, config, 'slack');
256
+ const launchOptions = login.mock.calls[0]?.[1];
257
+ expect(launchOptions.browserStatePath).toBeUndefined();
258
+ }
259
+ finally {
260
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
261
+ }
262
+ });
263
+ it('passes the browser state path when ephemeral browser mode is disabled', async () => {
264
+ const originalPlatform = process.platform;
265
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
266
+ try {
267
+ const login = vi.fn().mockResolvedValue({
268
+ credentials: new SlackApiCredentials('xoxc-token', 'cookie'),
269
+ account: 'user@example.com',
270
+ });
271
+ const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
272
+ const registry = new ServiceRegistry([service]);
273
+ const store = createApiCredentialStore();
274
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
275
+ const config = createMockConfig({ directory: tempDir });
276
+ saveBrowserConfig(config.configPath, {
277
+ executablePath: process.execPath,
278
+ source: 'system',
279
+ discoveredAt: new Date().toISOString(),
280
+ });
281
+ await authBrowser(registry, store, encryptedStorage, config, 'slack');
282
+ const launchOptions = login.mock.calls[0]?.[1];
283
+ expect(launchOptions.browserStatePath).toBe(config.browserStatePath);
284
+ }
285
+ finally {
286
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
287
+ }
288
+ });
289
+ it('logs in to an additional account without ambiguity', async () => {
290
+ const originalPlatform = process.platform;
291
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
292
+ try {
293
+ const login = vi.fn().mockResolvedValue({
294
+ credentials: new SlackApiCredentials('second-token', 'second-cookie'),
295
+ account: 'second@example.com',
296
+ });
297
+ const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
298
+ const registry = new ServiceRegistry([service]);
299
+ const store = createApiCredentialStore();
300
+ store.save('slack', new SlackApiCredentials('first-token', 'first-cookie'), 'first@example.com');
301
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
302
+ const config = createMockConfig({ directory: tempDir });
303
+ saveBrowserConfig(config.configPath, {
304
+ executablePath: process.execPath,
305
+ source: 'system',
306
+ discoveredAt: new Date().toISOString(),
307
+ });
308
+ const result = await authBrowser(registry, store, encryptedStorage, config, 'slack');
309
+ expect(result).toEqual({ account: 'second@example.com' });
310
+ expect(store.listAccounts('slack')).toEqual(['first@example.com', 'second@example.com']);
311
+ }
312
+ finally {
313
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
314
+ }
315
+ });
316
+ it('uses the stored preparation for login and keeps it for future logins', async () => {
317
+ const originalPlatform = process.platform;
318
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
319
+ try {
320
+ const preparedClient = new OAuthCredentials('client-id', 'client-secret');
321
+ const fullCredentials = new OAuthCredentials('client-id', 'client-secret', 'access-token', 'refresh-token');
322
+ const login = vi.fn().mockResolvedValue({
323
+ credentials: fullCredentials,
324
+ account: 'user@example.com',
325
+ });
326
+ const service = createMockService({
327
+ getSession: vi.fn().mockReturnValue({ prepare: vi.fn(), login }),
328
+ });
329
+ const registry = new ServiceRegistry([service]);
330
+ const store = createApiCredentialStore();
331
+ store.savePreparation('slack', preparedClient);
332
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
333
+ const config = createMockConfig({ directory: tempDir });
334
+ saveBrowserConfig(config.configPath, {
335
+ executablePath: process.execPath,
336
+ source: 'system',
337
+ discoveredAt: new Date().toISOString(),
338
+ });
339
+ const result = await authBrowser(registry, store, encryptedStorage, config, 'slack');
340
+ expect(result).toEqual({ account: 'user@example.com' });
341
+ expect(store.listAccounts('slack')).toEqual(['user@example.com']);
342
+ const reusedCredentials = login.mock.calls[0]?.[2];
343
+ expect(reusedCredentials.clientId).toBe('client-id');
344
+ // The preparation stays around so another account can log in with the
345
+ // same client.
346
+ expect(store.getPreparation('slack')).toBeInstanceOf(OAuthCredentials);
347
+ }
348
+ finally {
349
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
350
+ }
351
+ });
352
+ it("reuses the named account's credentials when an account is given", async () => {
353
+ const originalPlatform = process.platform;
354
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
355
+ try {
356
+ const existingCredentials = new OAuthCredentials('client-id', 'client-secret', 'old-access-token', 'old-refresh-token');
357
+ const login = vi.fn().mockResolvedValue({
358
+ credentials: new OAuthCredentials('client-id', 'client-secret', 'new-access-token', 'new-refresh-token'),
359
+ account: 'second@example.com',
360
+ });
361
+ const service = createMockService({
362
+ getSession: vi.fn().mockReturnValue({ prepare: vi.fn(), login }),
363
+ });
364
+ const registry = new ServiceRegistry([service]);
365
+ const store = createApiCredentialStore();
366
+ store.save('slack', existingCredentials, 'first@example.com');
367
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
368
+ const config = createMockConfig({ directory: tempDir });
369
+ saveBrowserConfig(config.configPath, {
370
+ executablePath: process.execPath,
371
+ source: 'system',
372
+ discoveredAt: new Date().toISOString(),
373
+ });
374
+ const result = await authBrowser(registry, store, encryptedStorage, config, 'slack', 'first@example.com');
375
+ expect(result).toEqual({ account: 'second@example.com' });
376
+ expect(store.listAccounts('slack')).toEqual(['first@example.com', 'second@example.com']);
377
+ const reusedCredentials = login.mock.calls[0]?.[2];
378
+ expect(reusedCredentials.accessToken).toBe('old-access-token');
379
+ }
380
+ finally {
381
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
382
+ }
383
+ });
384
+ it('throws AccountNotFoundError when the given account has no credentials', async () => {
385
+ const service = createMockService({
386
+ getSession: vi.fn().mockReturnValue({ login: vi.fn() }),
387
+ });
388
+ const registry = new ServiceRegistry([service]);
389
+ const store = createApiCredentialStore();
390
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
391
+ const config = createMockConfig();
392
+ await expect(authBrowser(registry, store, encryptedStorage, config, 'slack', 'missing@example.com')).rejects.toThrow(AccountNotFoundError);
393
+ });
394
+ it('keeps complete default-account credentials when a login adds a named account', async () => {
395
+ const originalPlatform = process.platform;
396
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
397
+ try {
398
+ const login = vi.fn().mockResolvedValue({
399
+ credentials: new SlackApiCredentials('named-token', 'named-cookie'),
400
+ account: 'user@example.com',
401
+ });
402
+ const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
403
+ const registry = new ServiceRegistry([service]);
404
+ const store = createApiCredentialStore();
405
+ store.save('slack', new SlackApiCredentials('default-token', 'default-cookie'), '');
406
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
407
+ const config = createMockConfig({ directory: tempDir });
408
+ saveBrowserConfig(config.configPath, {
409
+ executablePath: process.execPath,
410
+ source: 'system',
411
+ discoveredAt: new Date().toISOString(),
412
+ });
413
+ await authBrowser(registry, store, encryptedStorage, config, 'slack');
414
+ expect(store.listAccounts('slack')).toEqual(['', 'user@example.com']);
415
+ }
416
+ finally {
417
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
418
+ }
419
+ });
200
420
  });
201
421
  describe('authBrowserPrepare', () => {
202
422
  it('should throw UnknownServiceError for unknown service', async () => {
@@ -220,21 +440,39 @@ describe('operations', () => {
220
440
  const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
221
441
  expect(result.alreadyPrepared).toBe(true);
222
442
  });
223
- it('should return alreadyPrepared true when credentials already exist', async () => {
224
- const service = createMockService({
225
- getSession: vi.fn().mockReturnValue({
226
- prepare: vi.fn(),
227
- login: vi.fn(),
228
- }),
229
- });
230
- const registry = new ServiceRegistry([service]);
231
- const store = createApiCredentialStore({
232
- slack: { objectType: 'slack', token: 'test-token', dCookie: 'test-cookie' },
233
- });
234
- const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
235
- const config = createMockConfig();
236
- const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
237
- expect(result.alreadyPrepared).toBe(true);
443
+ it('re-runs the prepare flow when a preparation already exists', async () => {
444
+ const originalPlatform = process.platform;
445
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
446
+ try {
447
+ const prepare = vi
448
+ .fn()
449
+ .mockResolvedValue(new OAuthCredentials('new-client-id', 'new-client-secret'));
450
+ const service = createMockService({
451
+ getSession: vi.fn().mockReturnValue({
452
+ prepare,
453
+ login: vi.fn(),
454
+ }),
455
+ });
456
+ const registry = new ServiceRegistry([service]);
457
+ const store = createApiCredentialStore();
458
+ store.savePreparation('slack', new OAuthCredentials('client-id', 'client-secret'));
459
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
460
+ const config = createMockConfig({ directory: tempDir });
461
+ saveBrowserConfig(config.configPath, {
462
+ executablePath: process.execPath,
463
+ source: 'system',
464
+ discoveredAt: new Date().toISOString(),
465
+ });
466
+ const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
467
+ expect(result).toEqual({ alreadyPrepared: false });
468
+ expect(prepare).toHaveBeenCalledOnce();
469
+ // The new preparation overwrites the previous one.
470
+ const preparation = store.getPreparation('slack');
471
+ expect(preparation.clientId).toBe('new-client-id');
472
+ }
473
+ finally {
474
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
475
+ }
238
476
  });
239
477
  it('should return alreadyPrepared true when service has no getSession', async () => {
240
478
  const service = createMockService({ getSession: undefined });
@@ -245,29 +483,60 @@ describe('operations', () => {
245
483
  const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
246
484
  expect(result.alreadyPrepared).toBe(true);
247
485
  });
486
+ it("stores the prepared credentials as the service's preparation", async () => {
487
+ const originalPlatform = process.platform;
488
+ Object.defineProperty(process, 'platform', { value: 'darwin' });
489
+ try {
490
+ const prepare = vi
491
+ .fn()
492
+ .mockResolvedValue(new OAuthCredentials('client-id', 'client-secret'));
493
+ const service = createMockService({
494
+ getSession: vi.fn().mockReturnValue({ prepare, login: vi.fn() }),
495
+ });
496
+ const registry = new ServiceRegistry([service]);
497
+ const store = createApiCredentialStore();
498
+ const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
499
+ const config = createMockConfig({ directory: tempDir });
500
+ saveBrowserConfig(config.configPath, {
501
+ executablePath: process.execPath,
502
+ source: 'system',
503
+ discoveredAt: new Date().toISOString(),
504
+ });
505
+ const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
506
+ expect(result).toEqual({ alreadyPrepared: false });
507
+ expect(store.getPreparation('slack')).toBeInstanceOf(OAuthCredentials);
508
+ // Preparations are not account credentials.
509
+ expect(store.listAccounts('slack')).toEqual([]);
510
+ expect(prepare).toHaveBeenCalledOnce();
511
+ }
512
+ finally {
513
+ Object.defineProperty(process, 'platform', { value: originalPlatform });
514
+ }
515
+ });
248
516
  });
249
517
  describe('prepareService', () => {
250
- it('stores token-less OAuth credentials for a Google service and returns the result', () => {
518
+ it('stores a token-less OAuth preparation for a Google service and returns the result', () => {
251
519
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
252
520
  const store = createApiCredentialStore();
253
521
  const result = prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'cid', clientSecret: 'csecret' }));
254
522
  expect(result).toEqual({ serviceName: 'google-gmail', credentialType: 'oauth' });
255
- const stored = store.get('google-gmail');
523
+ const stored = store.getPreparation('google-gmail');
256
524
  expect(stored).toBeInstanceOf(OAuthCredentials);
257
525
  const oauth = stored;
258
526
  expect(oauth.clientId).toBe('cid');
259
527
  expect(oauth.clientSecret).toBe('csecret');
260
528
  expect(oauth.accessToken).toBeUndefined();
261
529
  expect(oauth.refreshToken).toBeUndefined();
530
+ // Preparations do not touch the credentials section.
531
+ expect(store.get('google-gmail')).toBeNull();
262
532
  });
263
- it('overwrites existing credentials unconditionally', () => {
533
+ it('overwrites an existing preparation unconditionally', () => {
264
534
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
265
- const store = createApiCredentialStore({
266
- 'google-gmail': { objectType: 'oauth', clientId: 'old-id', clientSecret: 'old-secret' },
267
- });
535
+ const store = createApiCredentialStore();
536
+ store.savePreparation('google-gmail', new OAuthCredentials('old-id', 'old-secret'));
268
537
  prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'new-id', clientSecret: 'new-secret' }));
269
- expect(store.get('google-gmail').clientId).toBe('new-id');
270
- expect(store.get('google-gmail').clientSecret).toBe('new-secret');
538
+ expect(store.getPreparation('google-gmail').clientId).toBe('new-id');
539
+ expect(store.getPreparation('google-gmail').clientSecret).toBe('new-secret');
271
540
  });
272
541
  it('throws UnknownServiceError for an unknown service', () => {
273
542
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
@@ -278,25 +547,25 @@ describe('operations', () => {
278
547
  const registry = new ServiceRegistry([createMockService({ name: 'slack' })]);
279
548
  const store = createApiCredentialStore();
280
549
  expect(() => prepareService(registry, store, 'slack', JSON.stringify({ clientId: 'a', clientSecret: 'b' }))).toThrow(PrepareNotSupportedError);
281
- expect(store.get('slack')).toBeNull();
550
+ expect(store.getPreparation('slack')).toBeNull();
282
551
  });
283
552
  it('rejects malformed JSON without storing anything', () => {
284
553
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
285
554
  const store = createApiCredentialStore();
286
555
  expect(() => prepareService(registry, store, 'google-gmail', '{not valid')).toThrow(PrepareInputInvalidError);
287
- expect(store.get('google-gmail')).toBeNull();
556
+ expect(store.getPreparation('google-gmail')).toBeNull();
288
557
  });
289
558
  it('rejects input missing required fields without storing anything', () => {
290
559
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
291
560
  const store = createApiCredentialStore();
292
561
  expect(() => prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'only-id' }))).toThrow(PrepareInputInvalidError);
293
- expect(store.get('google-gmail')).toBeNull();
562
+ expect(store.getPreparation('google-gmail')).toBeNull();
294
563
  });
295
564
  it('rejects unknown keys (strict schema)', () => {
296
565
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
297
566
  const store = createApiCredentialStore();
298
567
  expect(() => prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'a', clientSecret: 'b', extra: 'nope' }))).toThrow(PrepareInputInvalidError);
299
- expect(store.get('google-gmail')).toBeNull();
568
+ expect(store.getPreparation('google-gmail')).toBeNull();
300
569
  });
301
570
  it('rejects empty string fields', () => {
302
571
  const registry = new ServiceRegistry([GOOGLE_GMAIL]);
@@ -308,7 +577,7 @@ describe('operations', () => {
308
577
  const store = createApiCredentialStore();
309
578
  const result = prepareService(registry, store, 'notion-mcp', JSON.stringify({ clientId: 'notion-client-id' }));
310
579
  expect(result).toEqual({ serviceName: 'notion-mcp', credentialType: 'oauth' });
311
- const stored = store.get('notion-mcp');
580
+ const stored = store.getPreparation('notion-mcp');
312
581
  expect(stored).toBeInstanceOf(OAuthCredentials);
313
582
  const oauth = stored;
314
583
  expect(oauth.clientId).toBe('notion-client-id');
@@ -320,13 +589,13 @@ describe('operations', () => {
320
589
  const registry = new ServiceRegistry([NOTION_MCP]);
321
590
  const store = createApiCredentialStore();
322
591
  expect(() => prepareService(registry, store, 'notion-mcp', JSON.stringify({ clientId: 'a', clientSecret: 'b' }))).toThrow(PrepareInputInvalidError);
323
- expect(store.get('notion-mcp')).toBeNull();
592
+ expect(store.getPreparation('notion-mcp')).toBeNull();
324
593
  });
325
594
  it('rejects notion-mcp input missing clientId', () => {
326
595
  const registry = new ServiceRegistry([NOTION_MCP]);
327
596
  const store = createApiCredentialStore();
328
597
  expect(() => prepareService(registry, store, 'notion-mcp', '{}')).toThrow(PrepareInputInvalidError);
329
- expect(store.get('notion-mcp')).toBeNull();
598
+ expect(store.getPreparation('notion-mcp')).toBeNull();
330
599
  });
331
600
  });
332
601
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sharedOperations.test.js","sourceRoot":"","sources":["../../tests/sharedOperations.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sharedOperations.test.js","sourceRoot":"","sources":["../../tests/sharedOperations.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "latchkey",
3
- "version": "2.21.0",
3
+ "version": "3.0.1",
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": {