@skillsmith/core 0.11.4 → 0.11.5

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 (183) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +10 -7
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/api/client.d.ts.map +1 -1
  5. package/dist/src/api/client.js +15 -5
  6. package/dist/src/api/client.js.map +1 -1
  7. package/dist/src/api/client.private-registry.d.ts +80 -0
  8. package/dist/src/api/client.private-registry.d.ts.map +1 -0
  9. package/dist/src/api/client.private-registry.js +97 -0
  10. package/dist/src/api/client.private-registry.js.map +1 -0
  11. package/dist/src/api/client.private-registry.test.d.ts +9 -0
  12. package/dist/src/api/client.private-registry.test.d.ts.map +1 -0
  13. package/dist/src/api/client.private-registry.test.js +127 -0
  14. package/dist/src/api/client.private-registry.test.js.map +1 -0
  15. package/dist/src/api/client.toSkill.test.d.ts +25 -0
  16. package/dist/src/api/client.toSkill.test.d.ts.map +1 -0
  17. package/dist/src/api/client.toSkill.test.js +97 -0
  18. package/dist/src/api/client.toSkill.test.js.map +1 -0
  19. package/dist/src/api/client.token-refresh.d.ts +8 -0
  20. package/dist/src/api/client.token-refresh.d.ts.map +1 -1
  21. package/dist/src/api/client.token-refresh.js +26 -0
  22. package/dist/src/api/client.token-refresh.js.map +1 -1
  23. package/dist/src/api/client.token-refresh.test.js +82 -0
  24. package/dist/src/api/client.token-refresh.test.js.map +1 -1
  25. package/dist/src/api/index.d.ts +2 -0
  26. package/dist/src/api/index.d.ts.map +1 -1
  27. package/dist/src/api/index.js +9 -0
  28. package/dist/src/api/index.js.map +1 -1
  29. package/dist/src/api/security-summary.d.ts +73 -0
  30. package/dist/src/api/security-summary.d.ts.map +1 -0
  31. package/dist/src/api/security-summary.js +88 -0
  32. package/dist/src/api/security-summary.js.map +1 -0
  33. package/dist/src/api/security-summary.test.d.ts +9 -0
  34. package/dist/src/api/security-summary.test.d.ts.map +1 -0
  35. package/dist/src/api/security-summary.test.js +94 -0
  36. package/dist/src/api/security-summary.test.js.map +1 -0
  37. package/dist/src/config/config-atomic-write.d.ts +30 -10
  38. package/dist/src/config/config-atomic-write.d.ts.map +1 -1
  39. package/dist/src/config/config-atomic-write.js +33 -80
  40. package/dist/src/config/config-atomic-write.js.map +1 -1
  41. package/dist/src/config/config-atomic-write.test.d.ts +8 -0
  42. package/dist/src/config/config-atomic-write.test.d.ts.map +1 -1
  43. package/dist/src/config/config-atomic-write.test.js +64 -12
  44. package/dist/src/config/config-atomic-write.test.js.map +1 -1
  45. package/dist/src/config/owned-lock.acquire.d.ts +53 -0
  46. package/dist/src/config/owned-lock.acquire.d.ts.map +1 -0
  47. package/dist/src/config/owned-lock.acquire.js +140 -0
  48. package/dist/src/config/owned-lock.acquire.js.map +1 -0
  49. package/dist/src/config/owned-lock.claim.d.ts +84 -0
  50. package/dist/src/config/owned-lock.claim.d.ts.map +1 -0
  51. package/dist/src/config/owned-lock.claim.js +310 -0
  52. package/dist/src/config/owned-lock.claim.js.map +1 -0
  53. package/dist/src/config/owned-lock.d.ts +113 -0
  54. package/dist/src/config/owned-lock.d.ts.map +1 -0
  55. package/dist/src/config/owned-lock.js +121 -0
  56. package/dist/src/config/owned-lock.js.map +1 -0
  57. package/dist/src/config/owned-lock.test.d.ts +12 -0
  58. package/dist/src/config/owned-lock.test.d.ts.map +1 -0
  59. package/dist/src/config/owned-lock.test.js +412 -0
  60. package/dist/src/config/owned-lock.test.js.map +1 -0
  61. package/dist/src/config/owned-lock.types.d.ts +78 -0
  62. package/dist/src/config/owned-lock.types.d.ts.map +1 -0
  63. package/dist/src/config/owned-lock.types.js +30 -0
  64. package/dist/src/config/owned-lock.types.js.map +1 -0
  65. package/dist/src/db/createDatabase.d.ts.map +1 -1
  66. package/dist/src/db/createDatabase.js +19 -7
  67. package/dist/src/db/createDatabase.js.map +1 -1
  68. package/dist/src/embeddings/hnsw-store.exports.d.ts +11 -0
  69. package/dist/src/embeddings/hnsw-store.exports.d.ts.map +1 -0
  70. package/dist/src/embeddings/hnsw-store.exports.js +10 -0
  71. package/dist/src/embeddings/hnsw-store.exports.js.map +1 -0
  72. package/dist/src/embeddings/index.d.ts +1 -2
  73. package/dist/src/embeddings/index.d.ts.map +1 -1
  74. package/dist/src/embeddings/index.js +17 -3
  75. package/dist/src/embeddings/index.js.map +1 -1
  76. package/dist/src/embeddings/probe.d.ts.map +1 -1
  77. package/dist/src/embeddings/probe.js +4 -8
  78. package/dist/src/embeddings/probe.js.map +1 -1
  79. package/dist/src/exports/services.d.ts +4 -1
  80. package/dist/src/exports/services.d.ts.map +1 -1
  81. package/dist/src/exports/services.js +22 -0
  82. package/dist/src/exports/services.js.map +1 -1
  83. package/dist/src/index.d.ts +3 -3
  84. package/dist/src/index.d.ts.map +1 -1
  85. package/dist/src/index.js +9 -3
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/install/index.d.ts +1 -1
  88. package/dist/src/install/index.d.ts.map +1 -1
  89. package/dist/src/install/index.js +1 -1
  90. package/dist/src/install/index.js.map +1 -1
  91. package/dist/src/install/paths.d.ts +10 -0
  92. package/dist/src/install/paths.d.ts.map +1 -1
  93. package/dist/src/install/paths.js +19 -0
  94. package/dist/src/install/paths.js.map +1 -1
  95. package/dist/src/security/scanner/multiline-category-closure.test.d.ts +80 -0
  96. package/dist/src/security/scanner/multiline-category-closure.test.d.ts.map +1 -0
  97. package/dist/src/security/scanner/multiline-category-closure.test.js +287 -0
  98. package/dist/src/security/scanner/multiline-category-closure.test.js.map +1 -0
  99. package/dist/src/services/recommend-guard.d.ts +28 -0
  100. package/dist/src/services/recommend-guard.d.ts.map +1 -0
  101. package/dist/src/services/recommend-guard.js +34 -0
  102. package/dist/src/services/recommend-guard.js.map +1 -0
  103. package/dist/src/services/recommend-guard.test.d.ts +2 -0
  104. package/dist/src/services/recommend-guard.test.d.ts.map +1 -0
  105. package/dist/src/services/recommend-guard.test.js +28 -0
  106. package/dist/src/services/recommend-guard.test.js.map +1 -0
  107. package/dist/src/services/skill-installation.content.d.ts +88 -0
  108. package/dist/src/services/skill-installation.content.d.ts.map +1 -0
  109. package/dist/src/services/skill-installation.content.js +319 -0
  110. package/dist/src/services/skill-installation.content.js.map +1 -0
  111. package/dist/src/services/skill-installation.helpers.d.ts +32 -1
  112. package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
  113. package/dist/src/services/skill-installation.helpers.js +39 -6
  114. package/dist/src/services/skill-installation.helpers.js.map +1 -1
  115. package/dist/src/services/skill-installation.helpers.test.js +34 -2
  116. package/dist/src/services/skill-installation.helpers.test.js.map +1 -1
  117. package/dist/src/services/skill-installation.io.d.ts.map +1 -1
  118. package/dist/src/services/skill-installation.io.js +74 -1
  119. package/dist/src/services/skill-installation.io.js.map +1 -1
  120. package/dist/src/services/skill-installation.service.d.ts +20 -1
  121. package/dist/src/services/skill-installation.service.d.ts.map +1 -1
  122. package/dist/src/services/skill-installation.service.js +26 -4
  123. package/dist/src/services/skill-installation.service.js.map +1 -1
  124. package/dist/src/services/skill-installation.types.d.ts +42 -1
  125. package/dist/src/services/skill-installation.types.d.ts.map +1 -1
  126. package/dist/src/services/skill-installation.types.js.map +1 -1
  127. package/dist/src/services/skill-resolution.d.ts +67 -0
  128. package/dist/src/services/skill-resolution.d.ts.map +1 -0
  129. package/dist/src/services/skill-resolution.js +67 -0
  130. package/dist/src/services/skill-resolution.js.map +1 -0
  131. package/dist/src/services/skill-resolution.test.d.ts +2 -0
  132. package/dist/src/services/skill-resolution.test.d.ts.map +1 -0
  133. package/dist/src/services/skill-resolution.test.js +143 -0
  134. package/dist/src/services/skill-resolution.test.js.map +1 -0
  135. package/dist/src/utils/index.d.ts +1 -0
  136. package/dist/src/utils/index.d.ts.map +1 -1
  137. package/dist/src/utils/index.js +4 -0
  138. package/dist/src/utils/index.js.map +1 -1
  139. package/dist/src/utils/quiet-mode.d.ts +21 -0
  140. package/dist/src/utils/quiet-mode.d.ts.map +1 -0
  141. package/dist/src/utils/quiet-mode.js +26 -0
  142. package/dist/src/utils/quiet-mode.js.map +1 -0
  143. package/dist/tests/EmbeddingService.test.js +58 -1
  144. package/dist/tests/EmbeddingService.test.js.map +1 -1
  145. package/dist/tests/SecurityScanner.performance.test.js +5 -2
  146. package/dist/tests/SecurityScanner.performance.test.js.map +1 -1
  147. package/dist/tests/db/database-abstraction.test.js +45 -1
  148. package/dist/tests/db/database-abstraction.test.js.map +1 -1
  149. package/dist/tests/helpers/deterministic-dead-pid.d.ts +13 -0
  150. package/dist/tests/helpers/deterministic-dead-pid.d.ts.map +1 -0
  151. package/dist/tests/helpers/deterministic-dead-pid.js +31 -0
  152. package/dist/tests/helpers/deterministic-dead-pid.js.map +1 -0
  153. package/dist/tests/integration/owned-lock-lost-update.test.d.ts +12 -0
  154. package/dist/tests/integration/owned-lock-lost-update.test.d.ts.map +1 -0
  155. package/dist/tests/integration/owned-lock-lost-update.test.js +52 -0
  156. package/dist/tests/integration/owned-lock-lost-update.test.js.map +1 -0
  157. package/dist/tests/integration/owned-lock-reclaim-race.test.d.ts +19 -0
  158. package/dist/tests/integration/owned-lock-reclaim-race.test.d.ts.map +1 -0
  159. package/dist/tests/integration/owned-lock-reclaim-race.test.js +177 -0
  160. package/dist/tests/integration/owned-lock-reclaim-race.test.js.map +1 -0
  161. package/dist/tests/unit/services/skill-installation.content.test.d.ts +10 -0
  162. package/dist/tests/unit/services/skill-installation.content.test.d.ts.map +1 -0
  163. package/dist/tests/unit/services/skill-installation.content.test.js +290 -0
  164. package/dist/tests/unit/services/skill-installation.content.test.js.map +1 -0
  165. package/dist/tests/unit/services/skill-installation.io.symlink.test.d.ts +8 -0
  166. package/dist/tests/unit/services/skill-installation.io.symlink.test.d.ts.map +1 -0
  167. package/dist/tests/unit/services/skill-installation.io.symlink.test.js +72 -0
  168. package/dist/tests/unit/services/skill-installation.io.symlink.test.js.map +1 -0
  169. package/dist/tests/unit/services/skill-installation.service.error-codes.test.d.ts +15 -0
  170. package/dist/tests/unit/services/skill-installation.service.error-codes.test.d.ts.map +1 -0
  171. package/dist/tests/unit/services/skill-installation.service.error-codes.test.js +190 -0
  172. package/dist/tests/unit/services/skill-installation.service.error-codes.test.js.map +1 -0
  173. package/dist/tests/unit/services/skill-installation.service.multi-client.test.d.ts +17 -0
  174. package/dist/tests/unit/services/skill-installation.service.multi-client.test.d.ts.map +1 -0
  175. package/dist/tests/unit/services/skill-installation.service.multi-client.test.js +126 -0
  176. package/dist/tests/unit/services/skill-installation.service.multi-client.test.js.map +1 -0
  177. package/dist/tests/unit/services/skill-installation.service.test.js +7 -112
  178. package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
  179. package/dist/tests/utils/quiet-mode.test.d.ts +12 -0
  180. package/dist/tests/utils/quiet-mode.test.d.ts.map +1 -0
  181. package/dist/tests/utils/quiet-mode.test.js +42 -0
  182. package/dist/tests/utils/quiet-mode.test.js.map +1 -0
  183. package/package.json +17 -5
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { buildClientEventBatcher } from './client.events.js';
9
9
  import { ApiCache } from './cache.js';
10
10
  import { buildResponseCache, withResponseCache } from './client.cache.js';
11
11
  import { tryRefreshToken } from './client.token-refresh.js';
12
+ import { deriveSecuritySummaryFromApiSkill } from './security-summary.js';
12
13
  // Re-export for backwards compatibility
13
14
  export { generateAnonymousId } from './utils.js';
14
15
  export { checkApiHealth } from './client.health.js';
@@ -313,6 +314,15 @@ export class SkillsmithApiClient {
313
314
  static toSkill(result) {
314
315
  // Sentinel value for missing timestamps - clearly indicates unknown date
315
316
  const UNKNOWN_DATE = '1970-01-01T00:00:00.000Z';
317
+ // SMI-5897 (C-15): derive real security-status fields via the shared
318
+ // helper instead of hardcoding "not scanned" for every API-sourced
319
+ // skill — this is what made CLI `info`/`search` show "Not scanned" for
320
+ // skills MCP correctly reported as passed (both now derive from the
321
+ // same underlying last_scanned_at/quarantined/security_score fields).
322
+ // `security` is `undefined` when the skill has never been scanned;
323
+ // the flat Skill shape signals that the same way MCP's nested
324
+ // SecuritySummary does — securityPassed: null, securityScannedAt: null.
325
+ const security = deriveSecuritySummaryFromApiSkill(result);
316
326
  return {
317
327
  id: result.id,
318
328
  name: result.name,
@@ -323,11 +333,11 @@ export class SkillsmithApiClient {
323
333
  trustTier: result.trust_tier,
324
334
  tags: result.tags || [],
325
335
  installable: result.installable ?? false,
326
- // SMI-825: Security scan fields (default to not scanned for API results)
327
- riskScore: null,
328
- securityFindingsCount: 0,
329
- securityScannedAt: null,
330
- securityPassed: null,
336
+ // SMI-825: Security scan fields
337
+ riskScore: security?.riskScore ?? null,
338
+ securityFindingsCount: security?.findingsCount ?? 0,
339
+ securityScannedAt: security?.scannedAt ?? null,
340
+ securityPassed: security?.passed ?? null,
331
341
  createdAt: result.created_at ?? UNKNOWN_DATE,
332
342
  updatedAt: result.updated_at ?? UNKNOWN_DATE,
333
343
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @fileoverview Private-registry content fetch (SMI-5905 Wave 4).
3
+ * @module @skillsmith/core/api/client.private-registry
4
+ * @see docs/internal/implementation/private-registry-skill-install.md
5
+ * @see supabase/functions/private-registry-get/index.ts (Wave 2 — the transport this calls)
6
+ *
7
+ * The CLI's only path to `private_registry_skills.content` — the CLI never
8
+ * carries Supabase credentials directly, only reaches Supabase-backed data
9
+ * through Edge Functions. Lives in its own file rather than `client.ts`
10
+ * (already 479/500 lines), following the `client.health.ts`/`client.events.ts`
11
+ * companion-module convention already used to split `SkillsmithApiClient`
12
+ * functionality: a standalone function that reuses `buildRequestHeaders()` /
13
+ * `DEFAULT_BASE_URL` / `PRODUCTION_ANON_KEY` from `./utils.js` rather than
14
+ * adding a method onto the class itself.
15
+ *
16
+ * Deliberately does NOT reuse `SkillsmithApiClient.request()`'s retry-on-5xx/
17
+ * 429 loop — this performs exactly one fetch. Retrying an unauthenticated,
18
+ * forbidden, or not-found response would never succeed, and retrying a 429
19
+ * would fight the endpoint's own tighter (30/min, IP-keyed) rate limiter.
20
+ * Every failure surfaces as a typed result for the CLI to render directly.
21
+ *
22
+ * Auth contract (see supabase/functions/private-registry-get/access.ts):
23
+ * the Edge Function 401s on anything but a real end-user JWT — an
24
+ * `sk_live_*`/`sk_test_*` API key and the anon key both fail authentication
25
+ * there. Callers MUST supply a JWT (e.g. via `resolveFreshAccessToken()`)
26
+ * rather than the class's own apiKey/anonKey fallback chain.
27
+ */
28
+ /**
29
+ * Successful `data` shape from `GET /private-registry-get`
30
+ * (supabase/functions/private-registry-get/index.ts's 200 response body).
31
+ */
32
+ export interface PrivateRegistrySkillContent {
33
+ skill_id: string;
34
+ team_id: string;
35
+ version: string;
36
+ description: string | null;
37
+ content_hash: string | null;
38
+ deprecated: boolean;
39
+ published_at: string;
40
+ /** Packaged skill files, `{ "SKILL.md": "...", ... }`. Never log this. */
41
+ content: Record<string, string>;
42
+ }
43
+ /**
44
+ * Machine-readable error taxonomy — one per distinct outcome the Edge
45
+ * Function's contract defines (`access.ts`'s `fail()` call sites in `index.ts`).
46
+ */
47
+ export type PrivateRegistryGetErrorCode = 'invalid_request' | 'unauthenticated' | 'forbidden' | 'not_found' | 'rate_limited' | 'server_error' | 'network_error';
48
+ export type PrivateRegistryGetResult = {
49
+ ok: true;
50
+ data: PrivateRegistrySkillContent;
51
+ } | {
52
+ ok: false;
53
+ code: PrivateRegistryGetErrorCode;
54
+ status: number;
55
+ message: string;
56
+ };
57
+ export interface GetPrivateRegistrySkillContentParams {
58
+ /**
59
+ * Real end-user JWT (e.g. from `resolveFreshAccessToken()`). Required — the
60
+ * endpoint 401s on anything else, including an API key.
61
+ */
62
+ jwtToken: string;
63
+ /** Registry skill ID, `author/name` format. */
64
+ skillId: string;
65
+ /** Pin a specific published version; omitted = most-recently-published. */
66
+ version?: string;
67
+ baseUrl?: string;
68
+ anonKey?: string;
69
+ timeoutMs?: number;
70
+ }
71
+ /**
72
+ * Fetch one private-registry skill's packaged content via the
73
+ * `private-registry-get` Edge Function.
74
+ *
75
+ * Response contract (`supabase/functions/private-registry-get/index.ts`):
76
+ * 200 → `{ data: PrivateRegistrySkillContent }`
77
+ * 4xx/5xx → `{ error: string }`
78
+ */
79
+ export declare function getPrivateRegistrySkillContent(params: GetPrivateRegistrySkillContentParams): Promise<PrivateRegistryGetResult>;
80
+ //# sourceMappingURL=client.private-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.private-registry.d.ts","sourceRoot":"","sources":["../../../src/api/client.private-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GACnC,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,GACX,WAAW,GACX,cAAc,GACd,cAAc,GACd,eAAe,CAAA;AAEnB,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,2BAA2B,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,2BAA2B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAErF,MAAM,WAAW,oCAAoC;IACnD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqBD;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC,wBAAwB,CAAC,CAkDnC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @fileoverview Private-registry content fetch (SMI-5905 Wave 4).
3
+ * @module @skillsmith/core/api/client.private-registry
4
+ * @see docs/internal/implementation/private-registry-skill-install.md
5
+ * @see supabase/functions/private-registry-get/index.ts (Wave 2 — the transport this calls)
6
+ *
7
+ * The CLI's only path to `private_registry_skills.content` — the CLI never
8
+ * carries Supabase credentials directly, only reaches Supabase-backed data
9
+ * through Edge Functions. Lives in its own file rather than `client.ts`
10
+ * (already 479/500 lines), following the `client.health.ts`/`client.events.ts`
11
+ * companion-module convention already used to split `SkillsmithApiClient`
12
+ * functionality: a standalone function that reuses `buildRequestHeaders()` /
13
+ * `DEFAULT_BASE_URL` / `PRODUCTION_ANON_KEY` from `./utils.js` rather than
14
+ * adding a method onto the class itself.
15
+ *
16
+ * Deliberately does NOT reuse `SkillsmithApiClient.request()`'s retry-on-5xx/
17
+ * 429 loop — this performs exactly one fetch. Retrying an unauthenticated,
18
+ * forbidden, or not-found response would never succeed, and retrying a 429
19
+ * would fight the endpoint's own tighter (30/min, IP-keyed) rate limiter.
20
+ * Every failure surfaces as a typed result for the CLI to render directly.
21
+ *
22
+ * Auth contract (see supabase/functions/private-registry-get/access.ts):
23
+ * the Edge Function 401s on anything but a real end-user JWT — an
24
+ * `sk_live_*`/`sk_test_*` API key and the anon key both fail authentication
25
+ * there. Callers MUST supply a JWT (e.g. via `resolveFreshAccessToken()`)
26
+ * rather than the class's own apiKey/anonKey fallback chain.
27
+ */
28
+ import { buildRequestHeaders, DEFAULT_BASE_URL, PRODUCTION_ANON_KEY } from './utils.js';
29
+ const DEFAULT_TIMEOUT_MS = 30_000;
30
+ function codeForStatus(status) {
31
+ switch (status) {
32
+ case 400:
33
+ return 'invalid_request';
34
+ case 401:
35
+ return 'unauthenticated';
36
+ case 403:
37
+ return 'forbidden';
38
+ case 404:
39
+ return 'not_found';
40
+ case 429:
41
+ return 'rate_limited';
42
+ default:
43
+ return 'server_error';
44
+ }
45
+ }
46
+ /**
47
+ * Fetch one private-registry skill's packaged content via the
48
+ * `private-registry-get` Edge Function.
49
+ *
50
+ * Response contract (`supabase/functions/private-registry-get/index.ts`):
51
+ * 200 → `{ data: PrivateRegistrySkillContent }`
52
+ * 4xx/5xx → `{ error: string }`
53
+ */
54
+ export async function getPrivateRegistrySkillContent(params) {
55
+ const baseUrl = params.baseUrl ?? DEFAULT_BASE_URL;
56
+ const anonKey = params.anonKey ?? PRODUCTION_ANON_KEY;
57
+ const timeoutMs = params.timeoutMs ?? DEFAULT_TIMEOUT_MS;
58
+ const query = new URLSearchParams({ skillId: params.skillId });
59
+ if (params.version)
60
+ query.set('version', params.version);
61
+ const controller = new AbortController();
62
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
63
+ let response;
64
+ try {
65
+ response = await fetch(`${baseUrl}/private-registry-get?${query.toString()}`, {
66
+ method: 'GET',
67
+ headers: {
68
+ ...buildRequestHeaders(anonKey),
69
+ // Deliberately NOT the class's auth-mode priority chain (JWT > API
70
+ // key > anon key) — this endpoint requires a real user JWT, always.
71
+ Authorization: `Bearer ${params.jwtToken}`,
72
+ },
73
+ signal: controller.signal,
74
+ });
75
+ }
76
+ catch (error) {
77
+ const message = error instanceof Error ? error.message : String(error);
78
+ clearTimeout(timer);
79
+ return { ok: false, code: 'network_error', status: 0, message };
80
+ }
81
+ clearTimeout(timer);
82
+ const body = (await response.json().catch(() => null));
83
+ if (!response.ok) {
84
+ const message = body?.error ?? `private-registry-get failed with status ${response.status}`;
85
+ return { ok: false, code: codeForStatus(response.status), status: response.status, message };
86
+ }
87
+ if (!body?.data) {
88
+ return {
89
+ ok: false,
90
+ code: 'network_error',
91
+ status: response.status,
92
+ message: 'private-registry-get returned an unexpected response shape',
93
+ };
94
+ }
95
+ return { ok: true, data: body.data };
96
+ }
97
+ //# sourceMappingURL=client.private-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.private-registry.js","sourceRoot":"","sources":["../../../src/api/client.private-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SMI-5905 Wave 4: getPrivateRegistrySkillContent() tests.
3
+ *
4
+ * Verifies the request shape (JWT-only Authorization, query params) and the
5
+ * response-contract mapping to a typed result, against the response shape
6
+ * documented in supabase/functions/private-registry-get/index.ts.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=client.private-registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.private-registry.test.d.ts","sourceRoot":"","sources":["../../../src/api/client.private-registry.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * SMI-5905 Wave 4: getPrivateRegistrySkillContent() tests.
3
+ *
4
+ * Verifies the request shape (JWT-only Authorization, query params) and the
5
+ * response-contract mapping to a typed result, against the response shape
6
+ * documented in supabase/functions/private-registry-get/index.ts.
7
+ */
8
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
9
+ import { getPrivateRegistrySkillContent } from './client.private-registry.js';
10
+ const ORIGINAL_FETCH = globalThis.fetch;
11
+ const SUCCESS_DATA = {
12
+ skill_id: 'my-team/internal-helper',
13
+ team_id: 'team-123',
14
+ version: '1.2.0',
15
+ description: 'An internal helper skill',
16
+ content_hash: 'abc123',
17
+ deprecated: false,
18
+ published_at: '2026-07-01T00:00:00.000Z',
19
+ content: { 'SKILL.md': '---\nname: internal-helper\n---\nBody content.' },
20
+ };
21
+ function jsonResponse(body, status) {
22
+ return new Response(JSON.stringify(body), {
23
+ status,
24
+ headers: { 'Content-Type': 'application/json' },
25
+ });
26
+ }
27
+ describe('SMI-5905: getPrivateRegistrySkillContent()', () => {
28
+ let fetchMock;
29
+ let capturedUrl;
30
+ let capturedInit;
31
+ beforeEach(() => {
32
+ capturedUrl = '';
33
+ capturedInit = undefined;
34
+ fetchMock = vi.fn((url, init) => {
35
+ capturedUrl = url;
36
+ capturedInit = init;
37
+ return Promise.resolve(jsonResponse({ data: SUCCESS_DATA }, 200));
38
+ });
39
+ globalThis.fetch = fetchMock;
40
+ });
41
+ afterEach(() => {
42
+ globalThis.fetch = ORIGINAL_FETCH;
43
+ vi.clearAllMocks();
44
+ });
45
+ it('sends the skillId as a query param and the JWT as Authorization: Bearer', async () => {
46
+ await getPrivateRegistrySkillContent({
47
+ jwtToken: 'user-jwt-abc',
48
+ skillId: 'my-team/internal-helper',
49
+ });
50
+ expect(capturedUrl).toContain('/private-registry-get?');
51
+ expect(capturedUrl).toContain('skillId=my-team%2Finternal-helper');
52
+ expect(capturedUrl).not.toContain('version=');
53
+ const headers = capturedInit?.headers;
54
+ expect(headers['Authorization']).toBe('Bearer user-jwt-abc');
55
+ });
56
+ it('forwards an explicit --version as a query param', async () => {
57
+ await getPrivateRegistrySkillContent({
58
+ jwtToken: 'user-jwt-abc',
59
+ skillId: 'my-team/internal-helper',
60
+ version: '1.0.0',
61
+ });
62
+ expect(capturedUrl).toContain('version=1.0.0');
63
+ });
64
+ it('never sends an X-API-Key header — only the JWT bearer', async () => {
65
+ await getPrivateRegistrySkillContent({
66
+ jwtToken: 'user-jwt-abc',
67
+ skillId: 'my-team/internal-helper',
68
+ });
69
+ const headers = capturedInit?.headers;
70
+ expect(headers['X-API-Key']).toBeUndefined();
71
+ });
72
+ it('returns ok:true with the parsed data on 200', async () => {
73
+ const result = await getPrivateRegistrySkillContent({
74
+ jwtToken: 'user-jwt-abc',
75
+ skillId: 'my-team/internal-helper',
76
+ });
77
+ expect(result.ok).toBe(true);
78
+ if (result.ok) {
79
+ expect(result.data).toEqual(SUCCESS_DATA);
80
+ }
81
+ });
82
+ it.each([
83
+ [400, 'invalid_request'],
84
+ [401, 'unauthenticated'],
85
+ [403, 'forbidden'],
86
+ [404, 'not_found'],
87
+ [429, 'rate_limited'],
88
+ [500, 'server_error'],
89
+ [405, 'server_error'],
90
+ ])('maps HTTP %i to error code %s', async (status, expectedCode) => {
91
+ fetchMock.mockResolvedValueOnce(jsonResponse({ error: `boom ${status}` }, status));
92
+ const result = await getPrivateRegistrySkillContent({
93
+ jwtToken: 'user-jwt-abc',
94
+ skillId: 'my-team/internal-helper',
95
+ });
96
+ expect(result.ok).toBe(false);
97
+ if (!result.ok) {
98
+ expect(result.code).toBe(expectedCode);
99
+ expect(result.status).toBe(status);
100
+ expect(result.message).toContain(`boom ${status}`);
101
+ }
102
+ });
103
+ it('returns network_error when fetch itself throws', async () => {
104
+ fetchMock.mockRejectedValueOnce(new Error('ECONNREFUSED'));
105
+ const result = await getPrivateRegistrySkillContent({
106
+ jwtToken: 'user-jwt-abc',
107
+ skillId: 'my-team/internal-helper',
108
+ });
109
+ expect(result.ok).toBe(false);
110
+ if (!result.ok) {
111
+ expect(result.code).toBe('network_error');
112
+ expect(result.message).toContain('ECONNREFUSED');
113
+ }
114
+ });
115
+ it('returns network_error on a 200 with an unexpected response shape', async () => {
116
+ fetchMock.mockResolvedValueOnce(jsonResponse({ unexpected: true }, 200));
117
+ const result = await getPrivateRegistrySkillContent({
118
+ jwtToken: 'user-jwt-abc',
119
+ skillId: 'my-team/internal-helper',
120
+ });
121
+ expect(result.ok).toBe(false);
122
+ if (!result.ok) {
123
+ expect(result.code).toBe('network_error');
124
+ }
125
+ });
126
+ });
127
+ //# sourceMappingURL=client.private-registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.private-registry.test.js","sourceRoot":"","sources":["../../../src/api/client.private-registry.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * SMI-5897 (C-15): Unit coverage for `SkillsmithApiClient.toSkill()`'s
3
+ * security-status field derivation.
4
+ *
5
+ * Previously `toSkill()` hardcoded `riskScore: null, securityFindingsCount: 0,
6
+ * securityScannedAt: null, securityPassed: null` for every API-sourced skill,
7
+ * discarding the real `security_score`/`quarantined`/`last_scanned_at`/
8
+ * `security_findings` fields already present on the `ApiSearchResult` it
9
+ * received — this is why CLI `info`/`search` (which both route through
10
+ * `toSkill()`) could show "Not scanned" for a skill MCP correctly reported
11
+ * as passed. `toSkill()` now derives these fields via the same shared
12
+ * `deriveSecuritySummaryFromApiSkill()` MCP's tools use, so the two surfaces
13
+ * can't re-diverge (see `api/security-summary.test.ts` for derivation-logic
14
+ * coverage — this file only asserts `toSkill()` wires it through correctly).
15
+ *
16
+ * SMI-5897 (Wave 4 fix): imports `ApiSearchResult` from `./client.types.js` —
17
+ * `toSkill()`'s ACTUAL parameter type — not `./types.js`, which declares a
18
+ * different, same-named type (a pre-existing naming collision elsewhere in
19
+ * this codebase, not something fixed globally here). Importing the wrong
20
+ * type, combined with the `as ApiSearchResult` cast this fix also removes,
21
+ * meant the fixture below was never actually type-checked against
22
+ * `toSkill()`'s real input contract.
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=client.toSkill.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.toSkill.test.d.ts","sourceRoot":"","sources":["../../../src/api/client.toSkill.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * SMI-5897 (C-15): Unit coverage for `SkillsmithApiClient.toSkill()`'s
3
+ * security-status field derivation.
4
+ *
5
+ * Previously `toSkill()` hardcoded `riskScore: null, securityFindingsCount: 0,
6
+ * securityScannedAt: null, securityPassed: null` for every API-sourced skill,
7
+ * discarding the real `security_score`/`quarantined`/`last_scanned_at`/
8
+ * `security_findings` fields already present on the `ApiSearchResult` it
9
+ * received — this is why CLI `info`/`search` (which both route through
10
+ * `toSkill()`) could show "Not scanned" for a skill MCP correctly reported
11
+ * as passed. `toSkill()` now derives these fields via the same shared
12
+ * `deriveSecuritySummaryFromApiSkill()` MCP's tools use, so the two surfaces
13
+ * can't re-diverge (see `api/security-summary.test.ts` for derivation-logic
14
+ * coverage — this file only asserts `toSkill()` wires it through correctly).
15
+ *
16
+ * SMI-5897 (Wave 4 fix): imports `ApiSearchResult` from `./client.types.js` —
17
+ * `toSkill()`'s ACTUAL parameter type — not `./types.js`, which declares a
18
+ * different, same-named type (a pre-existing naming collision elsewhere in
19
+ * this codebase, not something fixed globally here). Importing the wrong
20
+ * type, combined with the `as ApiSearchResult` cast this fix also removes,
21
+ * meant the fixture below was never actually type-checked against
22
+ * `toSkill()`'s real input contract.
23
+ */
24
+ import { describe, it, expect } from 'vitest';
25
+ import { SkillsmithApiClient } from './client.js';
26
+ function makeApiSearchResult(overrides = {}) {
27
+ return {
28
+ id: 'skill-1',
29
+ name: 'commit',
30
+ description: 'A commit skill',
31
+ author: 'anthropic',
32
+ repo_url: 'https://github.com/anthropic/commit',
33
+ quality_score: 90,
34
+ trust_tier: 'verified',
35
+ tags: ['git'],
36
+ stars: 10,
37
+ created_at: '2026-01-01T00:00:00.000Z',
38
+ updated_at: '2026-01-02T00:00:00.000Z',
39
+ installable: true,
40
+ ...overrides,
41
+ };
42
+ }
43
+ describe('SkillsmithApiClient.toSkill() — security field derivation (SMI-5897 C-15)', () => {
44
+ it('reports "not scanned" (all-null security fields) when last_scanned_at is null', () => {
45
+ const result = makeApiSearchResult({
46
+ last_scanned_at: null,
47
+ quarantined: false,
48
+ security_score: null,
49
+ security_findings: null,
50
+ });
51
+ const skill = SkillsmithApiClient.toSkill(result);
52
+ expect(skill.securityScannedAt).toBeNull();
53
+ expect(skill.securityPassed).toBeNull();
54
+ expect(skill.riskScore).toBeNull();
55
+ expect(skill.securityFindingsCount).toBe(0);
56
+ });
57
+ it('reports a real passing scan status instead of a hardcoded "not scanned"', () => {
58
+ const result = makeApiSearchResult({
59
+ last_scanned_at: '2026-06-01T00:00:00.000Z',
60
+ quarantined: false,
61
+ security_score: 0,
62
+ security_findings: [],
63
+ });
64
+ const skill = SkillsmithApiClient.toSkill(result);
65
+ // Pre-fix this was unconditionally { securityPassed: null, ... } —
66
+ // the exact CLI/MCP status-mismatch bug (C-15).
67
+ expect(skill.securityPassed).toBe(true);
68
+ expect(skill.securityScannedAt).toBe('2026-06-01T00:00:00.000Z');
69
+ expect(skill.riskScore).toBe(0);
70
+ expect(skill.securityFindingsCount).toBe(0);
71
+ });
72
+ it('reports a failing scan status (quarantined) instead of a hardcoded "not scanned"', () => {
73
+ const result = makeApiSearchResult({
74
+ last_scanned_at: '2026-06-01T00:00:00.000Z',
75
+ quarantined: true,
76
+ security_score: 10,
77
+ security_findings: [{ rule: 'a' }, { rule: 'b' }],
78
+ });
79
+ const skill = SkillsmithApiClient.toSkill(result);
80
+ expect(skill.securityPassed).toBe(false);
81
+ expect(skill.securityFindingsCount).toBe(2);
82
+ expect(skill.riskScore).toBe(10);
83
+ });
84
+ it('preserves riskScore: null (never fabricates 0) for a scanned-but-unscored skill', () => {
85
+ const result = makeApiSearchResult({
86
+ last_scanned_at: '2026-06-01T00:00:00.000Z',
87
+ quarantined: false,
88
+ security_score: null,
89
+ security_findings: null,
90
+ });
91
+ const skill = SkillsmithApiClient.toSkill(result);
92
+ expect(skill.securityPassed).toBeNull();
93
+ expect(skill.riskScore).toBeNull();
94
+ expect(skill.securityScannedAt).toBe('2026-06-01T00:00:00.000Z');
95
+ });
96
+ });
97
+ //# sourceMappingURL=client.toSkill.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.toSkill.test.js","sourceRoot":"","sources":["../../../src/api/client.toSkill.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,SAAS,mBAAmB,CAAC,YAAsC,EAAE;IACnE,OAAO;QACL,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gBAAgB;QAC7B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,qCAAqC;QAC/C,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,0BAA0B;QACtC,UAAU,EAAE,0BAA0B;QACtC,WAAW,EAAE,IAAI;QACjB,GAAG,SAAS;KACb,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACzF,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;QAClC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,eAAe,EAAE,0BAA0B;YAC3C,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,CAAC;YACjB,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEjD,mEAAmE;QACnE,gDAAgD;QAChD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,eAAe,EAAE,0BAA0B;YAC3C,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,EAAE;YAClB,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;SAClD,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,eAAe,EAAE,0BAA0B;YAC3C,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;QAClC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,3 +1,11 @@
1
1
  export declare function tryRefreshToken(): Promise<string | null>;
2
2
  export declare function loadStoredAccessToken(): Promise<string | null>;
3
+ /**
4
+ * Resolve the signed-in user's Supabase access token, refreshing it if it has
5
+ * expired (or is within `TOKEN_EXPIRY_SKEW_MS` of expiring).
6
+ *
7
+ * @returns the access token, or null when no credentials are stored on this
8
+ * machine (or the stored refresh token is no longer valid).
9
+ */
10
+ export declare function resolveFreshAccessToken(): Promise<string | null>;
3
11
  //# sourceMappingURL=client.token-refresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.token-refresh.d.ts","sourceRoot":"","sources":["../../../src/api/client.token-refresh.ts"],"names":[],"mappings":"AAOA,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS9D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIpE"}
1
+ {"version":3,"file":"client.token-refresh.d.ts","sourceRoot":"","sources":["../../../src/api/client.token-refresh.ts"],"names":[],"mappings":"AAOA,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS9D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIpE;AAcD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKtE"}
@@ -16,4 +16,30 @@ export async function loadStoredAccessToken() {
16
16
  return null;
17
17
  return creds.accessToken;
18
18
  }
19
+ /**
20
+ * SMI-5905 Wave 1: refresh a token this many ms before its recorded expiry.
21
+ *
22
+ * Extracted from `packages/mcp-server/src/tools/team-resolver.ts`'s
23
+ * `resolveUserAccessToken()` (originally SMI-4292) so a 2nd consumer (the
24
+ * CLI, via a future private-registry command) can resolve "the signed-in
25
+ * user's fresh access token" without depending on mcp-server. team-resolver.ts
26
+ * now delegates to `resolveFreshAccessToken()` below — same skew constant,
27
+ * same refresh-or-null fallback, no behavior change for its existing callers.
28
+ */
29
+ const TOKEN_EXPIRY_SKEW_MS = 60_000;
30
+ /**
31
+ * Resolve the signed-in user's Supabase access token, refreshing it if it has
32
+ * expired (or is within `TOKEN_EXPIRY_SKEW_MS` of expiring).
33
+ *
34
+ * @returns the access token, or null when no credentials are stored on this
35
+ * machine (or the stored refresh token is no longer valid).
36
+ */
37
+ export async function resolveFreshAccessToken() {
38
+ const creds = await loadCredentials();
39
+ if (!creds)
40
+ return null;
41
+ if (Date.now() < creds.expiresAt - TOKEN_EXPIRY_SKEW_MS)
42
+ return creds.accessToken;
43
+ return tryRefreshToken();
44
+ }
19
45
  //# sourceMappingURL=client.token-refresh.js.map