@kb-labs/devkit 1.4.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/assets/claude/CLAUDE.md.snippet +30 -0
  2. package/assets/claude/manifest.json +47 -0
  3. package/assets/claude/skills/kb-labs-create-plugin/SKILL.md +144 -0
  4. package/assets/claude/skills/kb-labs-create-product/SKILL.md +144 -0
  5. package/assets/claude/skills/kb-labs-explore/SKILL.md +119 -0
  6. package/assets/claude/skills/kb-labs-quickstart/SKILL.md +72 -0
  7. package/assets/claude/skills/kb-labs-troubleshoot/SKILL.md +150 -0
  8. package/assets/claude/skills/kb-labs-update/SKILL.md +89 -0
  9. package/package.json +29 -29
  10. package/tsconfig/spa.json +7 -0
  11. package/vitest/node.js +8 -2
  12. package/vitest/react.js +8 -2
  13. package/.cursorrules +0 -32
  14. package/.github/CODEOWNERS +0 -2
  15. package/.github/actions/setup-node-pnpm/action.yml +0 -47
  16. package/.github/workflow-templates/ci.yml +0 -13
  17. package/.github/workflow-templates/deploy.yml +0 -28
  18. package/.github/workflow-templates/docker-build.yml +0 -25
  19. package/.github/workflow-templates/drift-check.yml +0 -10
  20. package/.github/workflow-templates/profiles-validate.yml +0 -16
  21. package/.github/workflow-templates/release.yml +0 -8
  22. package/.github/workflows/ci-reusable.yml +0 -131
  23. package/.github/workflows/deploy-reusable.yml +0 -110
  24. package/.github/workflows/docker-build-reusable.yml +0 -110
  25. package/.github/workflows/drift-check-reusable.yml +0 -23
  26. package/.github/workflows/fixtures.yml +0 -74
  27. package/.github/workflows/profiles-validate-reusable.yml +0 -67
  28. package/.github/workflows/release-reusable.yml +0 -50
  29. package/.vscode/settings.json +0 -23
  30. package/tsconfig/dist/__tests__/cache.spec.d.ts +0 -6
  31. package/tsconfig/dist/__tests__/cache.spec.d.ts.map +0 -1
  32. package/tsconfig/dist/__tests__/cache.spec.js +0 -85
  33. package/tsconfig/dist/__tests__/cache.spec.js.map +0 -1
  34. package/tsconfig/dist/__tests__/fs-atomic.spec.d.ts +0 -6
  35. package/tsconfig/dist/__tests__/fs-atomic.spec.d.ts.map +0 -1
  36. package/tsconfig/dist/__tests__/fs-atomic.spec.js +0 -153
  37. package/tsconfig/dist/__tests__/fs-atomic.spec.js.map +0 -1
  38. package/tsconfig/dist/__tests__/init-workspace.spec.d.ts +0 -6
  39. package/tsconfig/dist/__tests__/init-workspace.spec.d.ts.map +0 -1
  40. package/tsconfig/dist/__tests__/init-workspace.spec.js +0 -99
  41. package/tsconfig/dist/__tests__/init-workspace.spec.js.map +0 -1
  42. package/tsconfig/dist/__tests__/kb-error.spec.d.ts +0 -6
  43. package/tsconfig/dist/__tests__/kb-error.spec.d.ts.map +0 -1
  44. package/tsconfig/dist/__tests__/kb-error.spec.js +0 -190
  45. package/tsconfig/dist/__tests__/kb-error.spec.js.map +0 -1
  46. package/tsconfig/dist/__tests__/preset-lockfile.spec.d.ts +0 -6
  47. package/tsconfig/dist/__tests__/preset-lockfile.spec.d.ts.map +0 -1
  48. package/tsconfig/dist/__tests__/preset-lockfile.spec.js +0 -142
  49. package/tsconfig/dist/__tests__/preset-lockfile.spec.js.map +0 -1
  50. package/tsconfig/dist/__tests__/product-config-profiles.spec.d.ts +0 -6
  51. package/tsconfig/dist/__tests__/product-config-profiles.spec.d.ts.map +0 -1
  52. package/tsconfig/dist/__tests__/product-config-profiles.spec.js +0 -100
  53. package/tsconfig/dist/__tests__/product-config-profiles.spec.js.map +0 -1
  54. package/tsconfig/dist/__tests__/product-config.spec.d.ts +0 -6
  55. package/tsconfig/dist/__tests__/product-config.spec.d.ts.map +0 -1
  56. package/tsconfig/dist/__tests__/product-config.spec.js +0 -298
  57. package/tsconfig/dist/__tests__/product-config.spec.js.map +0 -1
  58. package/tsconfig/dist/__tests__/runtime.spec.d.ts +0 -2
  59. package/tsconfig/dist/__tests__/runtime.spec.d.ts.map +0 -1
  60. package/tsconfig/dist/__tests__/runtime.spec.js +0 -127
  61. package/tsconfig/dist/__tests__/runtime.spec.js.map +0 -1
  62. package/tsconfig/dist/__tests__/upsert-lockfile.spec.d.ts +0 -6
  63. package/tsconfig/dist/__tests__/upsert-lockfile.spec.d.ts.map +0 -1
  64. package/tsconfig/dist/__tests__/upsert-lockfile.spec.js +0 -251
  65. package/tsconfig/dist/__tests__/upsert-lockfile.spec.js.map +0 -1
  66. package/tsconfig/dist/__tests__/validate-config.spec.d.ts +0 -2
  67. package/tsconfig/dist/__tests__/validate-config.spec.d.ts.map +0 -1
  68. package/tsconfig/dist/__tests__/validate-config.spec.js +0 -14
  69. package/tsconfig/dist/__tests__/validate-config.spec.js.map +0 -1
  70. package/tsconfig/dist/api/init-workspace.d.ts +0 -10
  71. package/tsconfig/dist/api/init-workspace.d.ts.map +0 -1
  72. package/tsconfig/dist/api/init-workspace.js +0 -191
  73. package/tsconfig/dist/api/init-workspace.js.map +0 -1
  74. package/tsconfig/dist/api/product-config.d.ts +0 -21
  75. package/tsconfig/dist/api/product-config.d.ts.map +0 -1
  76. package/tsconfig/dist/api/product-config.js +0 -192
  77. package/tsconfig/dist/api/product-config.js.map +0 -1
  78. package/tsconfig/dist/api/read-config.d.ts +0 -22
  79. package/tsconfig/dist/api/read-config.d.ts.map +0 -1
  80. package/tsconfig/dist/api/read-config.js +0 -105
  81. package/tsconfig/dist/api/read-config.js.map +0 -1
  82. package/tsconfig/dist/api/upsert-lockfile.d.ts +0 -10
  83. package/tsconfig/dist/api/upsert-lockfile.d.ts.map +0 -1
  84. package/tsconfig/dist/api/upsert-lockfile.js +0 -63
  85. package/tsconfig/dist/api/upsert-lockfile.js.map +0 -1
  86. package/tsconfig/dist/cache/fs-cache.d.ts +0 -38
  87. package/tsconfig/dist/cache/fs-cache.d.ts.map +0 -1
  88. package/tsconfig/dist/cache/fs-cache.js +0 -142
  89. package/tsconfig/dist/cache/fs-cache.js.map +0 -1
  90. package/tsconfig/dist/errors/kb-error.d.ts +0 -32
  91. package/tsconfig/dist/errors/kb-error.d.ts.map +0 -1
  92. package/tsconfig/dist/errors/kb-error.js +0 -54
  93. package/tsconfig/dist/errors/kb-error.js.map +0 -1
  94. package/tsconfig/dist/fs/__tests__/fs.spec.d.ts +0 -2
  95. package/tsconfig/dist/fs/__tests__/fs.spec.d.ts.map +0 -1
  96. package/tsconfig/dist/fs/__tests__/fs.spec.js +0 -22
  97. package/tsconfig/dist/fs/__tests__/fs.spec.js.map +0 -1
  98. package/tsconfig/dist/fs/fs.d.ts +0 -6
  99. package/tsconfig/dist/fs/fs.d.ts.map +0 -1
  100. package/tsconfig/dist/fs/fs.js +0 -12
  101. package/tsconfig/dist/fs/fs.js.map +0 -1
  102. package/tsconfig/dist/fs/index.d.ts +0 -2
  103. package/tsconfig/dist/fs/index.d.ts.map +0 -1
  104. package/tsconfig/dist/fs/index.js +0 -2
  105. package/tsconfig/dist/fs/index.js.map +0 -1
  106. package/tsconfig/dist/hash/config-hash.d.ts +0 -17
  107. package/tsconfig/dist/hash/config-hash.d.ts.map +0 -1
  108. package/tsconfig/dist/hash/config-hash.js +0 -55
  109. package/tsconfig/dist/hash/config-hash.js.map +0 -1
  110. package/tsconfig/dist/index.d.ts +0 -5
  111. package/tsconfig/dist/index.d.ts.map +0 -1
  112. package/tsconfig/dist/index.js +0 -5
  113. package/tsconfig/dist/index.js.map +0 -1
  114. package/tsconfig/dist/lockfile/lockfile.d.ts +0 -54
  115. package/tsconfig/dist/lockfile/lockfile.d.ts.map +0 -1
  116. package/tsconfig/dist/lockfile/lockfile.js +0 -141
  117. package/tsconfig/dist/lockfile/lockfile.js.map +0 -1
  118. package/tsconfig/dist/logging/__tests__/logger.spec.d.ts +0 -2
  119. package/tsconfig/dist/logging/__tests__/logger.spec.d.ts.map +0 -1
  120. package/tsconfig/dist/logging/__tests__/logger.spec.js +0 -65
  121. package/tsconfig/dist/logging/__tests__/logger.spec.js.map +0 -1
  122. package/tsconfig/dist/logging/__tests__/redaction.spec.d.ts +0 -2
  123. package/tsconfig/dist/logging/__tests__/redaction.spec.d.ts.map +0 -1
  124. package/tsconfig/dist/logging/__tests__/redaction.spec.js +0 -34
  125. package/tsconfig/dist/logging/__tests__/redaction.spec.js.map +0 -1
  126. package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.d.ts +0 -2
  127. package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.d.ts.map +0 -1
  128. package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.js +0 -90
  129. package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.js.map +0 -1
  130. package/tsconfig/dist/logging/index.d.ts +0 -6
  131. package/tsconfig/dist/logging/index.d.ts.map +0 -1
  132. package/tsconfig/dist/logging/index.js +0 -6
  133. package/tsconfig/dist/logging/index.js.map +0 -1
  134. package/tsconfig/dist/logging/logger.d.ts +0 -9
  135. package/tsconfig/dist/logging/logger.d.ts.map +0 -1
  136. package/tsconfig/dist/logging/logger.js +0 -101
  137. package/tsconfig/dist/logging/logger.js.map +0 -1
  138. package/tsconfig/dist/logging/redaction.d.ts +0 -7
  139. package/tsconfig/dist/logging/redaction.d.ts.map +0 -1
  140. package/tsconfig/dist/logging/redaction.js +0 -23
  141. package/tsconfig/dist/logging/redaction.js.map +0 -1
  142. package/tsconfig/dist/logging/sinks/json.d.ts +0 -4
  143. package/tsconfig/dist/logging/sinks/json.d.ts.map +0 -1
  144. package/tsconfig/dist/logging/sinks/json.js +0 -23
  145. package/tsconfig/dist/logging/sinks/json.js.map +0 -1
  146. package/tsconfig/dist/logging/sinks/stdout.d.ts +0 -3
  147. package/tsconfig/dist/logging/sinks/stdout.d.ts.map +0 -1
  148. package/tsconfig/dist/logging/sinks/stdout.js +0 -24
  149. package/tsconfig/dist/logging/sinks/stdout.js.map +0 -1
  150. package/tsconfig/dist/logging/types/index.d.ts +0 -2
  151. package/tsconfig/dist/logging/types/index.d.ts.map +0 -1
  152. package/tsconfig/dist/logging/types/index.js +0 -2
  153. package/tsconfig/dist/logging/types/index.js.map +0 -1
  154. package/tsconfig/dist/logging/types/types.d.ts +0 -37
  155. package/tsconfig/dist/logging/types/types.d.ts.map +0 -1
  156. package/tsconfig/dist/logging/types/types.js +0 -2
  157. package/tsconfig/dist/logging/types/types.js.map +0 -1
  158. package/tsconfig/dist/merge/layered-merge.d.ts +0 -16
  159. package/tsconfig/dist/merge/layered-merge.d.ts.map +0 -1
  160. package/tsconfig/dist/merge/layered-merge.js +0 -97
  161. package/tsconfig/dist/merge/layered-merge.js.map +0 -1
  162. package/tsconfig/dist/preset/resolve-preset.d.ts +0 -29
  163. package/tsconfig/dist/preset/resolve-preset.d.ts.map +0 -1
  164. package/tsconfig/dist/preset/resolve-preset.js +0 -104
  165. package/tsconfig/dist/preset/resolve-preset.js.map +0 -1
  166. package/tsconfig/dist/repo/__tests__/repo.spec.d.ts +0 -2
  167. package/tsconfig/dist/repo/__tests__/repo.spec.d.ts.map +0 -1
  168. package/tsconfig/dist/repo/__tests__/repo.spec.js +0 -25
  169. package/tsconfig/dist/repo/__tests__/repo.spec.js.map +0 -1
  170. package/tsconfig/dist/repo/index.d.ts +0 -2
  171. package/tsconfig/dist/repo/index.d.ts.map +0 -1
  172. package/tsconfig/dist/repo/index.js +0 -2
  173. package/tsconfig/dist/repo/index.js.map +0 -1
  174. package/tsconfig/dist/repo/repo.d.ts +0 -6
  175. package/tsconfig/dist/repo/repo.d.ts.map +0 -1
  176. package/tsconfig/dist/repo/repo.js +0 -25
  177. package/tsconfig/dist/repo/repo.js.map +0 -1
  178. package/tsconfig/dist/runtime/index.d.ts +0 -2
  179. package/tsconfig/dist/runtime/index.d.ts.map +0 -1
  180. package/tsconfig/dist/runtime/index.js +0 -2
  181. package/tsconfig/dist/runtime/index.js.map +0 -1
  182. package/tsconfig/dist/runtime/runtime.d.ts +0 -46
  183. package/tsconfig/dist/runtime/runtime.d.ts.map +0 -1
  184. package/tsconfig/dist/runtime/runtime.js +0 -126
  185. package/tsconfig/dist/runtime/runtime.js.map +0 -1
  186. package/tsconfig/dist/tsconfig.tools.tsbuildinfo +0 -1
  187. package/tsconfig/dist/tsconfig.tsbuildinfo +0 -1
  188. package/tsconfig/dist/types/index.d.ts +0 -2
  189. package/tsconfig/dist/types/index.d.ts.map +0 -1
  190. package/tsconfig/dist/types/index.js +0 -2
  191. package/tsconfig/dist/types/index.js.map +0 -1
  192. package/tsconfig/dist/types/init.d.ts +0 -34
  193. package/tsconfig/dist/types/init.d.ts.map +0 -1
  194. package/tsconfig/dist/types/init.js +0 -6
  195. package/tsconfig/dist/types/init.js.map +0 -1
  196. package/tsconfig/dist/types/preset.d.ts +0 -27
  197. package/tsconfig/dist/types/preset.d.ts.map +0 -1
  198. package/tsconfig/dist/types/preset.js +0 -6
  199. package/tsconfig/dist/types/preset.js.map +0 -1
  200. package/tsconfig/dist/types/types.d.ts +0 -6
  201. package/tsconfig/dist/types/types.d.ts.map +0 -1
  202. package/tsconfig/dist/types/types.js +0 -2
  203. package/tsconfig/dist/types/types.js.map +0 -1
  204. package/tsconfig/dist/utils/__tests__/env.spec.d.ts +0 -2
  205. package/tsconfig/dist/utils/__tests__/env.spec.d.ts.map +0 -1
  206. package/tsconfig/dist/utils/__tests__/env.spec.js +0 -33
  207. package/tsconfig/dist/utils/__tests__/env.spec.js.map +0 -1
  208. package/tsconfig/dist/utils/env.d.ts +0 -7
  209. package/tsconfig/dist/utils/env.d.ts.map +0 -1
  210. package/tsconfig/dist/utils/env.js +0 -25
  211. package/tsconfig/dist/utils/env.js.map +0 -1
  212. package/tsconfig/dist/utils/fs-atomic.d.ts +0 -15
  213. package/tsconfig/dist/utils/fs-atomic.d.ts.map +0 -1
  214. package/tsconfig/dist/utils/fs-atomic.js +0 -45
  215. package/tsconfig/dist/utils/fs-atomic.js.map +0 -1
  216. package/tsconfig/dist/utils/index.d.ts +0 -3
  217. package/tsconfig/dist/utils/index.d.ts.map +0 -1
  218. package/tsconfig/dist/utils/index.js +0 -3
  219. package/tsconfig/dist/utils/index.js.map +0 -1
  220. package/tsconfig/dist/utils/paths.d.ts +0 -21
  221. package/tsconfig/dist/utils/paths.d.ts.map +0 -1
  222. package/tsconfig/dist/utils/paths.js +0 -32
  223. package/tsconfig/dist/utils/paths.js.map +0 -1
  224. package/tsconfig/dist/utils/product-normalize.d.ts +0 -27
  225. package/tsconfig/dist/utils/product-normalize.d.ts.map +0 -1
  226. package/tsconfig/dist/utils/product-normalize.js +0 -45
  227. package/tsconfig/dist/utils/product-normalize.js.map +0 -1
  228. package/tsconfig/dist/validation/validate-config.d.ts +0 -7
  229. package/tsconfig/dist/validation/validate-config.d.ts.map +0 -1
  230. package/tsconfig/dist/validation/validate-config.js +0 -22
  231. package/tsconfig/dist/validation/validate-config.js.map +0 -1
@@ -1,142 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/preset-lockfile.spec.ts
3
- * Tests for preset resolution and lockfile functionality
4
- */
5
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
- import { promises as fsp } from 'node:fs';
7
- import path from 'node:path';
8
- import { tmpdir } from 'node:os';
9
- import { resolvePreset, getPresetConfigForProduct, readLockfile, writeLockfile, updateLockfile, isLockfileUpToDate, clearCaches } from '../index';
10
- describe('Preset and Lockfile System', () => {
11
- let testDir;
12
- let presetDir;
13
- beforeEach(async () => {
14
- testDir = path.join(tmpdir(), `kb-labs-preset-test-${Date.now()}`);
15
- presetDir = path.join(testDir, 'node_modules', '@kb-labs', 'org-preset');
16
- await fsp.mkdir(presetDir, { recursive: true });
17
- clearCaches();
18
- });
19
- afterEach(async () => {
20
- await fsp.rm(testDir, { recursive: true, force: true });
21
- clearCaches();
22
- });
23
- describe('Preset Resolution', () => {
24
- it('should resolve preset from local node_modules', async () => {
25
- // Create preset package
26
- const packageJson = {
27
- name: '@kb-labs/org-preset',
28
- version: '1.3.2',
29
- description: 'KB Labs org preset'
30
- };
31
- await fsp.writeFile(path.join(presetDir, 'package.json'), JSON.stringify(packageJson, null, 2));
32
- const configDefaults = {
33
- products: {
34
- 'ai-review': {
35
- enabled: true,
36
- rules: ['security', 'performance']
37
- },
38
- 'devlink': {
39
- watch: true,
40
- build: true
41
- }
42
- }
43
- };
44
- await fsp.writeFile(path.join(presetDir, 'config.defaults.json'), JSON.stringify(configDefaults, null, 2));
45
- const preset = await resolvePreset('@kb-labs/org-preset@1.3.2', testDir);
46
- expect(preset.name).toBe('@kb-labs/org-preset');
47
- expect(preset.version).toBe('1.3.2');
48
- expect(preset.path).toBe(presetDir);
49
- expect(preset.config).toEqual(configDefaults);
50
- });
51
- it('should get preset config for specific product', async () => {
52
- // Create preset package
53
- const packageJson = {
54
- name: '@kb-labs/org-preset',
55
- version: '1.3.2'
56
- };
57
- await fsp.writeFile(path.join(presetDir, 'package.json'), JSON.stringify(packageJson, null, 2));
58
- const configDefaults = {
59
- products: {
60
- 'ai-review': {
61
- enabled: true,
62
- rules: ['security', 'performance']
63
- }
64
- }
65
- };
66
- await fsp.writeFile(path.join(presetDir, 'config.defaults.json'), JSON.stringify(configDefaults, null, 2));
67
- const preset = await resolvePreset('@kb-labs/org-preset@1.3.2', testDir);
68
- const aiReviewConfig = getPresetConfigForProduct(preset, 'aiReview');
69
- expect(aiReviewConfig).toEqual({
70
- enabled: true,
71
- rules: ['security', 'performance']
72
- });
73
- });
74
- it('should throw error for invalid preset reference', async () => {
75
- await expect(resolvePreset('invalid-preset', testDir)).rejects.toThrow('Invalid preset reference');
76
- });
77
- it('should throw error for missing preset', async () => {
78
- await expect(resolvePreset('@kb-labs/missing-preset@1.0.0', testDir)).rejects.toThrow('Preset not found');
79
- });
80
- });
81
- describe('Lockfile Management', () => {
82
- it('should create and read lockfile', async () => {
83
- const lockfileData = {
84
- $schema: 'https://schemas.kb-labs.dev/lockfile.schema.json',
85
- schemaVersion: '1.0',
86
- orgPreset: '@kb-labs/org-preset@1.3.2',
87
- profile: 'node-ts-lib@1.2.0',
88
- hashes: {
89
- 'ai-review': 'sha256-abc123',
90
- 'devlink': 'sha256-def456'
91
- },
92
- generatedAt: new Date().toISOString()
93
- };
94
- await writeLockfile(testDir, lockfileData);
95
- const readData = await readLockfile(testDir);
96
- expect(readData).toEqual(lockfileData);
97
- });
98
- it('should update lockfile with new hashes', async () => {
99
- // Create initial lockfile
100
- const initialData = {
101
- schemaVersion: '1.0',
102
- hashes: {
103
- 'ai-review': 'sha256-old123'
104
- },
105
- generatedAt: new Date().toISOString()
106
- };
107
- await writeLockfile(testDir, initialData);
108
- // Update with new config hashes
109
- const newConfigs = {
110
- aiReview: { enabled: true, rules: ['new-rule'] },
111
- devlink: { watch: true }
112
- };
113
- const updatedData = await updateLockfile(testDir, {
114
- configHashes: newConfigs
115
- });
116
- expect(updatedData.hashes['ai-review']).toBeDefined();
117
- expect(updatedData.hashes['devlink']).toBeDefined();
118
- expect(updatedData.hashes['ai-review']).not.toBe('sha256-old123');
119
- });
120
- it('should check if lockfile is up to date', async () => {
121
- const configs = {
122
- aiReview: { enabled: true, rules: ['test'] }
123
- };
124
- // No lockfile exists
125
- expect(await isLockfileUpToDate(testDir, configs)).toBe(false);
126
- // Create lockfile
127
- await updateLockfile(testDir, { configHashes: configs });
128
- // Should be up to date now
129
- expect(await isLockfileUpToDate(testDir, configs)).toBe(true);
130
- // Change config
131
- const newConfigs = {
132
- aiReview: { enabled: false, rules: ['different'] }
133
- };
134
- expect(await isLockfileUpToDate(testDir, newConfigs)).toBe(false);
135
- });
136
- it('should return null for missing lockfile', async () => {
137
- const lockfile = await readLockfile(testDir);
138
- expect(lockfile).toBeNull();
139
- });
140
- });
141
- });
142
- //# sourceMappingURL=preset-lockfile.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset-lockfile.spec.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/preset-lockfile.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core-config/__tests__/product-config-profiles
3
- * Tests for product config with profile integration
4
- */
5
- export {};
6
- //# sourceMappingURL=product-config-profiles.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-config-profiles.spec.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/product-config-profiles.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,100 +0,0 @@
1
- /**
2
- * @module @kb-labs/core-config/__tests__/product-config-profiles
3
- * Tests for product config with profile integration
4
- */
5
- import { describe, it, expect, beforeEach } from 'vitest';
6
- import { promises as fsp } from 'node:fs';
7
- import path from 'node:path';
8
- import { tmpdir } from 'node:os';
9
- import { getProductConfig } from '../api/product-config';
10
- describe('Product Config with Profiles', () => {
11
- let testDir;
12
- beforeEach(async () => {
13
- testDir = path.join(tmpdir(), `kb-labs-config-profiles-${Date.now()}`);
14
- await fsp.mkdir(testDir, { recursive: true });
15
- });
16
- it('should merge profile defaults correctly', async () => {
17
- // Create profile info with defaults
18
- const profileInfo = {
19
- name: 'test-profile',
20
- version: '1.0.0',
21
- manifestPath: path.join(testDir, 'profile.json'),
22
- exports: {},
23
- extends: []
24
- };
25
- // Create defaults file
26
- const defaultsDir = path.join(testDir, 'defaults');
27
- await fsp.mkdir(defaultsDir, { recursive: true });
28
- await fsp.writeFile(path.join(defaultsDir, 'ai-review.json'), JSON.stringify({ maxFiles: 50, debug: false }, null, 2));
29
- // Mock getProductDefaults behavior
30
- // Since we can't easily mock the function, we'll test with empty defaults
31
- const profileDefaults = {
32
- maxFiles: 50,
33
- debug: false
34
- };
35
- // Test that profile defaults would be merged
36
- expect(profileDefaults.maxFiles).toBe(50);
37
- expect(profileDefaults.debug).toBe(false);
38
- });
39
- it('should handle missing profile gracefully', async () => {
40
- // Test without profileInfo
41
- const config = await getProductConfig({
42
- cwd: testDir,
43
- product: 'aiReview',
44
- cli: {}
45
- }, null
46
- // No profileInfo passed
47
- );
48
- expect(config.config).toBeDefined();
49
- expect(config.trace).toBeDefined();
50
- // Should have profile layer with 'profile:none'
51
- const profileLayer = config.trace.find(t => t.layer === 'profile');
52
- expect(profileLayer).toBeDefined();
53
- expect(profileLayer?.source).toBe('profile:none');
54
- });
55
- it('should include profile info in trace', async () => {
56
- // Create profile info
57
- const profileInfo = {
58
- name: 'test-profile',
59
- version: '1.2.0',
60
- manifestPath: path.join(testDir, 'profile.json'),
61
- exports: {},
62
- extends: []
63
- };
64
- const config = await getProductConfig({
65
- cwd: testDir,
66
- product: 'aiReview',
67
- cli: {}
68
- }, null, profileInfo);
69
- // Check trace includes profile info
70
- const profileLayer = config.trace.find(t => t.layer === 'profile');
71
- expect(profileLayer).toBeDefined();
72
- expect(profileLayer?.source).toContain('profile:test-profile');
73
- expect(profileLayer?.source).toContain('@1.2.0');
74
- });
75
- it('should handle profile errors gracefully', async () => {
76
- // Profile with invalid manifest path
77
- const profileInfo = {
78
- name: 'invalid-profile',
79
- version: '1.0.0',
80
- manifestPath: path.join(testDir, 'nonexistent', 'profile.json'),
81
- exports: {
82
- 'ai-review': {
83
- 'rules': 'artifacts/rules.yml'
84
- }
85
- },
86
- extends: []
87
- };
88
- // Should not throw, but log warning
89
- const config = await getProductConfig({
90
- cwd: testDir,
91
- product: 'aiReview',
92
- cli: {}
93
- }, null, profileInfo);
94
- expect(config.config).toBeDefined();
95
- // Profile layer should still be present
96
- const profileLayer = config.trace.find(t => t.layer === 'profile');
97
- expect(profileLayer).toBeDefined();
98
- });
99
- });
100
- //# sourceMappingURL=product-config-profiles.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-config-profiles.spec.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/product-config-profiles.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/product-config.spec.ts
3
- * Tests for product configuration system
4
- */
5
- export {};
6
- //# sourceMappingURL=product-config.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-config.spec.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/product-config.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,298 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/product-config.spec.ts
3
- * Tests for product configuration system
4
- */
5
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
- import { promises as fsp } from 'node:fs';
7
- import path from 'node:path';
8
- import { tmpdir } from 'node:os';
9
- import { getProductConfig, explainProductConfig } from '../api/product-config';
10
- import { clearCaches } from '../cache/fs-cache';
11
- import { toFsProduct, toConfigProduct } from '../utils/product-normalize';
12
- import { KbError } from '../errors/kb-error';
13
- describe('Product Configuration', () => {
14
- let testDir;
15
- beforeEach(async () => {
16
- testDir = path.join(tmpdir(), `kb-labs-config-test-${Date.now()}`);
17
- await fsp.mkdir(testDir, { recursive: true });
18
- clearCaches();
19
- });
20
- afterEach(async () => {
21
- await fsp.rm(testDir, { recursive: true, force: true });
22
- clearCaches();
23
- });
24
- describe('Product Normalization', () => {
25
- it('should convert ProductId to filesystem format', () => {
26
- expect(toFsProduct('aiReview')).toBe('ai-review');
27
- expect(toFsProduct('aiDocs')).toBe('ai-docs');
28
- expect(toFsProduct('devlink')).toBe('devlink');
29
- expect(toFsProduct('release')).toBe('release');
30
- expect(toFsProduct('devkit')).toBe('devkit');
31
- });
32
- it('should convert filesystem format to ProductId', () => {
33
- expect(toConfigProduct('ai-review')).toBe('aiReview');
34
- expect(toConfigProduct('ai-docs')).toBe('aiDocs');
35
- expect(toConfigProduct('devlink')).toBe('devlink');
36
- expect(toConfigProduct('release')).toBe('release');
37
- expect(toConfigProduct('devkit')).toBe('devkit');
38
- });
39
- });
40
- describe('getProductConfig', () => {
41
- it('should return runtime defaults when no config files exist', async () => {
42
- const result = await getProductConfig({
43
- cwd: testDir,
44
- product: 'aiReview',
45
- }, null);
46
- expect(result.config).toMatchObject({
47
- enabled: true,
48
- rules: [],
49
- });
50
- expect(result.trace.length).toBeGreaterThan(0);
51
- expect(result.trace[0]?.layer).toBe('runtime');
52
- });
53
- it('should merge workspace config', async () => {
54
- // Create workspace config
55
- const workspaceConfig = {
56
- schemaVersion: '1.0',
57
- products: {
58
- 'ai-review': {
59
- enabled: false,
60
- customSetting: 'test',
61
- },
62
- },
63
- };
64
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(workspaceConfig, null, 2));
65
- const result = await getProductConfig({
66
- cwd: testDir,
67
- product: 'aiReview',
68
- }, null);
69
- expect(result.config).toMatchObject({
70
- enabled: false,
71
- customSetting: 'test',
72
- });
73
- expect(result.trace.length).toBeGreaterThan(1);
74
- expect(result.trace.some(t => t.layer === 'workspace')).toBe(true);
75
- });
76
- it('should merge local config', async () => {
77
- // Create local config directory
78
- const localConfigDir = path.join(testDir, '.kb', 'ai-review');
79
- await fsp.mkdir(localConfigDir, { recursive: true });
80
- const localConfig = {
81
- $schema: 'https://schemas.kb-labs.dev/config.schema.json',
82
- schemaVersion: '1.0',
83
- enabled: false,
84
- localSetting: 'local-value',
85
- };
86
- await fsp.writeFile(path.join(localConfigDir, 'ai-review.config.json'), JSON.stringify(localConfig, null, 2));
87
- const result = await getProductConfig({
88
- cwd: testDir,
89
- product: 'aiReview',
90
- }, null);
91
- expect(result.config).toMatchObject({
92
- enabled: false,
93
- localSetting: 'local-value',
94
- });
95
- expect(result.trace.length).toBeGreaterThan(1);
96
- expect(result.trace.some(t => t.layer === 'local')).toBe(true);
97
- });
98
- it('should merge CLI overrides', async () => {
99
- const result = await getProductConfig({
100
- cwd: testDir,
101
- product: 'aiReview',
102
- cli: {
103
- enabled: false,
104
- debug: true,
105
- },
106
- }, null);
107
- expect(result.config).toMatchObject({
108
- enabled: false,
109
- debug: true,
110
- });
111
- expect(result.trace.length).toBeGreaterThan(1);
112
- expect(result.trace.some(t => t.layer === 'cli')).toBe(true);
113
- });
114
- it('should handle array overwrite', async () => {
115
- // Create workspace config with array
116
- const workspaceConfig = {
117
- schemaVersion: '1.0',
118
- products: {
119
- 'ai-review': {
120
- rules: ['workspace-rule'],
121
- },
122
- },
123
- };
124
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(workspaceConfig, null, 2));
125
- const result = await getProductConfig({
126
- cwd: testDir,
127
- product: 'aiReview',
128
- cli: {
129
- rules: ['cli-rule'],
130
- },
131
- }, null);
132
- expect(result.config.rules).toEqual(['cli-rule']);
133
- expect(result.trace.length).toBeGreaterThan(2);
134
- expect(result.trace.some(t => t.type === 'overwriteArray')).toBe(true);
135
- });
136
- });
137
- describe('explainProductConfig', () => {
138
- it('should return trace without resolving config', async () => {
139
- const result = await explainProductConfig({
140
- cwd: testDir,
141
- product: 'aiReview',
142
- }, null);
143
- expect(result.trace.length).toBeGreaterThan(0);
144
- expect(result.trace[0].layer).toBe('runtime');
145
- });
146
- });
147
- describe('Error Handling', () => {
148
- it('should throw KbError for invalid config', async () => {
149
- // Create invalid JSON config
150
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), '{ invalid json }');
151
- await expect(getProductConfig({
152
- cwd: testDir,
153
- product: 'aiReview',
154
- }, null)).rejects.toThrow(KbError);
155
- });
156
- it('should handle preset resolution failures', async () => {
157
- // Create config with invalid preset
158
- const workspaceConfig = {
159
- schemaVersion: '1.0',
160
- preset: 'nonexistent/preset',
161
- products: {
162
- 'ai-review': {
163
- enabled: true,
164
- },
165
- },
166
- };
167
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(workspaceConfig, null, 2));
168
- // The function should handle invalid presets gracefully and fall back to defaults
169
- const result = await getProductConfig({
170
- cwd: testDir,
171
- product: 'aiReview',
172
- }, null);
173
- expect(result.config).toMatchObject({
174
- enabled: true,
175
- rules: [],
176
- });
177
- });
178
- it('should handle merge conflicts gracefully', async () => {
179
- // Create conflicting configs
180
- const workspaceConfig = {
181
- schemaVersion: '1.0',
182
- products: {
183
- 'ai-review': {
184
- enabled: true,
185
- rules: ['workspace-rule'],
186
- },
187
- },
188
- };
189
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(workspaceConfig, null, 2));
190
- const localConfigDir = path.join(testDir, '.kb', 'ai-review');
191
- await fsp.mkdir(localConfigDir, { recursive: true });
192
- const localConfig = {
193
- $schema: 'https://schemas.kb-labs.dev/config.schema.json',
194
- schemaVersion: '1.0',
195
- enabled: false,
196
- rules: ['local-rule'],
197
- };
198
- await fsp.writeFile(path.join(localConfigDir, 'ai-review.config.json'), JSON.stringify(localConfig, null, 2));
199
- const result = await getProductConfig({
200
- cwd: testDir,
201
- product: 'aiReview',
202
- }, null);
203
- // Local config should override workspace
204
- expect(result.config).toMatchObject({
205
- enabled: false,
206
- rules: ['local-rule'],
207
- });
208
- });
209
- it('should handle missing product in config', async () => {
210
- // Create config without the product
211
- const workspaceConfig = {
212
- schemaVersion: '1.0',
213
- products: {
214
- 'other-product': {
215
- enabled: true,
216
- },
217
- },
218
- };
219
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(workspaceConfig, null, 2));
220
- const result = await getProductConfig({
221
- cwd: testDir,
222
- product: 'aiReview',
223
- }, null);
224
- // Should fall back to runtime defaults
225
- expect(result.config).toMatchObject({
226
- enabled: true,
227
- rules: [],
228
- });
229
- });
230
- it('should handle invalid product configuration structure', async () => {
231
- // Create config with invalid product structure
232
- const workspaceConfig = {
233
- schemaVersion: '1.0',
234
- products: {
235
- 'ai-review': 'invalid-string-instead-of-object',
236
- },
237
- };
238
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(workspaceConfig, null, 2));
239
- // The function should handle invalid structures gracefully
240
- const result = await getProductConfig({
241
- cwd: testDir,
242
- product: 'aiReview',
243
- }, null);
244
- // Should handle invalid structure gracefully
245
- expect(result.config).toBe('invalid-string-instead-of-object');
246
- });
247
- it('should handle circular references in config', async () => {
248
- // Create config that might cause circular references
249
- const workspaceConfig = {
250
- schemaVersion: '1.0',
251
- products: {
252
- 'ai-review': {
253
- enabled: true,
254
- circularRef: null,
255
- },
256
- },
257
- };
258
- workspaceConfig.products['ai-review'].circularRef = workspaceConfig;
259
- // JSON.stringify will fail with circular references, so we'll create a simpler test
260
- const simpleConfig = {
261
- schemaVersion: '1.0',
262
- products: {
263
- 'ai-review': {
264
- enabled: true,
265
- },
266
- },
267
- };
268
- await fsp.writeFile(path.join(testDir, 'kb-labs.config.json'), JSON.stringify(simpleConfig, null, 2));
269
- // Should handle gracefully
270
- const result = await getProductConfig({
271
- cwd: testDir,
272
- product: 'aiReview',
273
- }, null);
274
- expect(result.config).toMatchObject({
275
- enabled: true,
276
- });
277
- });
278
- it('should handle file system errors', async () => {
279
- // Create directory that can't be read
280
- const restrictedDir = path.join(testDir, 'restricted');
281
- await fsp.mkdir(restrictedDir, { recursive: true });
282
- await fsp.chmod(restrictedDir, 0o000); // Remove all permissions
283
- // The function should handle permission errors gracefully
284
- const result = await getProductConfig({
285
- cwd: restrictedDir,
286
- product: 'aiReview',
287
- }, null);
288
- // Should fall back to runtime defaults
289
- expect(result.config).toMatchObject({
290
- enabled: true,
291
- rules: [],
292
- });
293
- // Restore permissions for cleanup
294
- await fsp.chmod(restrictedDir, 0o755);
295
- });
296
- });
297
- });
298
- //# sourceMappingURL=product-config.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-config.spec.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/product-config.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=runtime.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.spec.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/runtime.spec.ts"],"names":[],"mappings":""}