@skillsmith/core 0.11.3 → 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.
- package/CHANGELOG.md +34 -9
- package/README.md +10 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +15 -5
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/client.private-registry.d.ts +80 -0
- package/dist/src/api/client.private-registry.d.ts.map +1 -0
- package/dist/src/api/client.private-registry.js +97 -0
- package/dist/src/api/client.private-registry.js.map +1 -0
- package/dist/src/api/client.private-registry.test.d.ts +9 -0
- package/dist/src/api/client.private-registry.test.d.ts.map +1 -0
- package/dist/src/api/client.private-registry.test.js +127 -0
- package/dist/src/api/client.private-registry.test.js.map +1 -0
- package/dist/src/api/client.toSkill.test.d.ts +25 -0
- package/dist/src/api/client.toSkill.test.d.ts.map +1 -0
- package/dist/src/api/client.toSkill.test.js +97 -0
- package/dist/src/api/client.toSkill.test.js.map +1 -0
- package/dist/src/api/client.token-refresh.d.ts +8 -0
- package/dist/src/api/client.token-refresh.d.ts.map +1 -1
- package/dist/src/api/client.token-refresh.js +26 -0
- package/dist/src/api/client.token-refresh.js.map +1 -1
- package/dist/src/api/client.token-refresh.test.js +82 -0
- package/dist/src/api/client.token-refresh.test.js.map +1 -1
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +9 -0
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/security-summary.d.ts +73 -0
- package/dist/src/api/security-summary.d.ts.map +1 -0
- package/dist/src/api/security-summary.js +88 -0
- package/dist/src/api/security-summary.js.map +1 -0
- package/dist/src/api/security-summary.test.d.ts +9 -0
- package/dist/src/api/security-summary.test.d.ts.map +1 -0
- package/dist/src/api/security-summary.test.js +94 -0
- package/dist/src/api/security-summary.test.js.map +1 -0
- package/dist/src/config/config-atomic-write.d.ts +30 -10
- package/dist/src/config/config-atomic-write.d.ts.map +1 -1
- package/dist/src/config/config-atomic-write.js +33 -80
- package/dist/src/config/config-atomic-write.js.map +1 -1
- package/dist/src/config/config-atomic-write.test.d.ts +8 -0
- package/dist/src/config/config-atomic-write.test.d.ts.map +1 -1
- package/dist/src/config/config-atomic-write.test.js +64 -12
- package/dist/src/config/config-atomic-write.test.js.map +1 -1
- package/dist/src/config/owned-lock.acquire.d.ts +53 -0
- package/dist/src/config/owned-lock.acquire.d.ts.map +1 -0
- package/dist/src/config/owned-lock.acquire.js +140 -0
- package/dist/src/config/owned-lock.acquire.js.map +1 -0
- package/dist/src/config/owned-lock.claim.d.ts +84 -0
- package/dist/src/config/owned-lock.claim.d.ts.map +1 -0
- package/dist/src/config/owned-lock.claim.js +310 -0
- package/dist/src/config/owned-lock.claim.js.map +1 -0
- package/dist/src/config/owned-lock.d.ts +113 -0
- package/dist/src/config/owned-lock.d.ts.map +1 -0
- package/dist/src/config/owned-lock.js +121 -0
- package/dist/src/config/owned-lock.js.map +1 -0
- package/dist/src/config/owned-lock.test.d.ts +12 -0
- package/dist/src/config/owned-lock.test.d.ts.map +1 -0
- package/dist/src/config/owned-lock.test.js +412 -0
- package/dist/src/config/owned-lock.test.js.map +1 -0
- package/dist/src/config/owned-lock.types.d.ts +78 -0
- package/dist/src/config/owned-lock.types.d.ts.map +1 -0
- package/dist/src/config/owned-lock.types.js +30 -0
- package/dist/src/config/owned-lock.types.js.map +1 -0
- package/dist/src/db/createDatabase.d.ts.map +1 -1
- package/dist/src/db/createDatabase.js +19 -7
- package/dist/src/db/createDatabase.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.exports.d.ts +11 -0
- package/dist/src/embeddings/hnsw-store.exports.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.exports.js +10 -0
- package/dist/src/embeddings/hnsw-store.exports.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +1 -2
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +17 -3
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/embeddings/probe.d.ts.map +1 -1
- package/dist/src/embeddings/probe.js +4 -8
- package/dist/src/embeddings/probe.js.map +1 -1
- package/dist/src/exports/services.d.ts +4 -1
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.js +22 -0
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +17 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/index.d.ts +1 -1
- package/dist/src/install/index.d.ts.map +1 -1
- package/dist/src/install/index.js +1 -1
- package/dist/src/install/index.js.map +1 -1
- package/dist/src/install/paths.d.ts +10 -0
- package/dist/src/install/paths.d.ts.map +1 -1
- package/dist/src/install/paths.js +19 -0
- package/dist/src/install/paths.js.map +1 -1
- package/dist/src/logging/logger.test.js +57 -0
- package/dist/src/logging/logger.test.js.map +1 -1
- package/dist/src/logging/rotation.d.ts +27 -2
- package/dist/src/logging/rotation.d.ts.map +1 -1
- package/dist/src/logging/rotation.js +44 -3
- package/dist/src/logging/rotation.js.map +1 -1
- package/dist/src/logging/rotation.test.js +69 -0
- package/dist/src/logging/rotation.test.js.map +1 -1
- package/dist/src/logging/types.d.ts +8 -2
- package/dist/src/logging/types.d.ts.map +1 -1
- package/dist/src/security/index.d.ts +2 -1
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +3 -0
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +2 -2
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.evidence.d.ts +76 -0
- package/dist/src/security/scanner/SecurityScanner.evidence.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.evidence.js +176 -0
- package/dist/src/security/scanner/SecurityScanner.evidence.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.exec.d.ts +8 -1
- package/dist/src/security/scanner/SecurityScanner.exec.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.exec.js +58 -2
- package/dist/src/security/scanner/SecurityScanner.exec.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +35 -10
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.helpers.js +106 -59
- package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js +41 -13
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.pii.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.pii.js +23 -1
- package/dist/src/security/scanner/SecurityScanner.pii.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.scanners.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.scanners.js +15 -3
- package/dist/src/security/scanner/SecurityScanner.scanners.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.ssrf.d.ts +11 -1
- package/dist/src/security/scanner/SecurityScanner.ssrf.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.ssrf.js +18 -7
- package/dist/src/security/scanner/SecurityScanner.ssrf.js.map +1 -1
- package/dist/src/security/scanner/index.d.ts +3 -3
- package/dist/src/security/scanner/index.d.ts.map +1 -1
- package/dist/src/security/scanner/index.js +5 -2
- package/dist/src/security/scanner/index.js.map +1 -1
- package/dist/src/security/scanner/multiline-category-closure.test.d.ts +80 -0
- package/dist/src/security/scanner/multiline-category-closure.test.d.ts.map +1 -0
- package/dist/src/security/scanner/multiline-category-closure.test.js +287 -0
- package/dist/src/security/scanner/multiline-category-closure.test.js.map +1 -0
- package/dist/src/security/scanner/patterns.d.ts +41 -14
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.jailbreak.d.ts +41 -0
- package/dist/src/security/scanner/patterns.jailbreak.d.ts.map +1 -0
- package/dist/src/security/scanner/patterns.jailbreak.evidence.d.ts +35 -0
- package/dist/src/security/scanner/patterns.jailbreak.evidence.d.ts.map +1 -0
- package/dist/src/security/scanner/patterns.jailbreak.evidence.js +119 -0
- package/dist/src/security/scanner/patterns.jailbreak.evidence.js.map +1 -0
- package/dist/src/security/scanner/patterns.jailbreak.js +370 -0
- package/dist/src/security/scanner/patterns.jailbreak.js.map +1 -0
- package/dist/src/security/scanner/patterns.js +101 -82
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/security/scanner/patterns.scope.d.ts +62 -0
- package/dist/src/security/scanner/patterns.scope.d.ts.map +1 -0
- package/dist/src/security/scanner/patterns.scope.js +207 -0
- package/dist/src/security/scanner/patterns.scope.js.map +1 -0
- package/dist/src/security/scanner/regex-utils.d.ts +20 -0
- package/dist/src/security/scanner/regex-utils.d.ts.map +1 -1
- package/dist/src/security/scanner/regex-utils.js +20 -0
- package/dist/src/security/scanner/regex-utils.js.map +1 -1
- package/dist/src/security/scanner/types.d.ts +35 -0
- package/dist/src/security/scanner/types.d.ts.map +1 -1
- package/dist/src/services/recommend-guard.d.ts +28 -0
- package/dist/src/services/recommend-guard.d.ts.map +1 -0
- package/dist/src/services/recommend-guard.js +34 -0
- package/dist/src/services/recommend-guard.js.map +1 -0
- package/dist/src/services/recommend-guard.test.d.ts +2 -0
- package/dist/src/services/recommend-guard.test.d.ts.map +1 -0
- package/dist/src/services/recommend-guard.test.js +28 -0
- package/dist/src/services/recommend-guard.test.js.map +1 -0
- package/dist/src/services/skill-installation.content.d.ts +88 -0
- package/dist/src/services/skill-installation.content.d.ts.map +1 -0
- package/dist/src/services/skill-installation.content.js +319 -0
- package/dist/src/services/skill-installation.content.js.map +1 -0
- package/dist/src/services/skill-installation.helpers.d.ts +32 -1
- package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
- package/dist/src/services/skill-installation.helpers.js +39 -6
- package/dist/src/services/skill-installation.helpers.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.test.js +34 -2
- package/dist/src/services/skill-installation.helpers.test.js.map +1 -1
- package/dist/src/services/skill-installation.io.d.ts.map +1 -1
- package/dist/src/services/skill-installation.io.js +86 -2
- package/dist/src/services/skill-installation.io.js.map +1 -1
- package/dist/src/services/skill-installation.service.d.ts +20 -1
- package/dist/src/services/skill-installation.service.d.ts.map +1 -1
- package/dist/src/services/skill-installation.service.js +26 -4
- package/dist/src/services/skill-installation.service.js.map +1 -1
- package/dist/src/services/skill-installation.types.d.ts +42 -1
- package/dist/src/services/skill-installation.types.d.ts.map +1 -1
- package/dist/src/services/skill-installation.types.js.map +1 -1
- package/dist/src/services/skill-resolution.d.ts +67 -0
- package/dist/src/services/skill-resolution.d.ts.map +1 -0
- package/dist/src/services/skill-resolution.js +67 -0
- package/dist/src/services/skill-resolution.js.map +1 -0
- package/dist/src/services/skill-resolution.test.d.ts +2 -0
- package/dist/src/services/skill-resolution.test.d.ts.map +1 -0
- package/dist/src/services/skill-resolution.test.js +143 -0
- package/dist/src/services/skill-resolution.test.js.map +1 -0
- package/dist/src/sync/inventory-collector.d.ts.map +1 -1
- package/dist/src/sync/inventory-collector.js +2 -2
- package/dist/src/sync/inventory-collector.js.map +1 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +4 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/quiet-mode.d.ts +21 -0
- package/dist/src/utils/quiet-mode.d.ts.map +1 -0
- package/dist/src/utils/quiet-mode.js +26 -0
- package/dist/src/utils/quiet-mode.js.map +1 -0
- package/dist/tests/EmbeddingService.test.js +58 -1
- package/dist/tests/EmbeddingService.test.js.map +1 -1
- package/dist/tests/SecurityScanner.ai-defence.test.js +32 -7
- package/dist/tests/SecurityScanner.ai-defence.test.js.map +1 -1
- package/dist/tests/SecurityScanner.exec.test.js +79 -0
- package/dist/tests/SecurityScanner.exec.test.js.map +1 -1
- package/dist/tests/SecurityScanner.performance.test.js +5 -2
- package/dist/tests/SecurityScanner.performance.test.js.map +1 -1
- package/dist/tests/db/database-abstraction.test.js +45 -1
- package/dist/tests/db/database-abstraction.test.js.map +1 -1
- package/dist/tests/helpers/deterministic-dead-pid.d.ts +13 -0
- package/dist/tests/helpers/deterministic-dead-pid.d.ts.map +1 -0
- package/dist/tests/helpers/deterministic-dead-pid.js +31 -0
- package/dist/tests/helpers/deterministic-dead-pid.js.map +1 -0
- package/dist/tests/integration/owned-lock-lost-update.test.d.ts +12 -0
- package/dist/tests/integration/owned-lock-lost-update.test.d.ts.map +1 -0
- package/dist/tests/integration/owned-lock-lost-update.test.js +52 -0
- package/dist/tests/integration/owned-lock-lost-update.test.js.map +1 -0
- package/dist/tests/integration/owned-lock-reclaim-race.test.d.ts +19 -0
- package/dist/tests/integration/owned-lock-reclaim-race.test.d.ts.map +1 -0
- package/dist/tests/integration/owned-lock-reclaim-race.test.js +177 -0
- package/dist/tests/integration/owned-lock-reclaim-race.test.js.map +1 -0
- package/dist/tests/security/ContinuousSecurity.performance.test.js +6 -0
- package/dist/tests/security/ContinuousSecurity.performance.test.js.map +1 -1
- package/dist/tests/security/ContinuousSecurity.test.js +15 -0
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
- package/dist/tests/security/ad-crlf-injection.test.d.ts +18 -0
- package/dist/tests/security/ad-crlf-injection.test.d.ts.map +1 -0
- package/dist/tests/security/ad-crlf-injection.test.js +150 -0
- package/dist/tests/security/ad-crlf-injection.test.js.map +1 -0
- package/dist/tests/security/ai-defence-multiline-promotion.test.d.ts +25 -0
- package/dist/tests/security/ai-defence-multiline-promotion.test.d.ts.map +1 -0
- package/dist/tests/security/ai-defence-multiline-promotion.test.js +138 -0
- package/dist/tests/security/ai-defence-multiline-promotion.test.js.map +1 -0
- package/dist/tests/security/nested-instruction-long-attribute.test.d.ts +15 -0
- package/dist/tests/security/nested-instruction-long-attribute.test.d.ts.map +1 -0
- package/dist/tests/security/nested-instruction-long-attribute.test.js +60 -0
- package/dist/tests/security/nested-instruction-long-attribute.test.js.map +1 -0
- package/dist/tests/security/pattern-scope.test.d.ts +17 -0
- package/dist/tests/security/pattern-scope.test.d.ts.map +1 -0
- package/dist/tests/security/pattern-scope.test.js +128 -0
- package/dist/tests/security/pattern-scope.test.js.map +1 -0
- package/dist/tests/security/pii-detection.test.js +39 -0
- package/dist/tests/security/pii-detection.test.js.map +1 -1
- package/dist/tests/security/scanner-evidence-tiers.test.d.ts +30 -0
- package/dist/tests/security/scanner-evidence-tiers.test.d.ts.map +1 -0
- package/dist/tests/security/scanner-evidence-tiers.test.js +258 -0
- package/dist/tests/security/scanner-evidence-tiers.test.js.map +1 -0
- package/dist/tests/security/scanner-privesc-severity.test.d.ts +23 -0
- package/dist/tests/security/scanner-privesc-severity.test.d.ts.map +1 -0
- package/dist/tests/security/scanner-privesc-severity.test.js +43 -0
- package/dist/tests/security/scanner-privesc-severity.test.js.map +1 -0
- package/dist/tests/security/scanner-regression-guard.exec-locality.test.d.ts +20 -0
- package/dist/tests/security/scanner-regression-guard.exec-locality.test.d.ts.map +1 -0
- package/dist/tests/security/scanner-regression-guard.exec-locality.test.js +71 -0
- package/dist/tests/security/scanner-regression-guard.exec-locality.test.js.map +1 -0
- package/dist/tests/security/scanner-regression-guard.test.d.ts +24 -0
- package/dist/tests/security/scanner-regression-guard.test.d.ts.map +1 -1
- package/dist/tests/security/scanner-regression-guard.test.js +59 -3
- package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
- package/dist/tests/security/scanner-ssrf-word-boundary.test.d.ts +19 -0
- package/dist/tests/security/scanner-ssrf-word-boundary.test.d.ts.map +1 -0
- package/dist/tests/security/scanner-ssrf-word-boundary.test.js +65 -0
- package/dist/tests/security/scanner-ssrf-word-boundary.test.js.map +1 -0
- package/dist/tests/security.test.js +11 -2
- package/dist/tests/security.test.js.map +1 -1
- package/dist/tests/skill-scanner/allowlist.test.js +15 -7
- package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
- package/dist/tests/unit/services/skill-installation.content.test.d.ts +10 -0
- package/dist/tests/unit/services/skill-installation.content.test.d.ts.map +1 -0
- package/dist/tests/unit/services/skill-installation.content.test.js +290 -0
- package/dist/tests/unit/services/skill-installation.content.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.io.symlink.test.d.ts +8 -0
- package/dist/tests/unit/services/skill-installation.io.symlink.test.d.ts.map +1 -0
- package/dist/tests/unit/services/skill-installation.io.symlink.test.js +72 -0
- package/dist/tests/unit/services/skill-installation.io.symlink.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.io.test.js +54 -1
- package/dist/tests/unit/services/skill-installation.io.test.js.map +1 -1
- package/dist/tests/unit/services/skill-installation.service.error-codes.test.d.ts +15 -0
- package/dist/tests/unit/services/skill-installation.service.error-codes.test.d.ts.map +1 -0
- package/dist/tests/unit/services/skill-installation.service.error-codes.test.js +190 -0
- package/dist/tests/unit/services/skill-installation.service.error-codes.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.service.multi-client.test.d.ts +17 -0
- package/dist/tests/unit/services/skill-installation.service.multi-client.test.d.ts.map +1 -0
- package/dist/tests/unit/services/skill-installation.service.multi-client.test.js +126 -0
- package/dist/tests/unit/services/skill-installation.service.multi-client.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.service.test.js +7 -112
- package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
- package/dist/tests/utils/quiet-mode.test.d.ts +12 -0
- package/dist/tests/utils/quiet-mode.test.d.ts.map +1 -0
- package/dist/tests/utils/quiet-mode.test.js +42 -0
- package/dist/tests/utils/quiet-mode.test.js.map +1 -0
- package/package.json +17 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE7D,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAA;AAa1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAyC,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/api/client.js
CHANGED
|
@@ -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
|
|
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":"AAGA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EACL,cAAc,GAOf,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,cAAc,GAOf,MAAM,mBAAmB,CAAA;AAE1B,gCAAgC;AAChC,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAyB,MAAM,mBAAmB,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAI3D,wCAAwC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,GAChB,MAAM,cAAc,CAAA;AAErB,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,OAAO,mBAAmB;IACtB,OAAO,CAAQ;IACf,OAAO,CAAoB;IAC3B,MAAM,CAAoB;IAC1B,QAAQ,CAAoB;IAC5B,OAAO,CAAQ;IACf,UAAU,CAAQ;IAClB,KAAK,CAAS;IACd,WAAW,CAAS;IAC5B,iEAAiE;IACzD,YAAY,GAAwB,IAAI,CAAA;IAChD,qDAAqD;IAC7C,aAAa,GAAoB,IAAI,CAAA;IAE7C,YAAY,SAA0B,EAAE;QACtC,8EAA8E;QAC9E,iFAAiF;QACjF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAA;QAElD,oEAAoE;QACpE,0EAA0E;QAC1E,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAA;QAChG,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAA;QAEtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,wFAAwF;QACxF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,mBAAmB,CAAA;QACrF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;QAC7D,kFAAkF;QAClF,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAA;QACtC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAA;QAClC,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvD,CAAC;IAED,gEAAgE;IAChE,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,+EAA+E;IAC/E,iBAAiB;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,yFAAyF;IACzF,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC/B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAA;QAClC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,CAAA;QACpC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,6DAA6D;IAC7D,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,CAAC;IAEO,GAAG,CAAC,OAAe,EAAE,IAAc;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,yFAAyF;IACjF,KAAK,CAAC,OAAO,CACnB,QAAgB,EAChB,UAAuB,EAAE;IACzB,oDAAoD;IACpD,MAEC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAA;QACxC,IAAI,SAA4B,CAAA;QAChC,IAAI,gBAAgB,GAAG,KAAK,CAAA;QAE5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,mBAAmB,OAAO,GAAG,CAAC,GAAG,EAAE;oBAC1C,GAAG;oBACH,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;oBAC/B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;iBAC7B,CAAC,CAAA;gBAEF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;gBACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBAEpE,iEAAiE;gBACjE,mEAAmE;gBACnE,kEAAkE;gBAClE,sDAAsD;gBACtD,oEAAoE;gBACpE,mEAAmE;gBACnE,mEAAmE;gBACnE,gEAAgE;gBAChE,MAAM,UAAU,GAA2B,EAAE,CAAA;gBAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,UAAU,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACzD,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACvB,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;gBACvC,CAAC;qBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACxB,UAAU,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,OAAO,EAAE,CAAA;gBACxD,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,GAAG,OAAO;oBACV,OAAO,EAAE;wBACP,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;wBACpC,GAAG,UAAU;wBACb,GAAG,OAAO,CAAC,OAAO;qBACnB;oBACD,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAA;gBAEF,YAAY,CAAC,SAAS,CAAC,CAAA;gBAEvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ;yBAC9B,IAAI,EAAE;yBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAqB,CAAA;oBAEjE,yDAAyD;oBACzD,IACE,CAAC,gBAAgB;wBACjB,QAAQ,CAAC,MAAM,KAAK,GAAG;wBACvB,IAAI,CAAC,QAAQ;wBACb,CAAC,SAAS,CAAC,KAAK,KAAK,eAAe,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,EAC1E,CAAC;wBACD,gBAAgB,GAAG,IAAI,CAAA;wBACvB,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;wBACxC,IAAI,QAAQ,EAAE,CAAC;4BACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;4BACxB,SAAQ;wBACV,CAAC;oBACH,CAAC;oBAED,0EAA0E;oBAC1E,gEAAgE;oBAChE,gEAAgE;oBAChE,mEAAmE;oBACnE,kEAAkE;oBAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,KAAK,wBAAwB,EAAE,CAAC;wBAC5E,MAAM,SAAS,GAAG,SAKjB,CAAA;wBACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,CAAA;wBAChC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAA;wBAClC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,WAAW,CAAA;wBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;wBACnC,MAAM,IAAI,GAAG,QAAQ;4BACnB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;4BAChF,CAAC,CAAC,CAAC,CAAA;wBACL,MAAM,OAAO,GACX,0BAA0B,IAAI,IAAI,KAAK,IAAI,IAAI,WAAW;4BAC1D,CAAC,QAAQ;gCACP,CAAC,CAAC,aAAa,IAAI,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK;gCAC5F,CAAC,CAAC,EAAE,CAAC;4BACP,yCAAyC,CAAA;wBAC3C,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,sBAAsB,EAAE,OAAO,EAAE;4BACpE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzC,CAAC,CAAA;oBACJ,CAAC;oBAED,qDAAqD;oBACrD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACpD,MAAM,IAAI,cAAc,CACtB,SAAS,CAAC,KAAK,IAAI,cAAc,QAAQ,CAAC,MAAM,EAAE,EAClD,KAAK,EAAE,gBAAgB;wBACvB,QAAQ,CAAC,MAAM,CAChB,CAAA;oBACH,CAAC;oBAED,iEAAiE;oBACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;wBACtD,MAAM,IAAI,cAAc,CAAC,iBAAiB,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;oBACrF,CAAC;oBAED,yBAAyB;oBACzB,MAAM,IAAI,cAAc,CACtB,SAAS,CAAC,KAAK,IAAI,cAAc,QAAQ,CAAC,MAAM,EAAE,EAClD,KAAK,EACL,QAAQ,CAAC,MAAM,CAChB,CAAA;gBACH,CAAC;gBAED,MAAM,OAAO,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAE9C,yDAAyD;gBACzD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;wBAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAA;wBACrC,MAAM,YAAY,GAAG,MAAM;6BACxB,GAAG,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;6BACvE,IAAI,CAAC,IAAI,CAAC,CAAA;wBACb,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;wBAC/C,MAAM,IAAI,eAAe,CACvB,UAAU,CAAC,wBAAwB,EACnC,yBAAyB,YAAY,EAAE,EACvC;4BACE,OAAO,EAAE;gCACP,QAAQ;gCACR,gBAAgB,EAAE,MAAM;6BACzB;yBACF,CACF,CAAA;oBACH,CAAC;oBACD,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;wBACxC,IAAI,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;wBACzE,OAAO,SAAS,CAAC,IAAI,CAAA;oBACvB,CAAC;oBACD,8EAA8E;oBAC9E,MAAM,IAAI,eAAe,CACvB,UAAU,CAAC,wBAAwB,EACnC,wCAAwC,EACxC,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,CAC1B,CAAA;gBACH,CAAC;gBAED,kEAAkE;gBAClE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC3D,OAAO,OAAyB,CAAA;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;gBACrE,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;gBAE7D,8BAA8B;gBAC9B,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACpC,MAAM,SAAS,CAAA;gBACjB,CAAC;gBAED,8EAA8E;gBAC9E,IACE,SAAS,YAAY,eAAe;oBACpC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,wBAAwB,EACtD,CAAC;oBACD,MAAM,SAAS,CAAA;gBACjB,CAAC;gBAED,iEAAiE;gBACjE,iEAAiE;gBACjE,8CAA8C;gBAC9C,IACE,SAAS,YAAY,eAAe;oBACpC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,sBAAsB,EACpD,CAAC;oBACD,MAAM,SAAS,CAAA;gBACjB,CAAC;gBAED,8DAA8D;gBAC9D,0CAA0C;gBAC1C,IAAI,SAAS,YAAY,cAAc,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBAChE,MAAM,SAAS,CAAA;gBACjB,CAAC;gBAED,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;oBACvC,IAAI,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO,CAAC,CAAA;oBACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAC9D,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,MAAM,CACV,OAAsB,EACtB,WAA8B;QAE9B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAElC,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7D,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAChE,IAAI,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QAClE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YACvC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;QAC1D,IAAI,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC9D,iEAAiE;QACjE,IAAI,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACrD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACxE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;QACtD,OAAO,iBAAiB,CACtB,IAAI,CAAC,aAAa,EAClB,QAAQ,EACR,QAAQ,EACR,WAAW,EAAE,KAAK,KAAK,UAAU,EACjC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAoB,QAAQ,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAC1E,CAAA;IACH,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,QAAQ,CACZ,EAAU,EACV,OAAyD;QAEzD,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAA;QACxC,MAAM,YAAY,GAAG,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3E,MAAM,QAAQ,GAAG,kBAAkB,SAAS,GAAG,YAAY,EAAE,CAAA;QAC7D,OAAO,iBAAiB,CACtB,IAAI,CAAC,aAAa,EAClB,UAAU,EACV,QAAQ,EACR,OAAO,EAAE,KAAK,KAAK,UAAU,EAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAkB,QAAQ,EAAE,EAAE,EAAE,yBAAyB,CAAC,CAC7E,CAAA;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,kBAAkB,CACtB,OAA8B,EAC9B,WAA8B;QAE9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE;YACvD,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;SAC7B,CAAC,CAAA;QACF,OAAO,iBAAiB,CACtB,IAAI,CAAC,aAAa,EAClB,WAAW,EACX,QAAQ,EACR,WAAW,EAAE,KAAK,KAAK,UAAU,EACjC,GAAG,EAAE,CACH,IAAI,CAAC,OAAO,CACV,mBAAmB,EACnB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,EACD,oBAAoB,CACrB,CACJ,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,WAAW,CAAC,KAAqB;QACrC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IACrB,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;IACxD,CAAC;IAED,uEAAuE;IACvE,mBAAmB;QACjB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;YAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,GAAG,EAAE,CAAC,CAAC;gBACjD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC,CAAA;QACL,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,WAAW;QAKf,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACrE,CAAC;IAED,2FAA2F;IAC3F,MAAM,CAAC,OAAO,CAAC,MAAuB;QACpC,yEAAyE;QACzE,MAAM,YAAY,GAAG,0BAA0B,CAAA;QAC/C,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YAChC,YAAY,EAAE,MAAM,CAAC,aAAa;YAClC,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;YACxC,yEAAyE;YACzE,SAAS,EAAE,IAAI;YACf,qBAAqB,EAAE,CAAC;YACxB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,YAAY;YAC5C,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,YAAY;SAC7C,CAAA;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,eAAe,mBAAmB,CAAA"}
|
|
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":"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"}
|
|
@@ -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
|