@yadsh/dsh-qa-surface 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +251 -12
  2. package/lib/access/service.js +49 -10
  3. package/lib/access/service.js.map +1 -1
  4. package/lib/account-remotes.js +41 -0
  5. package/lib/account-remotes.js.map +1 -1
  6. package/lib/accounts/database.js +140 -0
  7. package/lib/accounts/database.js.map +1 -1
  8. package/lib/accounts/errors.js.map +1 -1
  9. package/lib/accounts/service-token.js +103 -0
  10. package/lib/accounts/service-token.js.map +1 -0
  11. package/lib/accounts/store.js +291 -5
  12. package/lib/accounts/store.js.map +1 -1
  13. package/lib/admin/conversation-log.js +14 -8
  14. package/lib/admin/conversation-log.js.map +1 -1
  15. package/lib/admin/permissions.js +5 -0
  16. package/lib/admin/permissions.js.map +1 -1
  17. package/lib/admin/quality-store.js +4 -0
  18. package/lib/admin/quality-store.js.map +1 -1
  19. package/lib/admin/service.js +173 -0
  20. package/lib/admin/service.js.map +1 -1
  21. package/lib/admin/session-log.js +39 -8
  22. package/lib/admin/session-log.js.map +1 -1
  23. package/lib/attachment-rules.js +39 -6
  24. package/lib/attachment-rules.js.map +1 -1
  25. package/lib/cli.js +83 -1
  26. package/lib/cli.js.map +1 -1
  27. package/lib/client/QaAccountsController.js +213 -4
  28. package/lib/client/QaAccountsController.js.map +1 -1
  29. package/lib/client/QaSessionController.js +37 -21
  30. package/lib/client/QaSessionController.js.map +1 -1
  31. package/lib/client/QaSurface.js +28 -4
  32. package/lib/client/QaSurface.js.map +1 -1
  33. package/lib/client/admin/QaAdmin.js +9 -1
  34. package/lib/client/admin/QaAdmin.js.map +1 -1
  35. package/lib/client/admin/pages/SkillFiles.js +78 -0
  36. package/lib/client/admin/pages/SkillFiles.js.map +1 -0
  37. package/lib/client/admin/pages/Users.js +65 -1
  38. package/lib/client/admin/pages/Users.js.map +1 -1
  39. package/lib/client/admin/routes.js +8 -1
  40. package/lib/client/admin/routes.js.map +1 -1
  41. package/lib/client/admin/styles.js +2 -0
  42. package/lib/client/admin/styles.js.map +1 -1
  43. package/lib/client/attachments.js +41 -11
  44. package/lib/client/attachments.js.map +1 -1
  45. package/lib/client/components/QaAuthGate.js +19 -10
  46. package/lib/client/components/QaAuthGate.js.map +1 -1
  47. package/lib/client/components/QaChangelog.js +27 -0
  48. package/lib/client/components/QaChangelog.js.map +1 -1
  49. package/lib/client/index.js +13 -0
  50. package/lib/client/index.js.map +1 -1
  51. package/lib/client/lineage.js +64 -0
  52. package/lib/client/lineage.js.map +1 -1
  53. package/lib/client/settings/sections/attachments.js +6 -5
  54. package/lib/client/settings/sections/attachments.js.map +1 -1
  55. package/lib/client/settings/sections/notes.js +22 -4
  56. package/lib/client/settings/sections/notes.js.map +1 -1
  57. package/lib/client/styles.js +9 -0
  58. package/lib/client/styles.js.map +1 -1
  59. package/lib/client/types.js.map +1 -1
  60. package/lib/client/user-settings/IntegrationTokensPage.js +150 -0
  61. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -0
  62. package/lib/client/user-settings/PasswordSettingsPage.js +48 -0
  63. package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -0
  64. package/lib/client/user-settings/SkillCatalog.js +2 -2
  65. package/lib/client/user-settings/SkillCatalog.js.map +1 -1
  66. package/lib/client/user-settings/UserSettingsDialog.js +17 -2
  67. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
  68. package/lib/client/user-settings/copy.js +20 -0
  69. package/lib/client/user-settings/copy.js.map +1 -1
  70. package/lib/client.js +2466 -137
  71. package/lib/client.js.map +1 -1
  72. package/lib/config-resolvers/attachments.js +6 -5
  73. package/lib/config-resolvers/attachments.js.map +1 -1
  74. package/lib/config-resolvers/defaults.js +23 -2
  75. package/lib/config-resolvers/defaults.js.map +1 -1
  76. package/lib/config-resolvers/integration.js +94 -0
  77. package/lib/config-resolvers/integration.js.map +1 -0
  78. package/lib/config-resolvers/notes.js +2 -0
  79. package/lib/config-resolvers/notes.js.map +1 -1
  80. package/lib/config.js +72 -0
  81. package/lib/config.js.map +1 -1
  82. package/lib/index.js +197 -2
  83. package/lib/index.js.map +1 -1
  84. package/lib/integration/answer.js +100 -0
  85. package/lib/integration/answer.js.map +1 -0
  86. package/lib/integration/attachments.js +231 -0
  87. package/lib/integration/attachments.js.map +1 -0
  88. package/lib/integration/contract.js +53 -0
  89. package/lib/integration/contract.js.map +1 -0
  90. package/lib/integration/host-runner.js +243 -0
  91. package/lib/integration/host-runner.js.map +1 -0
  92. package/lib/integration/http.js +538 -0
  93. package/lib/integration/http.js.map +1 -0
  94. package/lib/integration/service.js +331 -0
  95. package/lib/integration/service.js.map +1 -0
  96. package/lib/integration/transcript-reader.js +202 -0
  97. package/lib/integration/transcript-reader.js.map +1 -0
  98. package/lib/integration/transcript.js +148 -0
  99. package/lib/integration/transcript.js.map +1 -0
  100. package/lib/personal-skills/index.js +2 -2
  101. package/lib/personal-skills/index.js.map +1 -1
  102. package/lib/personal-skills/paths.js +14 -8
  103. package/lib/personal-skills/paths.js.map +1 -1
  104. package/lib/personal-skills/provider.js +16 -4
  105. package/lib/personal-skills/provider.js.map +1 -1
  106. package/lib/personal-skills/service.js +240 -30
  107. package/lib/personal-skills/service.js.map +1 -1
  108. package/lib/prompt-notes.js +58 -0
  109. package/lib/prompt-notes.js.map +1 -1
  110. package/lib/provenance/document-preview.js +10 -1
  111. package/lib/provenance/document-preview.js.map +1 -1
  112. package/lib/qa-tools/catalog.js +12 -1
  113. package/lib/qa-tools/catalog.js.map +1 -1
  114. package/lib/qa-tools/docs-tools.js +563 -0
  115. package/lib/qa-tools/docs-tools.js.map +1 -0
  116. package/lib/resolve-config.js +4 -0
  117. package/lib/resolve-config.js.map +1 -1
  118. package/lib/secure-session.js +83 -3
  119. package/lib/secure-session.js.map +1 -1
  120. package/lib/shared/integration-tokens.js +23 -0
  121. package/lib/shared/integration-tokens.js.map +1 -0
  122. package/lib/typert.host.js +1176 -213
  123. package/lib/typert.remote-client.d.ts +27 -1
  124. package/lib/typert.remote-client.js +911 -69
  125. package/lib/types/access/service.d.ts +33 -2
  126. package/lib/types/account-remotes.d.ts +30 -1
  127. package/lib/types/accounts/database.d.ts +53 -0
  128. package/lib/types/accounts/errors.d.ts +5 -1
  129. package/lib/types/accounts/service-token.d.ts +70 -0
  130. package/lib/types/accounts/store.d.ts +131 -1
  131. package/lib/types/admin/conversation-log.d.ts +12 -0
  132. package/lib/types/admin/service.d.ts +56 -1
  133. package/lib/types/admin/session-log.d.ts +21 -0
  134. package/lib/types/attachment-rules.d.ts +26 -3
  135. package/lib/types/client/QaAccountsController.d.ts +64 -5
  136. package/lib/types/client/QaSessionController.d.ts +24 -2
  137. package/lib/types/client/admin/pages/SkillFiles.d.ts +17 -0
  138. package/lib/types/client/admin/routes.d.ts +2 -0
  139. package/lib/types/client/attachments.d.ts +21 -4
  140. package/lib/types/client/lineage.d.ts +42 -0
  141. package/lib/types/client/settings/sections/notes.d.ts +5 -3
  142. package/lib/types/client/types.d.ts +71 -1
  143. package/lib/types/client/user-settings/IntegrationTokensPage.d.ts +21 -0
  144. package/lib/types/client/user-settings/PasswordSettingsPage.d.ts +19 -0
  145. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +11 -2
  146. package/lib/types/client/user-settings/copy.d.ts +10 -1
  147. package/lib/types/config-resolvers/integration.d.ts +47 -0
  148. package/lib/types/config.d.ts +10 -0
  149. package/lib/types/index.d.ts +73 -1
  150. package/lib/types/integration/answer.d.ts +65 -0
  151. package/lib/types/integration/attachments.d.ts +85 -0
  152. package/lib/types/integration/contract.d.ts +196 -0
  153. package/lib/types/integration/host-runner.d.ts +44 -0
  154. package/lib/types/integration/http.d.ts +79 -0
  155. package/lib/types/integration/service.d.ts +120 -0
  156. package/lib/types/integration/transcript-reader.d.ts +100 -0
  157. package/lib/types/integration/transcript.d.ts +59 -0
  158. package/lib/types/personal-skills/index.d.ts +2 -2
  159. package/lib/types/personal-skills/paths.d.ts +15 -3
  160. package/lib/types/personal-skills/provider.d.ts +14 -2
  161. package/lib/types/personal-skills/service.d.ts +89 -14
  162. package/lib/types/prompt-notes.d.ts +28 -0
  163. package/lib/types/provenance/document-preview.d.ts +4 -0
  164. package/lib/types/qa-tools/catalog.d.ts +1 -1
  165. package/lib/types/qa-tools/docs-tools.d.ts +160 -0
  166. package/lib/types/secure-session.d.ts +52 -1
  167. package/lib/types/shared/integration-tokens.d.ts +24 -0
  168. package/lib/types/types.d.ts +170 -2
  169. package/package.json +4 -4
@@ -58,7 +58,56 @@ const MIGRATIONS = [
58
58
  );
59
59
  `,
60
60
  },
61
+ {
62
+ version: 2,
63
+ up: `
64
+ -- One row per account that asked for a password reset from the sign-in
65
+ -- screen. The row is what makes "забыли пароль?" a path rather than a
66
+ -- dead end: an operator reads it and sets a new password. Keyed by
67
+ -- account id, so a second tap updates the row instead of queueing a
68
+ -- duplicate, and the count keeps the repetition visible.
69
+ CREATE TABLE qa_password_resets (
70
+ user_id TEXT PRIMARY KEY,
71
+ requested_at TEXT NOT NULL,
72
+ last_requested_at TEXT NOT NULL,
73
+ request_count INTEGER NOT NULL DEFAULT 1
74
+ );
75
+ -- Integration tokens: the credentials a non-browser application
76
+ -- presents to the QA HTTP API. The row keeps a digest of the secret and
77
+ -- never the secret itself, so a copied database is not a copied
78
+ -- credential; scopes, expiry and the revocation column are what make one
79
+ -- token revocable without touching the account's browser sessions.
80
+ CREATE TABLE qa_service_tokens (
81
+ id TEXT PRIMARY KEY,
82
+ user_id TEXT NOT NULL,
83
+ label TEXT NOT NULL,
84
+ token_hash TEXT NOT NULL,
85
+ scopes_json TEXT NOT NULL,
86
+ created_at TEXT NOT NULL,
87
+ expires_at TEXT NOT NULL,
88
+ last_used_at TEXT,
89
+ revoked_at TEXT,
90
+ use_count INTEGER NOT NULL DEFAULT 0
91
+ );
92
+ CREATE INDEX qa_service_tokens_user
93
+ ON qa_service_tokens (user_id, created_at);
94
+ `,
95
+ },
61
96
  ];
97
+ function toServiceToken(row) {
98
+ return {
99
+ id: row.id,
100
+ userId: row.user_id,
101
+ label: row.label,
102
+ hash: row.token_hash,
103
+ scopes: JSON.parse(row.scopes_json),
104
+ createdAt: row.created_at,
105
+ expiresAt: row.expires_at,
106
+ lastUsedAt: row.last_used_at,
107
+ revokedAt: row.revoked_at,
108
+ useCount: row.use_count,
109
+ };
110
+ }
62
111
  /** SQLite hands back null-prototype records; the row shapes describe them. */
63
112
  function asRows(value) {
64
113
  return value;
@@ -176,6 +225,39 @@ export class QaAccountsDatabase {
176
225
  this.writeUser(user, { replace: true });
177
226
  });
178
227
  }
228
+ /**
229
+ * Record one forgotten-password request. A repeat from the same account
230
+ * moves the row up the queue and counts up, so the console shows "asked
231
+ * again" rather than an identical-looking pile of rows.
232
+ */
233
+ recordPasswordReset(userId, at) {
234
+ this.storage.transaction(() => {
235
+ this.storage.db
236
+ .prepare(`INSERT INTO qa_password_resets
237
+ (user_id, requested_at, last_requested_at, request_count)
238
+ VALUES (?, ?, ?, 1)
239
+ ON CONFLICT(user_id) DO UPDATE SET
240
+ last_requested_at = excluded.last_requested_at,
241
+ request_count = qa_password_resets.request_count + 1`)
242
+ .run(userId, at, at);
243
+ });
244
+ }
245
+ /** Every pending request, newest first. */
246
+ listPasswordResets() {
247
+ return asRows(this.storage.db
248
+ .prepare(`SELECT user_id, requested_at, last_requested_at, request_count
249
+ FROM qa_password_resets
250
+ ORDER BY last_requested_at DESC, user_id`)
251
+ .all());
252
+ }
253
+ /** Drop an account's pending request: it was answered, or it is moot. */
254
+ clearPasswordReset(userId) {
255
+ this.storage.transaction(() => {
256
+ this.storage.db
257
+ .prepare("DELETE FROM qa_password_resets WHERE user_id = ?")
258
+ .run(userId);
259
+ });
260
+ }
179
261
  /** Record a successful sign-in without rewriting the account. */
180
262
  touchLogin(userId, at) {
181
263
  this.storage.transaction(() => {
@@ -220,6 +302,64 @@ export class QaAccountsDatabase {
220
302
  this.gcSnapshots();
221
303
  });
222
304
  }
305
+ /** Record one freshly minted integration token (digest only, never a secret). */
306
+ insertServiceToken(token) {
307
+ this.storage.transaction(() => {
308
+ this.storage.db
309
+ .prepare(`INSERT INTO qa_service_tokens
310
+ (id, user_id, label, token_hash, scopes_json, created_at,
311
+ expires_at, last_used_at, revoked_at, use_count)
312
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
313
+ .run(token.id, token.userId, token.label, token.hash, JSON.stringify(token.scopes), token.createdAt, token.expiresAt, token.lastUsedAt, token.revokedAt, token.useCount);
314
+ });
315
+ }
316
+ /**
317
+ * One integration token by id, revoked and expired ones included.
318
+ *
319
+ * The caller needs the revoked ones: presenting a revoked token must be a
320
+ * refusal, not a lookup miss, and the two are only distinguishable when the
321
+ * row still answers.
322
+ */
323
+ serviceToken(tokenId) {
324
+ const row = this.storage.db
325
+ .prepare("SELECT * FROM qa_service_tokens WHERE id = ?")
326
+ .get(tokenId);
327
+ return row === undefined ? undefined : toServiceToken(row);
328
+ }
329
+ /** Every integration token of one account, oldest first. */
330
+ serviceTokensOf(userId) {
331
+ return asRows(this.storage.db
332
+ .prepare("SELECT * FROM qa_service_tokens WHERE user_id = ? ORDER BY created_at, id")
333
+ .all(userId)).map(toServiceToken);
334
+ }
335
+ /** Record that one token was used, without rewriting its row. */
336
+ touchServiceToken(tokenId, at) {
337
+ this.storage.transaction(() => {
338
+ this.storage.db
339
+ .prepare(`UPDATE qa_service_tokens
340
+ SET last_used_at = ?, use_count = use_count + 1
341
+ WHERE id = ?`)
342
+ .run(at, tokenId);
343
+ });
344
+ }
345
+ /** Revoke one token; already-revoked tokens keep their first timestamp. */
346
+ revokeServiceToken(tokenId, at) {
347
+ return this.storage.transaction(() => {
348
+ const result = this.storage.db
349
+ .prepare("UPDATE qa_service_tokens SET revoked_at = ? WHERE id = ? AND revoked_at IS NULL")
350
+ .run(at, tokenId);
351
+ return result.changes > 0;
352
+ });
353
+ }
354
+ /** Revoke every token of one account; returns how many were still live. */
355
+ revokeServiceTokensOf(userId, at) {
356
+ return this.storage.transaction(() => {
357
+ const result = this.storage.db
358
+ .prepare("UPDATE qa_service_tokens SET revoked_at = ? WHERE user_id = ? AND revoked_at IS NULL")
359
+ .run(at, userId);
360
+ return Number(result.changes);
361
+ });
362
+ }
223
363
  /**
224
364
  * Append one skill activation and keep the newest `limit` of them. The list
225
365
  * is bounded because a long session may activate skills many times, and the
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/accounts/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/accounts/database.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/accounts/errors.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAE7B,MAAM;IADjB,YACW,MAA6B,EACtC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHN,MAAM;QAIf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/accounts/errors.ts"],"names":[],"mappings":"AAkCA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAE7B,MAAM;IADjB,YACW,MAA6B,EACtC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHN,MAAM;QAIf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,103 @@
1
+ import { createHash, randomBytes, randomUUID, timingSafeEqual, } from "node:crypto";
2
+ import { QA_SERVICE_TOKEN_DEFAULT_SCOPES, QA_SERVICE_TOKEN_LABEL_MAX, QA_SERVICE_TOKEN_SCOPES, QA_SERVICE_TOKEN_TTL_DAYS_MAX, QA_SERVICE_TOKEN_TTL_DAYS_MIN, } from "../shared/integration-tokens.js";
3
+ // The scope list and the limits are declared in `shared`, because the profile
4
+ // page enforces the same ones and must not import this module's crypto. They
5
+ // are re-exported here so the Host's own callers keep one import site.
6
+ export { QA_SERVICE_TOKEN_DEFAULT_SCOPES, QA_SERVICE_TOKEN_LABEL_MAX, QA_SERVICE_TOKEN_SCOPES, QA_SERVICE_TOKEN_TTL_DAYS_MAX, QA_SERVICE_TOKEN_TTL_DAYS_MIN, };
7
+ /**
8
+ * Integration tokens: the credential a non-browser application presents to the
9
+ * QA HTTP API.
10
+ *
11
+ * They are deliberately a second, separate credential from the browser auth
12
+ * token (`accounts/token.ts`). The browser token is an HMAC over a payload that
13
+ * carries the account's `tokenVersion`; bumping that version — what a password
14
+ * change does — signs every browser out. An integration token must survive
15
+ * that: a service that keeps a Jira bridge running cannot be logged out by a
16
+ * human editing their profile. What it *does* share is the accounts database,
17
+ * so a disabled account and the operator's "revoke every token" command still
18
+ * reach it.
19
+ *
20
+ * The plaintext is minted once and never stored. What rests in the database is
21
+ * a SHA-256 digest of the secret, so a leaked database is not a leaked
22
+ * credential, and the token id in front of the secret makes verification one
23
+ * indexed lookup instead of a scan over every account's digests.
24
+ */
25
+ /** Marks a credential as an integration token in a log line, a paste or a grep. */
26
+ export const QA_SERVICE_TOKEN_PREFIX = "qsat";
27
+ const SECRET_BYTES = 32;
28
+ /**
29
+ * Normalize a scope list: known scopes only, duplicates dropped, declared
30
+ * order preserved. An unknown scope is not an error the caller can see
31
+ * through — it is simply not granted.
32
+ * @param values - scope tokens as configured or requested.
33
+ * @returns the accepted scopes.
34
+ */
35
+ export function normalizeServiceTokenScopes(values) {
36
+ const seen = new Set();
37
+ const accepted = [];
38
+ for (const value of values) {
39
+ const candidate = typeof value === "string" ? value.trim() : "";
40
+ if (candidate === "" || seen.has(candidate))
41
+ continue;
42
+ seen.add(candidate);
43
+ if (QA_SERVICE_TOKEN_SCOPES.includes(candidate) &&
44
+ !accepted.includes(candidate)) {
45
+ accepted.push(candidate);
46
+ }
47
+ }
48
+ return Object.freeze(accepted);
49
+ }
50
+ /** The digest of one secret, hex encoded, in the one shape verification expects. */
51
+ export function serviceTokenHash(secret) {
52
+ return createHash("sha256").update(secret).digest("hex");
53
+ }
54
+ /**
55
+ * Mint one token. The id is a UUID so the operator can name a token in a
56
+ * revocation request without ever holding its plaintext again.
57
+ * @returns the plaintext, its id and the digest storage keeps.
58
+ */
59
+ export function mintServiceToken() {
60
+ const tokenId = randomUUID();
61
+ const secret = randomBytes(SECRET_BYTES).toString("base64url");
62
+ return {
63
+ token: `${QA_SERVICE_TOKEN_PREFIX}.${tokenId}.${secret}`,
64
+ tokenId,
65
+ hash: serviceTokenHash(secret),
66
+ };
67
+ }
68
+ /**
69
+ * Split a presented token. Anything that is not exactly
70
+ * `qsat.<uuid>.<secret>` is refused here rather than looked up: a malformed
71
+ * credential must not reach the database at all.
72
+ * @param token - the raw `Authorization: Bearer` value.
73
+ * @returns the id and secret, or null.
74
+ */
75
+ export function parseServiceToken(token) {
76
+ if (typeof token !== "string")
77
+ return null;
78
+ const parts = token.split(".");
79
+ if (parts.length !== 3)
80
+ return null;
81
+ const [prefix, tokenId, secret] = parts;
82
+ if (prefix !== QA_SERVICE_TOKEN_PREFIX)
83
+ return null;
84
+ if (tokenId === undefined || secret === undefined)
85
+ return null;
86
+ if (!/^[0-9a-f-]{36}$/u.test(tokenId) || secret.length === 0)
87
+ return null;
88
+ return { tokenId, secret };
89
+ }
90
+ /**
91
+ * Constant-time digest comparison. Both sides are hex digests of a fixed
92
+ * length, so the length check leaks nothing beyond "this is not a digest".
93
+ * @param secret - the presented secret.
94
+ * @param hash - the digest storage holds.
95
+ * @returns whether they are the same secret.
96
+ */
97
+ export function serviceTokenMatches(secret, hash) {
98
+ const expected = serviceTokenHash(secret);
99
+ if (expected.length !== hash.length)
100
+ return false;
101
+ return timingSafeEqual(Buffer.from(expected), Buffer.from(hash));
102
+ }
103
+ //# sourceMappingURL=service-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-token.js","sourceRoot":"","sources":["../../src/accounts/service-token.ts"],"names":[],"mappings":"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"}