@skillsmith/core 0.5.8 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/audit/exclusions.d.ts +67 -0
  4. package/dist/src/audit/exclusions.d.ts.map +1 -0
  5. package/dist/src/audit/exclusions.js +133 -0
  6. package/dist/src/audit/exclusions.js.map +1 -0
  7. package/dist/src/audit/exclusions.types.d.ts +45 -0
  8. package/dist/src/audit/exclusions.types.d.ts.map +1 -0
  9. package/dist/src/audit/exclusions.types.js +11 -0
  10. package/dist/src/audit/exclusions.types.js.map +1 -0
  11. package/dist/src/audit/index.d.ts +15 -0
  12. package/dist/src/audit/index.d.ts.map +1 -0
  13. package/dist/src/audit/index.js +14 -0
  14. package/dist/src/audit/index.js.map +1 -0
  15. package/dist/src/benchmarks/embeddingBenchmark.d.ts.map +1 -1
  16. package/dist/src/benchmarks/embeddingBenchmark.js +5 -2
  17. package/dist/src/benchmarks/embeddingBenchmark.js.map +1 -1
  18. package/dist/src/config/audit-mode.d.ts +71 -0
  19. package/dist/src/config/audit-mode.d.ts.map +1 -0
  20. package/dist/src/config/audit-mode.js +69 -0
  21. package/dist/src/config/audit-mode.js.map +1 -0
  22. package/dist/src/config/index.d.ts +13 -0
  23. package/dist/src/config/index.d.ts.map +1 -1
  24. package/dist/src/config/index.js +24 -0
  25. package/dist/src/config/index.js.map +1 -1
  26. package/dist/src/db/migration-runner.d.ts +9 -2
  27. package/dist/src/db/migration-runner.d.ts.map +1 -1
  28. package/dist/src/db/migration-runner.js +36 -3
  29. package/dist/src/db/migration-runner.js.map +1 -1
  30. package/dist/src/db/migration.d.ts.map +1 -1
  31. package/dist/src/db/migration.js +9 -1
  32. package/dist/src/db/migration.js.map +1 -1
  33. package/dist/src/db/migrations/v16-skill-source.d.ts +41 -0
  34. package/dist/src/db/migrations/v16-skill-source.d.ts.map +1 -0
  35. package/dist/src/db/migrations/v16-skill-source.js +87 -0
  36. package/dist/src/db/migrations/v16-skill-source.js.map +1 -0
  37. package/dist/src/db/migrations/v17-curated-trust-tier.d.ts +44 -0
  38. package/dist/src/db/migrations/v17-curated-trust-tier.d.ts.map +1 -0
  39. package/dist/src/db/migrations/v17-curated-trust-tier.js +89 -0
  40. package/dist/src/db/migrations/v17-curated-trust-tier.js.map +1 -0
  41. package/dist/src/db/schema-sql.d.ts +1 -1
  42. package/dist/src/db/schema-sql.d.ts.map +1 -1
  43. package/dist/src/db/schema-sql.js +2 -1
  44. package/dist/src/db/schema-sql.js.map +1 -1
  45. package/dist/src/db/schema.d.ts +9 -3
  46. package/dist/src/db/schema.d.ts.map +1 -1
  47. package/dist/src/db/schema.js +13 -2
  48. package/dist/src/db/schema.js.map +1 -1
  49. package/dist/src/embeddings/embedding-utils.d.ts +23 -0
  50. package/dist/src/embeddings/embedding-utils.d.ts.map +1 -1
  51. package/dist/src/embeddings/embedding-utils.js +39 -0
  52. package/dist/src/embeddings/embedding-utils.js.map +1 -1
  53. package/dist/src/embeddings/hnsw-search.d.ts +133 -0
  54. package/dist/src/embeddings/hnsw-search.d.ts.map +1 -0
  55. package/dist/src/embeddings/hnsw-search.js +387 -0
  56. package/dist/src/embeddings/hnsw-search.js.map +1 -0
  57. package/dist/src/embeddings/hnsw-store.d.ts +9 -3
  58. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
  59. package/dist/src/embeddings/hnsw-store.js +17 -7
  60. package/dist/src/embeddings/hnsw-store.js.map +1 -1
  61. package/dist/src/embeddings/hnsw-store.types.d.ts +17 -4
  62. package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -1
  63. package/dist/src/embeddings/hnsw-store.types.js.map +1 -1
  64. package/dist/src/embeddings/index.d.ts +50 -4
  65. package/dist/src/embeddings/index.d.ts.map +1 -1
  66. package/dist/src/embeddings/index.js +166 -24
  67. package/dist/src/embeddings/index.js.map +1 -1
  68. package/dist/src/exports/services.d.ts +1 -1
  69. package/dist/src/exports/services.d.ts.map +1 -1
  70. package/dist/src/exports/services.js.map +1 -1
  71. package/dist/src/index.d.ts +4 -1
  72. package/dist/src/index.d.ts.map +1 -1
  73. package/dist/src/index.js +5 -1
  74. package/dist/src/index.js.map +1 -1
  75. package/dist/src/indexer/SkillParser.d.ts +7 -70
  76. package/dist/src/indexer/SkillParser.d.ts.map +1 -1
  77. package/dist/src/indexer/SkillParser.helpers.d.ts +13 -0
  78. package/dist/src/indexer/SkillParser.helpers.d.ts.map +1 -0
  79. package/dist/src/indexer/SkillParser.helpers.js +90 -0
  80. package/dist/src/indexer/SkillParser.helpers.js.map +1 -0
  81. package/dist/src/indexer/SkillParser.js +5 -82
  82. package/dist/src/indexer/SkillParser.js.map +1 -1
  83. package/dist/src/indexer/SkillParser.types.d.ts +78 -0
  84. package/dist/src/indexer/SkillParser.types.d.ts.map +1 -0
  85. package/dist/src/indexer/SkillParser.types.js +9 -0
  86. package/dist/src/indexer/SkillParser.types.js.map +1 -0
  87. package/dist/src/install/fan-out.d.ts +81 -0
  88. package/dist/src/install/fan-out.d.ts.map +1 -0
  89. package/dist/src/install/fan-out.js +236 -0
  90. package/dist/src/install/fan-out.js.map +1 -0
  91. package/dist/src/install/index.d.ts +16 -0
  92. package/dist/src/install/index.d.ts.map +1 -0
  93. package/dist/src/install/index.js +14 -0
  94. package/dist/src/install/index.js.map +1 -0
  95. package/dist/src/install/paths.d.ts +16 -0
  96. package/dist/src/install/paths.d.ts.map +1 -0
  97. package/dist/src/install/paths.js +56 -0
  98. package/dist/src/install/paths.js.map +1 -0
  99. package/dist/src/repositories/AdvisoryRepository.test.js +2 -2
  100. package/dist/src/repositories/AdvisoryRepository.test.js.map +1 -1
  101. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  102. package/dist/src/repositories/SkillRepository.js +12 -4
  103. package/dist/src/repositories/SkillRepository.js.map +1 -1
  104. package/dist/src/search/hybrid.js +2 -2
  105. package/dist/src/search/hybrid.js.map +1 -1
  106. package/dist/src/security/pathValidation.d.ts +6 -1
  107. package/dist/src/security/pathValidation.d.ts.map +1 -1
  108. package/dist/src/security/pathValidation.js +6 -1
  109. package/dist/src/security/pathValidation.js.map +1 -1
  110. package/dist/src/services/skill-installation.errors.d.ts +53 -0
  111. package/dist/src/services/skill-installation.errors.d.ts.map +1 -0
  112. package/dist/src/services/skill-installation.errors.js +63 -0
  113. package/dist/src/services/skill-installation.errors.js.map +1 -0
  114. package/dist/src/services/skill-installation.service.d.ts.map +1 -1
  115. package/dist/src/services/skill-installation.service.js +33 -35
  116. package/dist/src/services/skill-installation.service.js.map +1 -1
  117. package/dist/src/services/skill-installation.types.d.ts +16 -0
  118. package/dist/src/services/skill-installation.types.d.ts.map +1 -1
  119. package/dist/src/services/skill-installation.types.js.map +1 -1
  120. package/dist/src/skills/index-local.d.ts +107 -0
  121. package/dist/src/skills/index-local.d.ts.map +1 -0
  122. package/dist/src/skills/index-local.js +208 -0
  123. package/dist/src/skills/index-local.js.map +1 -0
  124. package/dist/src/sync/SyncEngine.d.ts.map +1 -1
  125. package/dist/src/sync/SyncEngine.js +20 -3
  126. package/dist/src/sync/SyncEngine.js.map +1 -1
  127. package/dist/src/types/skill.d.ts +20 -5
  128. package/dist/src/types/skill.d.ts.map +1 -1
  129. package/dist/src/types/skill.js.map +1 -1
  130. package/dist/tests/EmbeddingService.test.js +1 -1
  131. package/dist/tests/EmbeddingService.test.js.map +1 -1
  132. package/dist/tests/SkillVersionRepository.test.js +2 -2
  133. package/dist/tests/SkillVersionRepository.test.js.map +1 -1
  134. package/dist/tests/db/migration.test.js +13 -5
  135. package/dist/tests/db/migration.test.js.map +1 -1
  136. package/dist/tests/embeddings/hnsw-bench-gate.test.d.ts +15 -0
  137. package/dist/tests/embeddings/hnsw-bench-gate.test.d.ts.map +1 -0
  138. package/dist/tests/embeddings/hnsw-bench-gate.test.js +117 -0
  139. package/dist/tests/embeddings/hnsw-bench-gate.test.js.map +1 -0
  140. package/dist/tests/embeddings/hnsw-integration.test.d.ts +14 -0
  141. package/dist/tests/embeddings/hnsw-integration.test.d.ts.map +1 -0
  142. package/dist/tests/embeddings/hnsw-integration.test.js +160 -0
  143. package/dist/tests/embeddings/hnsw-integration.test.js.map +1 -0
  144. package/dist/tests/embeddings/hnsw-vs-brute-force.bench.d.ts +15 -0
  145. package/dist/tests/embeddings/hnsw-vs-brute-force.bench.d.ts.map +1 -0
  146. package/dist/tests/embeddings/hnsw-vs-brute-force.bench.js +64 -0
  147. package/dist/tests/embeddings/hnsw-vs-brute-force.bench.js.map +1 -0
  148. package/dist/tests/embeddings/seed-bench.d.ts +15 -0
  149. package/dist/tests/embeddings/seed-bench.d.ts.map +1 -0
  150. package/dist/tests/embeddings/seed-bench.js +61 -0
  151. package/dist/tests/embeddings/seed-bench.js.map +1 -0
  152. package/dist/tests/helpers/database.d.ts +11 -2
  153. package/dist/tests/helpers/database.d.ts.map +1 -1
  154. package/dist/tests/helpers/database.js +23 -7
  155. package/dist/tests/helpers/database.js.map +1 -1
  156. package/dist/tests/install/fan-out.test.d.ts +2 -0
  157. package/dist/tests/install/fan-out.test.d.ts.map +1 -0
  158. package/dist/tests/install/fan-out.test.js +238 -0
  159. package/dist/tests/install/fan-out.test.js.map +1 -0
  160. package/dist/tests/install/paths.test.d.ts +2 -0
  161. package/dist/tests/install/paths.test.d.ts.map +1 -0
  162. package/dist/tests/install/paths.test.js +79 -0
  163. package/dist/tests/install/paths.test.js.map +1 -0
  164. package/dist/tests/repositories/CoInstallRepository.test.js +2 -2
  165. package/dist/tests/repositories/CoInstallRepository.test.js.map +1 -1
  166. package/dist/tests/repositories/SkillDependencyRepository.test.js +2 -2
  167. package/dist/tests/repositories/SkillDependencyRepository.test.js.map +1 -1
  168. package/dist/tests/schema.test.js +12 -0
  169. package/dist/tests/schema.test.js.map +1 -1
  170. package/dist/tests/skill-scanner/allowlist.test.js +27 -4
  171. package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
  172. package/dist/tests/unit/audit/exclusions.test.d.ts +7 -0
  173. package/dist/tests/unit/audit/exclusions.test.d.ts.map +1 -0
  174. package/dist/tests/unit/audit/exclusions.test.js +157 -0
  175. package/dist/tests/unit/audit/exclusions.test.js.map +1 -0
  176. package/dist/tests/unit/config/audit-mode.test.d.ts +11 -0
  177. package/dist/tests/unit/config/audit-mode.test.d.ts.map +1 -0
  178. package/dist/tests/unit/config/audit-mode.test.js +86 -0
  179. package/dist/tests/unit/config/audit-mode.test.js.map +1 -0
  180. package/dist/tests/unit/migrations/migration-v16.test.d.ts +11 -0
  181. package/dist/tests/unit/migrations/migration-v16.test.d.ts.map +1 -0
  182. package/dist/tests/unit/migrations/migration-v16.test.js +139 -0
  183. package/dist/tests/unit/migrations/migration-v16.test.js.map +1 -0
  184. package/dist/tests/unit/migrations/migration-v17.test.d.ts +16 -0
  185. package/dist/tests/unit/migrations/migration-v17.test.d.ts.map +1 -0
  186. package/dist/tests/unit/migrations/migration-v17.test.js +256 -0
  187. package/dist/tests/unit/migrations/migration-v17.test.js.map +1 -0
  188. package/dist/tests/unit/migrations/v10-dependencies.test.js +2 -2
  189. package/dist/tests/unit/migrations/v10-dependencies.test.js.map +1 -1
  190. package/dist/tests/unit/services/skill-installation-extended.test.js +1 -1
  191. package/dist/tests/unit/services/skill-installation-extended.test.js.map +1 -1
  192. package/dist/tests/unit/services/skill-installation.service.test.js +113 -1
  193. package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
  194. package/dist/tests/unit/skills/index-local.test.d.ts +11 -0
  195. package/dist/tests/unit/skills/index-local.test.d.ts.map +1 -0
  196. package/dist/tests/unit/skills/index-local.test.js +88 -0
  197. package/dist/tests/unit/skills/index-local.test.js.map +1 -0
  198. package/dist/tests/unit/sync-engine.source-aware.test.d.ts +11 -0
  199. package/dist/tests/unit/sync-engine.source-aware.test.d.ts.map +1 -0
  200. package/dist/tests/unit/sync-engine.source-aware.test.js +147 -0
  201. package/dist/tests/unit/sync-engine.source-aware.test.js.map +1 -0
  202. package/package.json +35 -12
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @fileoverview Audit exclusions loader + matcher + tier-revalidation gate
3
+ * (SMI-4590 Wave 4 PR 3).
4
+ * @module @skillsmith/core/audit/exclusions
5
+ *
6
+ * Reads `~/.skillsmith/audit-exclusions.json` and provides {@link isExcluded}
7
+ * for the inventory collision detector to filter known-acceptable findings,
8
+ * plus {@link tierAllowsAuditMode} — the write-time / re-resolution gate the
9
+ * CLI (PR 5) and session-start hook (PR 6) call before persisting or
10
+ * applying a user-selected `audit_mode`.
11
+ *
12
+ * Failure modes (decision #13 verbatim):
13
+ * - Missing file → empty config; nothing filtered.
14
+ * - Unreadable / malformed JSON → warn-and-empty; no exception.
15
+ * - Unknown `version` → warn-and-empty (forward-compat).
16
+ *
17
+ * Exclusion match is exact-string per `kind`. No glob / prefix support in
18
+ * v1 — keep the surface small until users ask.
19
+ */
20
+ import type { AuditMode, Tier } from '../config/audit-mode.js';
21
+ import type { ExcludableEntry, ExclusionsConfig } from './exclusions.types.js';
22
+ /**
23
+ * Resolve the absolute path to the exclusions file. Defaults to
24
+ * `~/.skillsmith/audit-exclusions.json`. Tests pass `configDir` to
25
+ * isolate.
26
+ */
27
+ export declare function getExclusionsPath(opts?: {
28
+ configDir?: string;
29
+ }): string;
30
+ export interface LoadExclusionsOptions {
31
+ /**
32
+ * Override the file path. Defaults to {@link getExclusionsPath}().
33
+ * Test harnesses pass a temp-dir path; production callers should leave
34
+ * unset.
35
+ */
36
+ configPath?: string;
37
+ }
38
+ /** Load the exclusions config. Never throws; failures degrade to empty. */
39
+ export declare function loadExclusions(opts?: LoadExclusionsOptions): Promise<ExclusionsConfig>;
40
+ /** True when `entry` matches any exclusion in `config`. Exact-match only. */
41
+ export declare function isExcluded(entry: ExcludableEntry, config: ExclusionsConfig): boolean;
42
+ /**
43
+ * Tier-revalidation gate for `audit_mode` writes (Wave 4 plan §8).
44
+ *
45
+ * Applied at three points (defense-in-depth):
46
+ * 1. CLI write-time: `sklx config set audit_mode <value>` (PR 5)
47
+ * rejects with typed error `audit.mode.tier_ineligible` when this
48
+ * returns false.
49
+ * 2. Session-start hook (PR 6): re-resolves to `'preventative'` when
50
+ * a manually-edited config violates the gate.
51
+ * 3. Detector entry-point: hardening boundary in case (1) and (2)
52
+ * both miss.
53
+ *
54
+ * Eligibility table:
55
+ *
56
+ * | | preventative | power_user | governance | off |
57
+ * |--------------|:------------:|:----------:|:----------:|:---:|
58
+ * | community | ✓ | ✗ | ✗ | ✓ |
59
+ * | individual | ✓ | ✗ | ✗ | ✓ |
60
+ * | team | ✓ | ✓ | ✗ | ✓ |
61
+ * | enterprise | ✓ | ✓ | ✓ | ✓ |
62
+ *
63
+ * `'off'` is allowed for all tiers — turning the audit off is a user
64
+ * preference, not a paid capability.
65
+ */
66
+ export declare function tierAllowsAuditMode(tier: Tier, mode: AuditMode): boolean;
67
+ //# sourceMappingURL=exclusions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusions.d.ts","sourceRoot":"","sources":["../../../src/audit/exclusions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAkB,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAO9F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEvE;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,2EAA2E;AAC3E,wBAAsB,cAAc,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+BhG;AAuBD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAUpF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAKxE"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * @fileoverview Audit exclusions loader + matcher + tier-revalidation gate
3
+ * (SMI-4590 Wave 4 PR 3).
4
+ * @module @skillsmith/core/audit/exclusions
5
+ *
6
+ * Reads `~/.skillsmith/audit-exclusions.json` and provides {@link isExcluded}
7
+ * for the inventory collision detector to filter known-acceptable findings,
8
+ * plus {@link tierAllowsAuditMode} — the write-time / re-resolution gate the
9
+ * CLI (PR 5) and session-start hook (PR 6) call before persisting or
10
+ * applying a user-selected `audit_mode`.
11
+ *
12
+ * Failure modes (decision #13 verbatim):
13
+ * - Missing file → empty config; nothing filtered.
14
+ * - Unreadable / malformed JSON → warn-and-empty; no exception.
15
+ * - Unknown `version` → warn-and-empty (forward-compat).
16
+ *
17
+ * Exclusion match is exact-string per `kind`. No glob / prefix support in
18
+ * v1 — keep the surface small until users ask.
19
+ */
20
+ import { promises as fs } from 'node:fs';
21
+ import { join } from 'node:path';
22
+ import { getConfigDir } from '../config/index.js';
23
+ const EXCLUSIONS_FILE = 'audit-exclusions.json';
24
+ /** Empty default returned when the file is missing or unreadable. */
25
+ const EMPTY_CONFIG = { version: 1, exclusions: [] };
26
+ /**
27
+ * Resolve the absolute path to the exclusions file. Defaults to
28
+ * `~/.skillsmith/audit-exclusions.json`. Tests pass `configDir` to
29
+ * isolate.
30
+ */
31
+ export function getExclusionsPath(opts) {
32
+ return join(opts?.configDir ?? getConfigDir(), EXCLUSIONS_FILE);
33
+ }
34
+ /** Load the exclusions config. Never throws; failures degrade to empty. */
35
+ export async function loadExclusions(opts = {}) {
36
+ const path = opts.configPath ?? getExclusionsPath();
37
+ let raw;
38
+ try {
39
+ raw = await fs.readFile(path, 'utf-8');
40
+ }
41
+ catch (err) {
42
+ // ENOENT is the expected hot path for users who haven't authored a
43
+ // file yet. Other read errors (permissions etc.) also fail open —
44
+ // exclusions are an opt-in suppression mechanism, never load-bearing.
45
+ if (err.code !== 'ENOENT') {
46
+ console.warn(`[audit-exclusions] read failed for ${path}: ${err.message}`);
47
+ }
48
+ return EMPTY_CONFIG;
49
+ }
50
+ let parsed;
51
+ try {
52
+ parsed = JSON.parse(raw);
53
+ }
54
+ catch {
55
+ console.warn(`[audit-exclusions] malformed JSON at ${path} — ignoring file`);
56
+ return EMPTY_CONFIG;
57
+ }
58
+ if (!isExclusionsConfig(parsed)) {
59
+ console.warn(`[audit-exclusions] unrecognized schema at ${path} (expected version: 1) — ignoring file`);
60
+ return EMPTY_CONFIG;
61
+ }
62
+ return parsed;
63
+ }
64
+ function isExclusionsConfig(v) {
65
+ if (!v || typeof v !== 'object')
66
+ return false;
67
+ const obj = v;
68
+ if (obj.version !== 1)
69
+ return false;
70
+ if (!Array.isArray(obj.exclusions))
71
+ return false;
72
+ return obj.exclusions.every(isExclusionEntry);
73
+ }
74
+ function isExclusionEntry(v) {
75
+ if (!v || typeof v !== 'object')
76
+ return false;
77
+ const e = v;
78
+ if (typeof e.reason !== 'string' || e.reason.length === 0)
79
+ return false;
80
+ if (e.kind === 'command') {
81
+ return typeof e.identifier === 'string' && e.identifier.length > 0;
82
+ }
83
+ if (e.kind === 'skill') {
84
+ return typeof e.skillId === 'string' && e.skillId.length > 0;
85
+ }
86
+ return false;
87
+ }
88
+ /** True when `entry` matches any exclusion in `config`. Exact-match only. */
89
+ export function isExcluded(entry, config) {
90
+ return config.exclusions.some((excl) => {
91
+ if (excl.kind === 'command' && entry.kind === 'command') {
92
+ return excl.identifier === entry.commandIdentifier;
93
+ }
94
+ if (excl.kind === 'skill' && entry.kind === 'skill') {
95
+ return excl.skillId === entry.skillId;
96
+ }
97
+ return false;
98
+ });
99
+ }
100
+ /**
101
+ * Tier-revalidation gate for `audit_mode` writes (Wave 4 plan §8).
102
+ *
103
+ * Applied at three points (defense-in-depth):
104
+ * 1. CLI write-time: `sklx config set audit_mode <value>` (PR 5)
105
+ * rejects with typed error `audit.mode.tier_ineligible` when this
106
+ * returns false.
107
+ * 2. Session-start hook (PR 6): re-resolves to `'preventative'` when
108
+ * a manually-edited config violates the gate.
109
+ * 3. Detector entry-point: hardening boundary in case (1) and (2)
110
+ * both miss.
111
+ *
112
+ * Eligibility table:
113
+ *
114
+ * | | preventative | power_user | governance | off |
115
+ * |--------------|:------------:|:----------:|:----------:|:---:|
116
+ * | community | ✓ | ✗ | ✗ | ✓ |
117
+ * | individual | ✓ | ✗ | ✗ | ✓ |
118
+ * | team | ✓ | ✓ | ✗ | ✓ |
119
+ * | enterprise | ✓ | ✓ | ✓ | ✓ |
120
+ *
121
+ * `'off'` is allowed for all tiers — turning the audit off is a user
122
+ * preference, not a paid capability.
123
+ */
124
+ export function tierAllowsAuditMode(tier, mode) {
125
+ if (mode === 'preventative' || mode === 'off')
126
+ return true;
127
+ if (mode === 'power_user')
128
+ return tier === 'team' || tier === 'enterprise';
129
+ if (mode === 'governance')
130
+ return tier === 'enterprise';
131
+ return false;
132
+ }
133
+ //# sourceMappingURL=exclusions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusions.js","sourceRoot":"","sources":["../../../src/audit/exclusions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @fileoverview Types for the audit exclusions file (SMI-4590 Wave 4 PR 3).
3
+ * @module @skillsmith/core/audit/exclusions.types
4
+ *
5
+ * Schema for `~/.skillsmith/audit-exclusions.json`. Version-gated; wraps a
6
+ * list of per-skill / per-command suppression entries that filter the
7
+ * inventory audit result before it surfaces to the user. See plan §8 of
8
+ * `docs/internal/implementation/smi-4590-cli-mcp-framework-adapter.md`.
9
+ */
10
+ /** A single suppression entry. Discriminated union on `kind`. */
11
+ export type ExclusionEntry = {
12
+ kind: 'command';
13
+ /** Slash-command identifier, e.g. `'/ship'`. */
14
+ identifier: string;
15
+ /** Free-text rationale shown in audit output. Required. */
16
+ reason: string;
17
+ } | {
18
+ kind: 'skill';
19
+ /** Skill identifier, e.g. `'anthropic/code-helper'`. */
20
+ skillId: string;
21
+ /** Free-text rationale shown in audit output. Required. */
22
+ reason: string;
23
+ };
24
+ /** Top-level config wrapper. `version: 1` is the only supported schema. */
25
+ export interface ExclusionsConfig {
26
+ version: 1;
27
+ exclusions: ExclusionEntry[];
28
+ }
29
+ /**
30
+ * Minimal duck-typed entry shape that {@link isExcluded} accepts.
31
+ *
32
+ * Callers map their domain types (e.g. mcp-server's `InventoryEntry` or
33
+ * `ExactCollisionFlag`) onto this before calling. Keeps `@skillsmith/core`
34
+ * from depending on `@skillsmith/mcp-server` (which would be circular —
35
+ * mcp-server depends on core).
36
+ */
37
+ export interface ExcludableEntry {
38
+ /** `'command'` for slash-commands; `'skill'` for skill ids. */
39
+ kind: 'command' | 'skill';
40
+ /** Required when `kind === 'command'`. */
41
+ commandIdentifier?: string;
42
+ /** Required when `kind === 'skill'`. */
43
+ skillId?: string;
44
+ }
45
+ //# sourceMappingURL=exclusions.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusions.types.d.ts","sourceRoot":"","sources":["../../../src/audit/exclusions.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iEAAiE;AACjE,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,SAAS,CAAA;IACf,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAA;CACf,GACD;IACE,IAAI,EAAE,OAAO,CAAA;IACb,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAEL,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,IAAI,EAAE,SAAS,GAAG,OAAO,CAAA;IACzB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview Types for the audit exclusions file (SMI-4590 Wave 4 PR 3).
3
+ * @module @skillsmith/core/audit/exclusions.types
4
+ *
5
+ * Schema for `~/.skillsmith/audit-exclusions.json`. Version-gated; wraps a
6
+ * list of per-skill / per-command suppression entries that filter the
7
+ * inventory audit result before it surfaces to the user. See plan §8 of
8
+ * `docs/internal/implementation/smi-4590-cli-mcp-framework-adapter.md`.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=exclusions.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusions.types.js","sourceRoot":"","sources":["../../../src/audit/exclusions.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Public barrel for the audit shared helpers (SMI-4590 Wave 4 PR 3).
3
+ * @module @skillsmith/core/audit
4
+ *
5
+ * Subpath export: `@skillsmith/core/audit`. Aggregates the audit-mode
6
+ * resolver (existing, originally added in Wave 1 / SMI-4587) and the
7
+ * audit-exclusions schema/loader/gate (new in Wave 4 PR 3). Consumers
8
+ * (`mcp-server`, `cli`, `website`) import from this path; PR 4–6 add
9
+ * additional exports here as Wave 4 lands.
10
+ */
11
+ export { isAuditMode, resolveAuditMode, tierDefault, type AuditMode, type ResolveAuditModeOptions, type Tier, } from '../config/audit-mode.js';
12
+ export { getExclusionsPath, isExcluded, loadExclusions, tierAllowsAuditMode, type LoadExclusionsOptions, } from './exclusions.js';
13
+ export type { ExcludableEntry, ExclusionEntry, ExclusionsConfig } from './exclusions.types.js';
14
+ export { emitInstallEvent, type InstallEventPayload } from './remote-audit.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,EACd,KAAK,uBAAuB,EAC5B,KAAK,IAAI,GACV,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAA;AAExB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE9F,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @fileoverview Public barrel for the audit shared helpers (SMI-4590 Wave 4 PR 3).
3
+ * @module @skillsmith/core/audit
4
+ *
5
+ * Subpath export: `@skillsmith/core/audit`. Aggregates the audit-mode
6
+ * resolver (existing, originally added in Wave 1 / SMI-4587) and the
7
+ * audit-exclusions schema/loader/gate (new in Wave 4 PR 3). Consumers
8
+ * (`mcp-server`, `cli`, `website`) import from this path; PR 4–6 add
9
+ * additional exports here as Wave 4 lands.
10
+ */
11
+ export { isAuditMode, resolveAuditMode, tierDefault, } from '../config/audit-mode.js';
12
+ export { getExclusionsPath, isExcluded, loadExclusions, tierAllowsAuditMode, } from './exclusions.js';
13
+ export { emitInstallEvent } from './remote-audit.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,GAIZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,GAEpB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,EAAE,gBAAgB,EAA4B,MAAM,mBAAmB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"embeddingBenchmark.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/embeddingBenchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGlG;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAeD;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,2CAA2C;;IAE3C,wCAAwC;;IAExC,iCAAiC;;IAEjC,8CAA8C;;IAE9C,4CAA4C;;CAE7C,CAAA;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,cAAc,CAAqB;gBAE/B,MAAM,GAAE,wBAA6B;IAIjD;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;IAuJrC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IA6CnD;;OAEG;YACW,KAAK;IAenB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;OAEG;YACW,QAAQ;CAMvB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,yBAAyB,CAsC3F;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB"}
1
+ {"version":3,"file":"embeddingBenchmark.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/embeddingBenchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGlG;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAeD;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,2CAA2C;;IAE3C,wCAAwC;;IAExC,iCAAiC;;IAEjC,8CAA8C;;IAE9C,4CAA4C;;CAE7C,CAAA;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,cAAc,CAAqB;gBAE/B,MAAM,GAAE,wBAA6B;IAIjD;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;IA0JrC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IA6CnD;;OAEG;YACW,KAAK;IAenB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;OAEG;YACW,QAAQ;CAMvB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,yBAAyB,CAsC3F;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB"}
@@ -139,12 +139,15 @@ export class EmbeddingBenchmark {
139
139
  }
140
140
  },
141
141
  });
142
- // Find similar (full workflow)
142
+ // Find similar (full workflow). SMI-4577: findSimilar is async (HNSW
143
+ // backend) — use the brute-force sibling so this bench keeps measuring
144
+ // the same path it always has. Pair-bench coverage for HNSW vs brute-force
145
+ // lives in tests/embeddings/hnsw-vs-brute-force.bench.ts.
143
146
  runner.add({
144
147
  name: 'find_similar_top10',
145
148
  fn: () => {
146
149
  const queryEmbedding = this.testEmbeddings[0];
147
- this.embeddingService.findSimilar(queryEmbedding, 10);
150
+ this.embeddingService.findSimilarBruteForce(queryEmbedding, 10);
148
151
  },
149
152
  });
150
153
  // Embedding storage (if database configured)
@@ -1 +1 @@
1
- {"version":3,"file":"embeddingBenchmark.js","sourceRoot":"","sources":["../../../src/benchmarks/embeddingBenchmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddingBenchmark.js","sourceRoot":"","sources":["../../../src/benchmarks/embeddingBenchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @fileoverview Audit-mode resolver for SMI-4587 consumer namespace audit.
3
+ * @module @skillsmith/core/config/audit-mode
4
+ *
5
+ * Pure resolver mapping (tier, override) -> AuditMode for the inventory
6
+ * collision detector. Lives in core (not mcp-server) so the CLI, web
7
+ * surfaces, and MCP server can share one resolution path. Subpath export:
8
+ * `@skillsmith/core/config/audit-mode`.
9
+ *
10
+ * Resolution rules (decision #1 in plan):
11
+ * 1. If `override` is set and is a valid AuditMode, return it.
12
+ * 2. Otherwise return the tier default:
13
+ * - community / individual -> 'preventative'
14
+ * - team -> 'power_user'
15
+ * - enterprise -> 'governance'
16
+ * 3. Unknown tier -> 'preventative' (fail-safe).
17
+ *
18
+ * `'off'` is only reachable via an explicit override. The detector treats
19
+ * 'off' as a short-circuit (returns an empty InventoryAuditResult and
20
+ * skips telemetry).
21
+ */
22
+ /**
23
+ * Audit-mode levels for the consumer namespace audit. Ordered roughly by
24
+ * how much work the detector does on the critical path:
25
+ * - 'preventative': exact + generic only (no embedding service touched)
26
+ * - 'power_user': adds the semantic-overlap pass
27
+ * - 'governance': same as power_user; reserved for stricter Wave-3 policy
28
+ * - 'off': short-circuit, no audit at all
29
+ */
30
+ export type AuditMode = 'preventative' | 'power_user' | 'governance' | 'off';
31
+ /**
32
+ * Subscription tier values consumed by the resolver. Mirrors the tier
33
+ * enum used elsewhere in the codebase. Unknown strings fall through to
34
+ * the fail-safe default.
35
+ */
36
+ export type Tier = 'community' | 'individual' | 'team' | 'enterprise';
37
+ /**
38
+ * Type guard: returns true when `value` is a valid AuditMode.
39
+ */
40
+ export declare function isAuditMode(value: unknown): value is AuditMode;
41
+ /**
42
+ * Options for {@link resolveAuditMode}.
43
+ */
44
+ export interface ResolveAuditModeOptions {
45
+ /** Subscription tier of the caller. Drives the default when no override is set. */
46
+ tier: Tier;
47
+ /**
48
+ * Optional override read from `~/.skillsmith/config.json` `audit_mode`
49
+ * field (or `SKILLSMITH_AUDIT_MODE` env var, resolved by the caller).
50
+ * Invalid / nullish values are ignored and the tier default is used.
51
+ */
52
+ override?: AuditMode | null;
53
+ }
54
+ /**
55
+ * Resolve the effective audit-mode for a caller. Pure function — no IO.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * resolveAuditMode({ tier: 'community' }) // 'preventative'
60
+ * resolveAuditMode({ tier: 'team' }) // 'power_user'
61
+ * resolveAuditMode({ tier: 'enterprise' }) // 'governance'
62
+ * resolveAuditMode({ tier: 'team', override: 'off' }) // 'off'
63
+ * ```
64
+ */
65
+ export declare function resolveAuditMode(opts: ResolveAuditModeOptions): AuditMode;
66
+ /**
67
+ * Tier-default mapping (decision #1). Exported so consumers can render
68
+ * "your default mode is X" hints without re-deriving the rule.
69
+ */
70
+ export declare function tierDefault(tier: Tier | string): AuditMode;
71
+ //# sourceMappingURL=audit-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-mode.d.ts","sourceRoot":"","sources":["../../../src/config/audit-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,KAAK,CAAA;AAE5E;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,CAAA;AASrE;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mFAAmF;IACnF,IAAI,EAAE,IAAI,CAAA;IACV;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAKzE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAa1D"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @fileoverview Audit-mode resolver for SMI-4587 consumer namespace audit.
3
+ * @module @skillsmith/core/config/audit-mode
4
+ *
5
+ * Pure resolver mapping (tier, override) -> AuditMode for the inventory
6
+ * collision detector. Lives in core (not mcp-server) so the CLI, web
7
+ * surfaces, and MCP server can share one resolution path. Subpath export:
8
+ * `@skillsmith/core/config/audit-mode`.
9
+ *
10
+ * Resolution rules (decision #1 in plan):
11
+ * 1. If `override` is set and is a valid AuditMode, return it.
12
+ * 2. Otherwise return the tier default:
13
+ * - community / individual -> 'preventative'
14
+ * - team -> 'power_user'
15
+ * - enterprise -> 'governance'
16
+ * 3. Unknown tier -> 'preventative' (fail-safe).
17
+ *
18
+ * `'off'` is only reachable via an explicit override. The detector treats
19
+ * 'off' as a short-circuit (returns an empty InventoryAuditResult and
20
+ * skips telemetry).
21
+ */
22
+ const VALID_MODES = new Set([
23
+ 'preventative',
24
+ 'power_user',
25
+ 'governance',
26
+ 'off',
27
+ ]);
28
+ /**
29
+ * Type guard: returns true when `value` is a valid AuditMode.
30
+ */
31
+ export function isAuditMode(value) {
32
+ return typeof value === 'string' && VALID_MODES.has(value);
33
+ }
34
+ /**
35
+ * Resolve the effective audit-mode for a caller. Pure function — no IO.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * resolveAuditMode({ tier: 'community' }) // 'preventative'
40
+ * resolveAuditMode({ tier: 'team' }) // 'power_user'
41
+ * resolveAuditMode({ tier: 'enterprise' }) // 'governance'
42
+ * resolveAuditMode({ tier: 'team', override: 'off' }) // 'off'
43
+ * ```
44
+ */
45
+ export function resolveAuditMode(opts) {
46
+ if (opts.override != null && isAuditMode(opts.override)) {
47
+ return opts.override;
48
+ }
49
+ return tierDefault(opts.tier);
50
+ }
51
+ /**
52
+ * Tier-default mapping (decision #1). Exported so consumers can render
53
+ * "your default mode is X" hints without re-deriving the rule.
54
+ */
55
+ export function tierDefault(tier) {
56
+ switch (tier) {
57
+ case 'community':
58
+ case 'individual':
59
+ return 'preventative';
60
+ case 'team':
61
+ return 'power_user';
62
+ case 'enterprise':
63
+ return 'governance';
64
+ default:
65
+ // Unknown tier -> fail-safe to the cheapest mode.
66
+ return 'preventative';
67
+ }
68
+ }
69
+ //# sourceMappingURL=audit-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-mode.js","sourceRoot":"","sources":["../../../src/config/audit-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAmBH,MAAM,WAAW,GAA2B,IAAI,GAAG,CAAC;IAClD,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,KAAK;CACN,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,KAAkB,CAAC,CAAA;AACzE,CAAC;AAgBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA6B;IAC5D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAmB;IAC7C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,cAAc,CAAA;QACvB,KAAK,MAAM;YACT,OAAO,YAAY,CAAA;QACrB,KAAK,YAAY;YACf,OAAO,YAAY,CAAA;QACrB;YACE,kDAAkD;YAClD,OAAO,cAAc,CAAA;IACzB,CAAC;AACH,CAAC"}
@@ -71,6 +71,19 @@ export declare function getConfigPath(): string;
71
71
  * Creates ~/.skillsmith/ if it doesn't exist
72
72
  */
73
73
  export declare function ensureConfigDir(): void;
74
+ /**
75
+ * Get the cache directory path (~/.skillsmith/cache).
76
+ *
77
+ * SMI-4577: First-class artifact directory for cached HNSW indexes,
78
+ * model metadata, and similar machine-generated state. mkdir-on-first-call
79
+ * mirrors the pattern used by `getConfigDir()`/`ensureConfigDir()`.
80
+ *
81
+ * The pathValidation allow-list (`packages/core/src/security/pathValidation.ts`)
82
+ * already covers `~/.skillsmith` and therefore transitively allows this subtree.
83
+ *
84
+ * @returns Absolute path to ~/.skillsmith/cache/
85
+ */
86
+ export declare function getCacheDir(): string;
74
87
  /**
75
88
  * Load configuration from ~/.skillsmith/config.json
76
89
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yBAAyB;IACzB,SAAS,CAAC,EAAE;QACV,gDAAgD;QAChD,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,oBAAoB;IACpB,IAAI,CAAC,EAAE;QACL,6BAA6B;QAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,oCAAoC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAuDD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAc7C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAoB,GAC7C,IAAI,CAmCN;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAU9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,SAA+B,GAAG,MAAM,CAQ/E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGxD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/D;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAgCD;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;CAC9C,CAAC,CA2CD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yBAAyB;IACzB,SAAS,CAAC,EAAE;QACV,gDAAgD;QAChD,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,oBAAoB;IACpB,IAAI,CAAC,EAAE;QACL,6BAA6B;QAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,oCAAoC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AA0DD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAUpC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAc7C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACjC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAoB,GAC7C,IAAI,CAmCN;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAU9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,SAA+B,GAAG,MAAM,CAQ/E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGxD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/D;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAgCD;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;CAC9C,CAAC,CA2CD"}
@@ -37,6 +37,8 @@ import { existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync } from 'f
37
37
  const CONFIG_DIR = '.skillsmith';
38
38
  /** Default config file name */
39
39
  const CONFIG_FILE = 'config.json';
40
+ /** Default cache subdirectory name (sibling to config; SMI-4577) */
41
+ const CACHE_SUBDIR = 'cache';
40
42
  /** Lazy-loaded keytar module; null means unavailable */
41
43
  let keytarModule = undefined;
42
44
  /**
@@ -92,6 +94,28 @@ export function ensureConfigDir() {
92
94
  mkdirSync(configDir, { recursive: true, mode: 0o700 });
93
95
  }
94
96
  }
97
+ /**
98
+ * Get the cache directory path (~/.skillsmith/cache).
99
+ *
100
+ * SMI-4577: First-class artifact directory for cached HNSW indexes,
101
+ * model metadata, and similar machine-generated state. mkdir-on-first-call
102
+ * mirrors the pattern used by `getConfigDir()`/`ensureConfigDir()`.
103
+ *
104
+ * The pathValidation allow-list (`packages/core/src/security/pathValidation.ts`)
105
+ * already covers `~/.skillsmith` and therefore transitively allows this subtree.
106
+ *
107
+ * @returns Absolute path to ~/.skillsmith/cache/
108
+ */
109
+ export function getCacheDir() {
110
+ // SMI-4691: SKILLSMITH_CACHE_DIR_OVERRIDE allows test isolation on macOS where
111
+ // os.homedir() resolves via getpwuid() and ignores process.env.HOME mutations.
112
+ const override = process.env.SKILLSMITH_CACHE_DIR_OVERRIDE;
113
+ const cacheDir = override && override.length > 0 ? override : join(homedir(), CONFIG_DIR, CACHE_SUBDIR);
114
+ if (!existsSync(cacheDir)) {
115
+ mkdirSync(cacheDir, { recursive: true, mode: 0o700 });
116
+ }
117
+ return cacheDir;
118
+ }
95
119
  /**
96
120
  * Load configuration from ~/.skillsmith/config.json
97
121
  *