@skillsmith/core 0.5.3 → 0.5.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 +14 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/activation/ActivationManager.d.ts +7 -0
- package/dist/src/activation/ActivationManager.d.ts.map +1 -1
- package/dist/src/activation/ActivationManager.js +13 -4
- package/dist/src/activation/ActivationManager.js.map +1 -1
- package/dist/src/analysis/adapters/python.d.ts +16 -11
- package/dist/src/analysis/adapters/python.d.ts.map +1 -1
- package/dist/src/analysis/adapters/python.js +46 -61
- package/dist/src/analysis/adapters/python.js.map +1 -1
- package/dist/src/analysis/router.test.d.ts +2 -0
- package/dist/src/analysis/router.test.d.ts.map +1 -0
- package/dist/src/analysis/router.test.js +411 -0
- package/dist/src/analysis/router.test.js.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -1
- package/dist/src/analysis/tree-sitter/manager.js +12 -5
- package/dist/src/analysis/tree-sitter/manager.js.map +1 -1
- package/dist/src/analysis/tree-sitter/pythonExtractor.d.ts +45 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.js +264 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.js.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.test.d.ts +12 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.test.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.test.js +74 -0
- package/dist/src/analysis/tree-sitter/pythonExtractor.test.js.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.d.ts +93 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.d.ts +22 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.js +229 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.js.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.js +287 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.js.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.test.d.ts +17 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.test.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.test.js +142 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.test.js.map +1 -0
- package/dist/src/analysis/tree-sitter/queries/python.d.ts +43 -0
- package/dist/src/analysis/tree-sitter/queries/python.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/queries/python.js +88 -0
- package/dist/src/analysis/tree-sitter/queries/python.js.map +1 -0
- package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.d.ts +13 -0
- package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.js +174 -0
- package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.js.map +1 -0
- package/dist/src/analytics/ROIDashboardService.csv.d.ts +11 -0
- package/dist/src/analytics/ROIDashboardService.csv.d.ts.map +1 -0
- package/dist/src/analytics/ROIDashboardService.csv.js +43 -0
- package/dist/src/analytics/ROIDashboardService.csv.js.map +1 -0
- package/dist/src/analytics/ROIDashboardService.d.ts +64 -3
- package/dist/src/analytics/ROIDashboardService.d.ts.map +1 -1
- package/dist/src/analytics/ROIDashboardService.js +116 -45
- package/dist/src/analytics/ROIDashboardService.js.map +1 -1
- package/dist/src/api/client.d.ts +4 -66
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.events.d.ts.map +1 -1
- package/dist/src/api/client.events.js +10 -1
- package/dist/src/api/client.events.js.map +1 -1
- package/dist/src/api/client.js +40 -66
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/client.token-refresh.d.ts +3 -0
- package/dist/src/api/client.token-refresh.d.ts.map +1 -0
- package/dist/src/api/client.token-refresh.js +19 -0
- package/dist/src/api/client.token-refresh.js.map +1 -0
- package/dist/src/api/client.token-refresh.test.d.ts +2 -0
- package/dist/src/api/client.token-refresh.test.d.ts.map +1 -0
- package/dist/src/api/client.token-refresh.test.js +73 -0
- package/dist/src/api/client.token-refresh.test.js.map +1 -0
- package/dist/src/api/client.types.d.ts +2 -0
- package/dist/src/api/client.types.d.ts.map +1 -1
- package/dist/src/api/index.d.ts +1 -1
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +1 -1
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/schemas.d.ts +60 -60
- package/dist/src/api/schemas.d.ts.map +1 -1
- package/dist/src/benchmarks/incrementalParseBenchmark.d.ts +18 -0
- package/dist/src/benchmarks/incrementalParseBenchmark.d.ts.map +1 -0
- package/dist/src/benchmarks/incrementalParseBenchmark.js +121 -0
- package/dist/src/benchmarks/incrementalParseBenchmark.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.test.d.ts +2 -0
- package/dist/src/billing/GDPRComplianceService.test.d.ts.map +1 -0
- package/dist/src/billing/GDPRComplianceService.test.js +405 -0
- package/dist/src/billing/GDPRComplianceService.test.js.map +1 -0
- package/dist/src/config/index.d.ts +4 -0
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js +6 -0
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/token-credentials.d.ts +13 -0
- package/dist/src/config/token-credentials.d.ts.map +1 -0
- package/dist/src/config/token-credentials.js +126 -0
- package/dist/src/config/token-credentials.js.map +1 -0
- package/dist/src/config/token-credentials.test.d.ts +10 -0
- package/dist/src/config/token-credentials.test.d.ts.map +1 -0
- package/dist/src/config/token-credentials.test.js +91 -0
- package/dist/src/config/token-credentials.test.js.map +1 -0
- package/dist/src/index.d.ts +7 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/SkillParser.coverage.test.d.ts +10 -0
- package/dist/src/indexer/SkillParser.coverage.test.d.ts.map +1 -0
- package/dist/src/indexer/SkillParser.coverage.test.js +76 -0
- package/dist/src/indexer/SkillParser.coverage.test.js.map +1 -0
- package/dist/src/indexer/SkillParser.test.d.ts +2 -0
- package/dist/src/indexer/SkillParser.test.d.ts.map +1 -0
- package/dist/src/indexer/SkillParser.test.js +375 -0
- package/dist/src/indexer/SkillParser.test.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +34 -5
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/scripts/github-import/blocklist.d.ts +65 -0
- package/dist/src/scripts/github-import/blocklist.d.ts.map +1 -0
- package/dist/src/scripts/github-import/blocklist.js +124 -0
- package/dist/src/scripts/github-import/blocklist.js.map +1 -0
- package/dist/src/scripts/github-import/index.d.ts +1 -0
- package/dist/src/scripts/github-import/index.d.ts.map +1 -1
- package/dist/src/scripts/github-import/index.js +3 -0
- package/dist/src/scripts/github-import/index.js.map +1 -1
- package/dist/src/scripts/github-import/signal-of-intent.d.ts +87 -0
- package/dist/src/scripts/github-import/signal-of-intent.d.ts.map +1 -0
- package/dist/src/scripts/github-import/signal-of-intent.js +213 -0
- package/dist/src/scripts/github-import/signal-of-intent.js.map +1 -0
- package/dist/src/scripts/github-import/types.d.ts +22 -0
- package/dist/src/scripts/github-import/types.d.ts.map +1 -1
- package/dist/src/scripts/github-import/types.js.map +1 -1
- package/dist/src/scripts/import-github-skills.js +73 -3
- package/dist/src/scripts/import-github-skills.js.map +1 -1
- package/dist/src/scripts/skill-scanner/allowlist.d.ts +38 -0
- package/dist/src/scripts/skill-scanner/allowlist.d.ts.map +1 -0
- package/dist/src/scripts/skill-scanner/allowlist.js +178 -0
- package/dist/src/scripts/skill-scanner/allowlist.js.map +1 -0
- package/dist/src/scripts/skill-scanner/scanner.d.ts +10 -2
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.js +15 -3
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts +20 -6
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.js +28 -9
- package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
- package/dist/src/scripts/skill-scanner/types.d.ts +50 -0
- package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
- package/dist/src/scripts/validation/types.d.ts +14 -24
- package/dist/src/scripts/validation/types.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +18 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.helpers.js +54 -6
- package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.js +45 -5
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/services/skill-config-schema.d.ts +4 -36
- package/dist/src/services/skill-config-schema.d.ts.map +1 -1
- package/dist/src/sources/LocalFilesystemAdapter.d.ts +104 -10
- package/dist/src/sources/LocalFilesystemAdapter.d.ts.map +1 -1
- package/dist/src/sources/LocalFilesystemAdapter.helpers.d.ts +92 -0
- package/dist/src/sources/LocalFilesystemAdapter.helpers.d.ts.map +1 -0
- package/dist/src/sources/LocalFilesystemAdapter.helpers.js +157 -0
- package/dist/src/sources/LocalFilesystemAdapter.helpers.js.map +1 -0
- package/dist/src/sources/LocalFilesystemAdapter.js +218 -159
- package/dist/src/sources/LocalFilesystemAdapter.js.map +1 -1
- package/dist/src/sources/LocalFilesystemAdapter.scan.d.ts +78 -0
- package/dist/src/sources/LocalFilesystemAdapter.scan.d.ts.map +1 -0
- package/dist/src/sources/LocalFilesystemAdapter.scan.js +118 -0
- package/dist/src/sources/LocalFilesystemAdapter.scan.js.map +1 -0
- package/dist/src/sources/index.d.ts +1 -1
- package/dist/src/sources/index.d.ts.map +1 -1
- package/dist/src/sources/index.js.map +1 -1
- package/dist/src/sources/types.d.ts +28 -0
- package/dist/src/sources/types.d.ts.map +1 -1
- package/dist/src/telemetry/tracer-imports.d.ts +13 -0
- package/dist/src/telemetry/tracer-imports.d.ts.map +1 -0
- package/dist/src/telemetry/tracer-imports.js +26 -0
- package/dist/src/telemetry/tracer-imports.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +18 -21
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/utils/rate-limit.d.ts +39 -0
- package/dist/src/utils/rate-limit.d.ts.map +1 -0
- package/dist/src/utils/rate-limit.js +48 -0
- package/dist/src/utils/rate-limit.js.map +1 -0
- package/dist/src/utils/rate-limit.test.d.ts +11 -0
- package/dist/src/utils/rate-limit.test.d.ts.map +1 -0
- package/dist/src/utils/rate-limit.test.js +86 -0
- package/dist/src/utils/rate-limit.test.js.map +1 -0
- package/dist/src/webhooks/WebhookDeadLetterRepository.d.ts +178 -0
- package/dist/src/webhooks/WebhookDeadLetterRepository.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookDeadLetterRepository.js +196 -0
- package/dist/src/webhooks/WebhookDeadLetterRepository.js.map +1 -0
- package/dist/src/webhooks/WebhookQueue.d.ts +1 -0
- package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookQueue.js +19 -0
- package/dist/src/webhooks/WebhookQueue.js.map +1 -1
- package/dist/src/webhooks/WebhookQueue.types.d.ts +11 -0
- package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -1
- package/dist/src/webhooks/index.d.ts +1 -0
- package/dist/src/webhooks/index.d.ts.map +1 -1
- package/dist/src/webhooks/index.js +2 -0
- package/dist/src/webhooks/index.js.map +1 -1
- package/dist/src/webhooks/webhook-schemas.d.ts +117 -1212
- package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -1
- package/dist/tests/ActivationManager.test.d.ts +13 -0
- package/dist/tests/ActivationManager.test.d.ts.map +1 -0
- package/dist/tests/ActivationManager.test.js +218 -0
- package/dist/tests/ActivationManager.test.js.map +1 -0
- package/dist/tests/LocalFilesystemAdapter.coverage.test.d.ts +13 -0
- package/dist/tests/LocalFilesystemAdapter.coverage.test.d.ts.map +1 -0
- package/dist/tests/LocalFilesystemAdapter.coverage.test.js +314 -0
- package/dist/tests/LocalFilesystemAdapter.coverage.test.js.map +1 -0
- package/dist/tests/LocalFilesystemAdapter.security.test.d.ts +18 -0
- package/dist/tests/LocalFilesystemAdapter.security.test.d.ts.map +1 -0
- package/dist/tests/LocalFilesystemAdapter.security.test.js +344 -0
- package/dist/tests/LocalFilesystemAdapter.security.test.js.map +1 -0
- package/dist/tests/LocalFilesystemAdapter.test.d.ts +12 -0
- package/dist/tests/LocalFilesystemAdapter.test.d.ts.map +1 -0
- package/dist/tests/LocalFilesystemAdapter.test.js +301 -0
- package/dist/tests/LocalFilesystemAdapter.test.js.map +1 -0
- package/dist/tests/ROIDashboardService.coverage.test.d.ts +9 -0
- package/dist/tests/ROIDashboardService.coverage.test.d.ts.map +1 -0
- package/dist/tests/ROIDashboardService.coverage.test.js +118 -0
- package/dist/tests/ROIDashboardService.coverage.test.js.map +1 -0
- package/dist/tests/ROIDashboardService.test.js +87 -0
- package/dist/tests/ROIDashboardService.test.js.map +1 -1
- package/dist/tests/ScraperAdapters.gitlab-coverage.test.d.ts +14 -0
- package/dist/tests/ScraperAdapters.gitlab-coverage.test.d.ts.map +1 -0
- package/dist/tests/ScraperAdapters.gitlab-coverage.test.js +169 -0
- package/dist/tests/ScraperAdapters.gitlab-coverage.test.js.map +1 -0
- package/dist/tests/ScraperAdapters.test.d.ts +5 -1
- package/dist/tests/ScraperAdapters.test.d.ts.map +1 -1
- package/dist/tests/ScraperAdapters.test.js +6 -336
- package/dist/tests/ScraperAdapters.test.js.map +1 -1
- package/dist/tests/WebhookDeadLetterRepository.test.d.ts +2 -0
- package/dist/tests/WebhookDeadLetterRepository.test.d.ts.map +1 -0
- package/dist/tests/WebhookDeadLetterRepository.test.js +333 -0
- package/dist/tests/WebhookDeadLetterRepository.test.js.map +1 -0
- package/dist/tests/WebhookHandler.test.js +93 -1
- package/dist/tests/WebhookHandler.test.js.map +1 -1
- package/dist/tests/WebhookQueue.coverage.test.d.ts +19 -0
- package/dist/tests/WebhookQueue.coverage.test.d.ts.map +1 -0
- package/dist/tests/WebhookQueue.coverage.test.js +190 -0
- package/dist/tests/WebhookQueue.coverage.test.js.map +1 -0
- package/dist/tests/api/client.events.test.d.ts +10 -0
- package/dist/tests/api/client.events.test.d.ts.map +1 -0
- package/dist/tests/api/client.events.test.js +85 -0
- package/dist/tests/api/client.events.test.js.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts +2 -2
- package/dist/tests/billing/GDPRCompliance.test.js +221 -36
- package/dist/tests/billing/GDPRCompliance.test.js.map +1 -1
- package/dist/tests/github-import/blocklist.test.d.ts +15 -0
- package/dist/tests/github-import/blocklist.test.d.ts.map +1 -0
- package/dist/tests/github-import/blocklist.test.js +182 -0
- package/dist/tests/github-import/blocklist.test.js.map +1 -0
- package/dist/tests/github-import/signal-of-intent.test.d.ts +15 -0
- package/dist/tests/github-import/signal-of-intent.test.d.ts.map +1 -0
- package/dist/tests/github-import/signal-of-intent.test.js +171 -0
- package/dist/tests/github-import/signal-of-intent.test.js.map +1 -0
- package/dist/tests/security/scanner-regression-guard.test.d.ts +12 -0
- package/dist/tests/security/scanner-regression-guard.test.d.ts.map +1 -1
- package/dist/tests/security/scanner-regression-guard.test.js +15 -3
- package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
- package/dist/tests/security/scanner-wave2-fixtures.test.d.ts +12 -0
- package/dist/tests/security/scanner-wave2-fixtures.test.d.ts.map +1 -0
- package/dist/tests/security/scanner-wave2-fixtures.test.js +173 -0
- package/dist/tests/security/scanner-wave2-fixtures.test.js.map +1 -0
- package/dist/tests/security.test.js +1 -0
- package/dist/tests/security.test.js.map +1 -1
- package/dist/tests/skill-scanner/allowlist.test.d.ts +16 -0
- package/dist/tests/skill-scanner/allowlist.test.d.ts.map +1 -0
- package/dist/tests/skill-scanner/allowlist.test.js +332 -0
- package/dist/tests/skill-scanner/allowlist.test.js.map +1 -0
- package/dist/tests/telemetry.test.js +126 -0
- package/dist/tests/telemetry.test.js.map +1 -1
- package/dist/tests/webhooks/WebhookDeadLetterRepository.test.d.ts +10 -0
- package/dist/tests/webhooks/WebhookDeadLetterRepository.test.d.ts.map +1 -0
- package/dist/tests/webhooks/WebhookDeadLetterRepository.test.js +109 -0
- package/dist/tests/webhooks/WebhookDeadLetterRepository.test.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-4408: Indexer blocklist for non-skill repos.
|
|
3
|
+
*
|
|
4
|
+
* Loads data/indexer-blocklist.json and produces a BlocklistMatcher consumed
|
|
5
|
+
* by the main() CLI in import-github-skills.ts. The filter runs between
|
|
6
|
+
* deduplicateSkills() and saveOutput() so blocked repos never reach
|
|
7
|
+
* data/imported-skills.json.
|
|
8
|
+
*
|
|
9
|
+
* Tactical fix for known-bad repos. The structural fix (require a
|
|
10
|
+
* signal-of-intent signal per ingested repo) is tracked as Tier 2
|
|
11
|
+
* follow-up under ADR-109 SPARC.
|
|
12
|
+
*
|
|
13
|
+
* Design invariants:
|
|
14
|
+
* - Exact-match only (`owner/name`, case-sensitive) — no wildcards. Keeps
|
|
15
|
+
* scope tight and auditable. If wildcards become necessary, file a
|
|
16
|
+
* follow-up issue rather than widening this module.
|
|
17
|
+
* - Malformed entries throw at load (fail-safe toward ingestion rejection
|
|
18
|
+
* would be wrong here — ingestion should NOT proceed with an unverified
|
|
19
|
+
* blocklist file).
|
|
20
|
+
* - version=1 contract: future schema changes must bump and handle migration.
|
|
21
|
+
*/
|
|
22
|
+
import * as fs from 'fs';
|
|
23
|
+
const REQUIRED_ENTRY_FIELDS = ['repo', 'reason', 'addedBy', 'addedAt'];
|
|
24
|
+
const DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
|
|
25
|
+
const REPO_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
26
|
+
function validateEntryShape(entry, entryIndex) {
|
|
27
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
28
|
+
throw new Error(`Blocklist entry #${entryIndex} is not an object`);
|
|
29
|
+
}
|
|
30
|
+
const e = entry;
|
|
31
|
+
for (const field of REQUIRED_ENTRY_FIELDS) {
|
|
32
|
+
if (typeof e[field] !== 'string' || e[field].length === 0) {
|
|
33
|
+
throw new Error(`Blocklist entry #${entryIndex} missing or empty required field: ${String(field)}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (!REPO_PATTERN.test(e.repo)) {
|
|
37
|
+
throw new Error(`Blocklist entry #${entryIndex} repo must be 'owner/name' (GitHub full_name), got: ${String(e.repo)}`);
|
|
38
|
+
}
|
|
39
|
+
if (!DATE_PATTERN.test(e.addedAt)) {
|
|
40
|
+
throw new Error(`Blocklist entry #${entryIndex} addedAt must be YYYY-MM-DD, got: ${String(e.addedAt)}`);
|
|
41
|
+
}
|
|
42
|
+
return e;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parse a raw blocklist file object. Throws on malformed shape or missing
|
|
46
|
+
* required fields. Callers must catch.
|
|
47
|
+
*/
|
|
48
|
+
export function parseBlocklistFile(raw) {
|
|
49
|
+
if (typeof raw !== 'object' || raw === null) {
|
|
50
|
+
throw new Error('Blocklist file root must be an object');
|
|
51
|
+
}
|
|
52
|
+
const r = raw;
|
|
53
|
+
if (r.version !== 1) {
|
|
54
|
+
throw new Error(`Unsupported blocklist file version: ${String(r.version)} (expected 1)`);
|
|
55
|
+
}
|
|
56
|
+
if (typeof r.updatedAt !== 'string' || !DATE_PATTERN.test(r.updatedAt)) {
|
|
57
|
+
throw new Error(`Blocklist file updatedAt must be YYYY-MM-DD, got: ${String(r.updatedAt)}`);
|
|
58
|
+
}
|
|
59
|
+
if (!Array.isArray(r.blocked)) {
|
|
60
|
+
throw new Error('Blocklist file .blocked must be an array');
|
|
61
|
+
}
|
|
62
|
+
const entries = r.blocked.map((entry, i) => validateEntryShape(entry, i));
|
|
63
|
+
const seen = new Set();
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
if (seen.has(entry.repo)) {
|
|
66
|
+
throw new Error(`Blocklist file contains duplicate entry: ${entry.repo}`);
|
|
67
|
+
}
|
|
68
|
+
seen.add(entry.repo);
|
|
69
|
+
}
|
|
70
|
+
return { version: 1, updatedAt: r.updatedAt, blocked: entries };
|
|
71
|
+
}
|
|
72
|
+
class SetBackedMatcher {
|
|
73
|
+
blocked;
|
|
74
|
+
entryList;
|
|
75
|
+
constructor(entries) {
|
|
76
|
+
this.blocked = new Set(entries.map((e) => e.repo));
|
|
77
|
+
this.entryList = entries;
|
|
78
|
+
}
|
|
79
|
+
isBlocked(repo) {
|
|
80
|
+
return this.blocked.has(repo);
|
|
81
|
+
}
|
|
82
|
+
entries() {
|
|
83
|
+
return this.entryList;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Empty matcher — blocks nothing. Used when the blocklist file is absent or
|
|
88
|
+
* callers want to opt out without conditional plumbing.
|
|
89
|
+
*/
|
|
90
|
+
export const EMPTY_BLOCKLIST = {
|
|
91
|
+
isBlocked() {
|
|
92
|
+
return false;
|
|
93
|
+
},
|
|
94
|
+
entries() {
|
|
95
|
+
return [];
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Load + validate a blocklist JSON file and return a matcher.
|
|
100
|
+
*
|
|
101
|
+
* If `path` does not exist, returns EMPTY_BLOCKLIST (no-op). A malformed
|
|
102
|
+
* file throws so the importer refuses to proceed with a corrupt blocklist.
|
|
103
|
+
*/
|
|
104
|
+
export function loadBlocklist(path) {
|
|
105
|
+
if (!fs.existsSync(path)) {
|
|
106
|
+
return EMPTY_BLOCKLIST;
|
|
107
|
+
}
|
|
108
|
+
const raw = fs.readFileSync(path, 'utf-8');
|
|
109
|
+
let parsed;
|
|
110
|
+
try {
|
|
111
|
+
parsed = JSON.parse(raw);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
throw new Error(`Blocklist file ${path} is not valid JSON: ${err.message}`);
|
|
115
|
+
}
|
|
116
|
+
const file = parseBlocklistFile(parsed);
|
|
117
|
+
return new SetBackedMatcher(file.blocked);
|
|
118
|
+
}
|
|
119
|
+
/** Build a matcher from an in-memory entry list (test + inline use). */
|
|
120
|
+
export function buildBlocklist(entries) {
|
|
121
|
+
entries.forEach((entry, i) => validateEntryShape(entry, i));
|
|
122
|
+
return new SetBackedMatcher(entries);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=blocklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/blocklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/scripts/github-import/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/scripts/github-import/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA"}
|
|
@@ -33,6 +33,7 @@ export * from './github-client.js';
|
|
|
33
33
|
export * from './checkpoint.js';
|
|
34
34
|
export * from './deduplication.js';
|
|
35
35
|
export * from './output.js';
|
|
36
|
+
export * from './signal-of-intent.js';
|
|
36
37
|
/**
|
|
37
38
|
* Main import function.
|
|
38
39
|
* Orchestrates the import process with support for resume.
|
|
@@ -60,6 +61,8 @@ async function _main() {
|
|
|
60
61
|
total_found: 0,
|
|
61
62
|
total_imported: 0,
|
|
62
63
|
duplicates_removed: 0,
|
|
64
|
+
blocked_count: 0,
|
|
65
|
+
blocked_repos: [],
|
|
63
66
|
queries_completed: [],
|
|
64
67
|
errors: [],
|
|
65
68
|
started_at: new Date().toISOString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAA0C,MAAM,YAAY,CAAA;AAC3F,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qDAAqD;AACrD,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-4415: Signal-of-intent gate for the GitHub importer.
|
|
3
|
+
*
|
|
4
|
+
* Purpose: between the de-duplication step and the blocklist / saveOutput
|
|
5
|
+
* step in `import-github-skills.ts`, drop repositories that do not exhibit
|
|
6
|
+
* a *structural* signal of being a Claude Code skill. This is the Tier 2
|
|
7
|
+
* companion to SMI-4408's tactical blocklist — the blocklist catches known
|
|
8
|
+
* bad repos by exact match, this gate catches the long tail by shape.
|
|
9
|
+
*
|
|
10
|
+
* Design:
|
|
11
|
+
* - Multi-signal composite score (Option D in the SMI-4415 plan).
|
|
12
|
+
* - **Structural-signal floor** (plan-review H4): `shouldIngest` requires
|
|
13
|
+
* BOTH `hasStructuralSignal === true` AND `score >= threshold`. This
|
|
14
|
+
* closes the pure-metadata gaming hole where description (+2) + name
|
|
15
|
+
* regex (+2) alone could clear the threshold with zero structural proof.
|
|
16
|
+
* - Zero extra GitHub API calls — only reads fields already present on
|
|
17
|
+
* `ImportedSkill` (populated from the GitHub search response).
|
|
18
|
+
*
|
|
19
|
+
* Plan: docs/internal/implementation/smi-4415-indexer-signal-of-intent.md
|
|
20
|
+
*/
|
|
21
|
+
import type { ImportedSkill } from './types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Default signal-score threshold. Revisit against the Wave 0 evidence
|
|
24
|
+
* before tuning; changes with a ≥20% `intent_admit_rate` delta against
|
|
25
|
+
* the rolling baseline require plan-review.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SIGNAL_THRESHOLD = 4;
|
|
28
|
+
/**
|
|
29
|
+
* Owner-level trust list. Any repository whose `author` matches an entry
|
|
30
|
+
* here is deemed to carry author-vouched intent, worth +5 (enough to clear
|
|
31
|
+
* the default threshold on its own).
|
|
32
|
+
*
|
|
33
|
+
* TRUTH SOURCE: `supabase/functions/indexer/high-trust-authors.ts`
|
|
34
|
+
* (distinct `.owner` values from the `HIGH_TRUST_AUTHORS` array).
|
|
35
|
+
* Cross-boundary imports from `supabase/functions/` into `packages/core/`
|
|
36
|
+
* are unsupported (the Edge Function pipeline compiles under Deno, not
|
|
37
|
+
* Node), so the values are duplicated here and must be **manually synced**
|
|
38
|
+
* when that file changes. The two files are the authoritative pair for
|
|
39
|
+
* "trusted owner."
|
|
40
|
+
*
|
|
41
|
+
* Wave 0 R2 added `daymade` — `daymade/claude-code-skills` (901⭐ community
|
|
42
|
+
* marketplace) has no topics and would otherwise fail the structural floor
|
|
43
|
+
* despite legitimate intent. Author manually verified 2026-04-21.
|
|
44
|
+
*
|
|
45
|
+
* Matching: case-insensitive (done in `isHighTrustOwner`).
|
|
46
|
+
*/
|
|
47
|
+
export declare const HIGH_TRUST_OWNERS: ReadonlySet<string>;
|
|
48
|
+
export interface SignalScore {
|
|
49
|
+
/** Sum of weights for every signal that fired. */
|
|
50
|
+
score: number;
|
|
51
|
+
/**
|
|
52
|
+
* Human-readable labels for each fired signal — surfaced in import
|
|
53
|
+
* stats (`rejected_for_intent_reasons`) for audit and debugging.
|
|
54
|
+
*/
|
|
55
|
+
signals: string[];
|
|
56
|
+
/**
|
|
57
|
+
* True iff at least one structural signal fired. Required (in addition
|
|
58
|
+
* to score >= threshold) by `shouldIngest` per plan-review H4.
|
|
59
|
+
*/
|
|
60
|
+
hasStructuralSignal: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Compute the signal-of-intent score for a single imported skill candidate.
|
|
64
|
+
*
|
|
65
|
+
* Reads only fields already present on `ImportedSkill` — zero additional
|
|
66
|
+
* GitHub API calls. Designed to be cheap enough to run on every deduped
|
|
67
|
+
* repo per import run.
|
|
68
|
+
*/
|
|
69
|
+
export declare function computeSignalScore(skill: ImportedSkill): SignalScore;
|
|
70
|
+
/**
|
|
71
|
+
* Intent-gate decision for a single imported skill candidate.
|
|
72
|
+
*
|
|
73
|
+
* Requires BOTH:
|
|
74
|
+
* 1. `hasStructuralSignal === true` — at least one structural signal
|
|
75
|
+
* (topic tag OR HIGH_TRUST_OWNERS membership) fired. This is the
|
|
76
|
+
* plan-review H4 floor.
|
|
77
|
+
* 2. `score >= threshold` — the composite score clears the cutoff.
|
|
78
|
+
*
|
|
79
|
+
* Metadata-only matches (description + name + language + license + stars)
|
|
80
|
+
* can contribute to the score but will fail on the floor regardless of
|
|
81
|
+
* how high the sum reaches.
|
|
82
|
+
*
|
|
83
|
+
* @param skill - Deduped importer candidate.
|
|
84
|
+
* @param threshold - Defaults to `SIGNAL_THRESHOLD` (4).
|
|
85
|
+
*/
|
|
86
|
+
export declare function shouldIngest(skill: ImportedSkill, threshold?: number): boolean;
|
|
87
|
+
//# sourceMappingURL=signal-of-intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-of-intent.d.ts","sourceRoot":"","sources":["../../../../src/scripts/github-import/signal-of-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAuBjC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAahD,CAAA;AAsEF,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAmDpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,GAAE,MAAyB,GAAG,OAAO,CAGhG"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-4415: Signal-of-intent gate for the GitHub importer.
|
|
3
|
+
*
|
|
4
|
+
* Purpose: between the de-duplication step and the blocklist / saveOutput
|
|
5
|
+
* step in `import-github-skills.ts`, drop repositories that do not exhibit
|
|
6
|
+
* a *structural* signal of being a Claude Code skill. This is the Tier 2
|
|
7
|
+
* companion to SMI-4408's tactical blocklist — the blocklist catches known
|
|
8
|
+
* bad repos by exact match, this gate catches the long tail by shape.
|
|
9
|
+
*
|
|
10
|
+
* Design:
|
|
11
|
+
* - Multi-signal composite score (Option D in the SMI-4415 plan).
|
|
12
|
+
* - **Structural-signal floor** (plan-review H4): `shouldIngest` requires
|
|
13
|
+
* BOTH `hasStructuralSignal === true` AND `score >= threshold`. This
|
|
14
|
+
* closes the pure-metadata gaming hole where description (+2) + name
|
|
15
|
+
* regex (+2) alone could clear the threshold with zero structural proof.
|
|
16
|
+
* - Zero extra GitHub API calls — only reads fields already present on
|
|
17
|
+
* `ImportedSkill` (populated from the GitHub search response).
|
|
18
|
+
*
|
|
19
|
+
* Plan: docs/internal/implementation/smi-4415-indexer-signal-of-intent.md
|
|
20
|
+
*/
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Constants
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/**
|
|
25
|
+
* Default signal-score threshold. Revisit against the Wave 0 evidence
|
|
26
|
+
* before tuning; changes with a ≥20% `intent_admit_rate` delta against
|
|
27
|
+
* the rolling baseline require plan-review.
|
|
28
|
+
*/
|
|
29
|
+
export const SIGNAL_THRESHOLD = 4;
|
|
30
|
+
/**
|
|
31
|
+
* Structural topic tags that constitute a "this is a Claude skill" signal
|
|
32
|
+
* at the highest weight (+4). Matching is case-insensitive against
|
|
33
|
+
* `ImportedSkill.topics`.
|
|
34
|
+
*
|
|
35
|
+
* Wave 0 R1 expanded this set to include `agent-skills` and `agent-skill`
|
|
36
|
+
* after fixture verification showed `anthropics/skills` (121k stars) and
|
|
37
|
+
* `prismatic-io/prismatic-skills` (26 stars) rely on those conventions
|
|
38
|
+
* rather than the older `claude-skill` / `claude-code-skill` tags.
|
|
39
|
+
*/
|
|
40
|
+
const STRUCTURAL_TOPIC_SET = new Set([
|
|
41
|
+
'claude-skill',
|
|
42
|
+
'claude-code-skill',
|
|
43
|
+
'anthropic-skill',
|
|
44
|
+
'agent-skills',
|
|
45
|
+
'agent-skill',
|
|
46
|
+
]);
|
|
47
|
+
/** Secondary structural topic — contributes +1 (not enough to clear threshold alone). */
|
|
48
|
+
const MCP_SERVER_TOPIC = 'mcp-server';
|
|
49
|
+
/**
|
|
50
|
+
* Owner-level trust list. Any repository whose `author` matches an entry
|
|
51
|
+
* here is deemed to carry author-vouched intent, worth +5 (enough to clear
|
|
52
|
+
* the default threshold on its own).
|
|
53
|
+
*
|
|
54
|
+
* TRUTH SOURCE: `supabase/functions/indexer/high-trust-authors.ts`
|
|
55
|
+
* (distinct `.owner` values from the `HIGH_TRUST_AUTHORS` array).
|
|
56
|
+
* Cross-boundary imports from `supabase/functions/` into `packages/core/`
|
|
57
|
+
* are unsupported (the Edge Function pipeline compiles under Deno, not
|
|
58
|
+
* Node), so the values are duplicated here and must be **manually synced**
|
|
59
|
+
* when that file changes. The two files are the authoritative pair for
|
|
60
|
+
* "trusted owner."
|
|
61
|
+
*
|
|
62
|
+
* Wave 0 R2 added `daymade` — `daymade/claude-code-skills` (901⭐ community
|
|
63
|
+
* marketplace) has no topics and would otherwise fail the structural floor
|
|
64
|
+
* despite legitimate intent. Author manually verified 2026-04-21.
|
|
65
|
+
*
|
|
66
|
+
* Matching: case-insensitive (done in `isHighTrustOwner`).
|
|
67
|
+
*/
|
|
68
|
+
export const HIGH_TRUST_OWNERS = new Set([
|
|
69
|
+
'anthropics',
|
|
70
|
+
'huggingface',
|
|
71
|
+
'vercel-labs',
|
|
72
|
+
'resend',
|
|
73
|
+
'addyosmani',
|
|
74
|
+
'amplitude',
|
|
75
|
+
'microsoft',
|
|
76
|
+
'google-gemini',
|
|
77
|
+
'awslabs',
|
|
78
|
+
'SalesforceCommerceCloud',
|
|
79
|
+
// Wave 0 R2: manually verified community author.
|
|
80
|
+
'daymade',
|
|
81
|
+
]);
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
// Weight configuration
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
/**
|
|
86
|
+
* Scoring weights. Mirrors the table in the plan (Wave 1 Step 1).
|
|
87
|
+
*
|
|
88
|
+
* Structural signals (`*_STRUCTURAL`) are the only ones that can satisfy
|
|
89
|
+
* the `hasStructuralSignal` floor required by `shouldIngest`. Metadata
|
|
90
|
+
* signals (description, name, language, license, stars) contribute to
|
|
91
|
+
* the score but cannot cross the floor by themselves.
|
|
92
|
+
*/
|
|
93
|
+
const WEIGHTS = {
|
|
94
|
+
STRUCTURAL_TOPIC: 4, // structural
|
|
95
|
+
MCP_SERVER_TOPIC: 1, // structural
|
|
96
|
+
HIGH_TRUST_OWNER: 5, // structural
|
|
97
|
+
DESCRIPTION_MATCH: 2, // metadata
|
|
98
|
+
NAME_MATCH: 2, // metadata
|
|
99
|
+
LANGUAGE_MATCH: 1, // metadata
|
|
100
|
+
LICENSE_PRESENT: 1, // metadata
|
|
101
|
+
STARS_THRESHOLD: 1, // metadata
|
|
102
|
+
};
|
|
103
|
+
const METADATA_LANGUAGES = new Set(['Markdown', 'TypeScript', 'JavaScript']);
|
|
104
|
+
const STARS_THRESHOLD = 10;
|
|
105
|
+
// The regex set — module-level so we don't reallocate them per-repo.
|
|
106
|
+
const DESCRIPTION_REGEX = /skill|claude-code|claude code|anthropic/i;
|
|
107
|
+
const NAME_REGEX = /^claude-(code-)?skills?|-skill$/i;
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// Helpers
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
/**
|
|
112
|
+
* Case-insensitive owner lookup. Kept separate so the HIGH_TRUST_OWNERS
|
|
113
|
+
* set can be iterated at load time without normalizing all entries.
|
|
114
|
+
*/
|
|
115
|
+
function isHighTrustOwner(author) {
|
|
116
|
+
if (!author)
|
|
117
|
+
return false;
|
|
118
|
+
const normalized = author.toLowerCase();
|
|
119
|
+
for (const owner of HIGH_TRUST_OWNERS) {
|
|
120
|
+
if (owner.toLowerCase() === normalized)
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
function hasStructuralTopic(topics) {
|
|
126
|
+
if (!topics || topics.length === 0)
|
|
127
|
+
return false;
|
|
128
|
+
for (const topic of topics) {
|
|
129
|
+
if (STRUCTURAL_TOPIC_SET.has(topic.toLowerCase()))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
function hasMcpServerTopic(topics) {
|
|
135
|
+
if (!topics || topics.length === 0)
|
|
136
|
+
return false;
|
|
137
|
+
for (const topic of topics) {
|
|
138
|
+
if (topic.toLowerCase() === MCP_SERVER_TOPIC)
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Compute the signal-of-intent score for a single imported skill candidate.
|
|
145
|
+
*
|
|
146
|
+
* Reads only fields already present on `ImportedSkill` — zero additional
|
|
147
|
+
* GitHub API calls. Designed to be cheap enough to run on every deduped
|
|
148
|
+
* repo per import run.
|
|
149
|
+
*/
|
|
150
|
+
export function computeSignalScore(skill) {
|
|
151
|
+
const signals = [];
|
|
152
|
+
let score = 0;
|
|
153
|
+
let hasStructuralSignal = false;
|
|
154
|
+
// ---- Structural signals --------------------------------------------------
|
|
155
|
+
if (hasStructuralTopic(skill.topics)) {
|
|
156
|
+
score += WEIGHTS.STRUCTURAL_TOPIC;
|
|
157
|
+
signals.push('structural-topic');
|
|
158
|
+
hasStructuralSignal = true;
|
|
159
|
+
}
|
|
160
|
+
if (hasMcpServerTopic(skill.topics)) {
|
|
161
|
+
score += WEIGHTS.MCP_SERVER_TOPIC;
|
|
162
|
+
signals.push('mcp-server-topic');
|
|
163
|
+
hasStructuralSignal = true;
|
|
164
|
+
}
|
|
165
|
+
if (isHighTrustOwner(skill.author)) {
|
|
166
|
+
score += WEIGHTS.HIGH_TRUST_OWNER;
|
|
167
|
+
signals.push('high-trust-owner');
|
|
168
|
+
hasStructuralSignal = true;
|
|
169
|
+
}
|
|
170
|
+
// ---- Metadata signals ----------------------------------------------------
|
|
171
|
+
if (skill.description && DESCRIPTION_REGEX.test(skill.description)) {
|
|
172
|
+
score += WEIGHTS.DESCRIPTION_MATCH;
|
|
173
|
+
signals.push('description-match');
|
|
174
|
+
}
|
|
175
|
+
if (skill.name && NAME_REGEX.test(skill.name)) {
|
|
176
|
+
score += WEIGHTS.NAME_MATCH;
|
|
177
|
+
signals.push('name-match');
|
|
178
|
+
}
|
|
179
|
+
if (skill.language && METADATA_LANGUAGES.has(skill.language)) {
|
|
180
|
+
score += WEIGHTS.LANGUAGE_MATCH;
|
|
181
|
+
signals.push('language-match');
|
|
182
|
+
}
|
|
183
|
+
if (skill.license !== null && skill.license !== undefined) {
|
|
184
|
+
score += WEIGHTS.LICENSE_PRESENT;
|
|
185
|
+
signals.push('license-present');
|
|
186
|
+
}
|
|
187
|
+
if (typeof skill.stars === 'number' && skill.stars >= STARS_THRESHOLD) {
|
|
188
|
+
score += WEIGHTS.STARS_THRESHOLD;
|
|
189
|
+
signals.push('stars-threshold');
|
|
190
|
+
}
|
|
191
|
+
return { score, signals, hasStructuralSignal };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Intent-gate decision for a single imported skill candidate.
|
|
195
|
+
*
|
|
196
|
+
* Requires BOTH:
|
|
197
|
+
* 1. `hasStructuralSignal === true` — at least one structural signal
|
|
198
|
+
* (topic tag OR HIGH_TRUST_OWNERS membership) fired. This is the
|
|
199
|
+
* plan-review H4 floor.
|
|
200
|
+
* 2. `score >= threshold` — the composite score clears the cutoff.
|
|
201
|
+
*
|
|
202
|
+
* Metadata-only matches (description + name + language + license + stars)
|
|
203
|
+
* can contribute to the score but will fail on the floor regardless of
|
|
204
|
+
* how high the sum reaches.
|
|
205
|
+
*
|
|
206
|
+
* @param skill - Deduped importer candidate.
|
|
207
|
+
* @param threshold - Defaults to `SIGNAL_THRESHOLD` (4).
|
|
208
|
+
*/
|
|
209
|
+
export function shouldIngest(skill, threshold = SIGNAL_THRESHOLD) {
|
|
210
|
+
const { score, hasStructuralSignal } = computeSignalScore(skill);
|
|
211
|
+
return hasStructuralSignal && score >= threshold;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=signal-of-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-of-intent.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/signal-of-intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,28 @@ export interface ImportStats {
|
|
|
90
90
|
total_found: number;
|
|
91
91
|
total_imported: number;
|
|
92
92
|
duplicates_removed: number;
|
|
93
|
+
/** SMI-4408: count of post-dedup skills dropped by the indexer blocklist. */
|
|
94
|
+
blocked_count: number;
|
|
95
|
+
/** SMI-4408: the repos (owner/name) that were blocked this run, for audit. */
|
|
96
|
+
blocked_repos: string[];
|
|
97
|
+
/**
|
|
98
|
+
* SMI-4415: count of post-dedup skills rejected by the signal-of-intent gate
|
|
99
|
+
* before reaching the blocklist stage. Optional for checkpoint-resume compat
|
|
100
|
+
* with pre-SMI-4415 files (backfilled to 0 at load time).
|
|
101
|
+
*/
|
|
102
|
+
rejected_for_intent_count?: number;
|
|
103
|
+
/**
|
|
104
|
+
* SMI-4415: aggregated reason strings for intent-gate rejections this run
|
|
105
|
+
* (e.g. `"metadata-only"`, `"mcp-server-topic"`). One entry per rejected
|
|
106
|
+
* repo, appropriate for grouping/reporting downstream.
|
|
107
|
+
*/
|
|
108
|
+
rejected_for_intent_reasons?: string[];
|
|
109
|
+
/**
|
|
110
|
+
* SMI-4415: `admitted / (admitted + rejected_for_intent)` ratio. Operator
|
|
111
|
+
* gauge — a ≥20% delta from the rolling baseline requires plan-review
|
|
112
|
+
* per the SMI-4415 plan.
|
|
113
|
+
*/
|
|
114
|
+
intent_admit_rate?: number;
|
|
93
115
|
queries_completed: string[];
|
|
94
116
|
errors: string[];
|
|
95
117
|
started_at: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scripts/github-import/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scripts/github-import/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;IACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;IACxC,0BAA0B,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;IAClE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;IAC1D,cAAc,EAAE,wBAAwB;IACxC,QAAQ,EAAE,GAAG;IACb,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,GAAG;IACrB,WAAW,EAAE,GAAG;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,CAAC;KACtB;IACD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,6BAA6B;IACrE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,+BAA+B;CAChF,CAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/scripts/github-import/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;IACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;IACxC,0BAA0B,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;IAClE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;IAC1D,cAAc,EAAE,wBAAwB;IACxC,QAAQ,EAAE,GAAG;IACb,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,GAAG;IACrB,WAAW,EAAE,GAAG;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,CAAC;KACtB;IACD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,6BAA6B;IACrE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,+BAA+B;CAChF,CAAA;AAiHD,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,wCAAwC;KACtD;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,iDAAiD;KAC/D;CACF,CAAA"}
|