@kb-labs/devkit 1.4.0 → 2.6.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 +7 -6
  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,153 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/fs-atomic.spec.ts
3
- * Tests for atomic file operations and workspace validation
4
- */
5
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
6
- import { promises as fsp } from 'node:fs';
7
- import path from 'node:path';
8
- import { tmpdir } from 'node:os';
9
- import { writeFileAtomic, ensureWithinWorkspace } from '../utils/fs-atomic';
10
- import { KbError } from '../errors/kb-error';
11
- describe('fs-atomic', () => {
12
- let testDir;
13
- beforeEach(async () => {
14
- testDir = path.join(tmpdir(), `kb-labs-fs-atomic-test-${Date.now()}`);
15
- await fsp.mkdir(testDir, { recursive: true });
16
- });
17
- afterEach(async () => {
18
- await fsp.rm(testDir, { recursive: true, force: true });
19
- });
20
- describe('writeFileAtomic', () => {
21
- it('should write file atomically', async () => {
22
- const filePath = path.join(testDir, 'test.txt');
23
- const content = 'Hello, World!';
24
- await writeFileAtomic(filePath, content);
25
- const result = await fsp.readFile(filePath, 'utf-8');
26
- expect(result).toBe(content);
27
- });
28
- it('should create parent directories', async () => {
29
- const filePath = path.join(testDir, 'nested', 'deep', 'test.txt');
30
- const content = 'Nested content';
31
- await writeFileAtomic(filePath, content);
32
- const result = await fsp.readFile(filePath, 'utf-8');
33
- expect(result).toBe(content);
34
- });
35
- it('should handle Uint8Array data', async () => {
36
- const filePath = path.join(testDir, 'binary.txt');
37
- const content = new Uint8Array([72, 101, 108, 108, 111]); // "Hello"
38
- await writeFileAtomic(filePath, content);
39
- const result = await fsp.readFile(filePath);
40
- expect(Array.from(result)).toEqual(Array.from(content));
41
- });
42
- it('should clean up temp file on error', async () => {
43
- const filePath = path.join(testDir, 'test.txt');
44
- // Mock fs.writeFile to throw error
45
- const originalWriteFile = fsp.writeFile;
46
- vi.spyOn(fsp, 'writeFile').mockRejectedValueOnce(new Error('Write failed'));
47
- await expect(writeFileAtomic(filePath, 'content')).rejects.toThrow('Write failed');
48
- // Check that temp file was cleaned up
49
- const files = await fsp.readdir(testDir);
50
- const tempFiles = files.filter(f => f.startsWith('test.txt.tmp-'));
51
- expect(tempFiles).toHaveLength(0);
52
- // Restore original function
53
- vi.restoreAllMocks();
54
- });
55
- it('should handle cleanup errors gracefully', async () => {
56
- const filePath = path.join(testDir, 'test.txt');
57
- // Mock fs.writeFile to throw error
58
- const originalWriteFile = fsp.writeFile;
59
- const originalUnlink = fsp.unlink;
60
- vi.spyOn(fsp, 'writeFile').mockRejectedValueOnce(new Error('Write failed'));
61
- vi.spyOn(fsp, 'unlink').mockRejectedValueOnce(new Error('Cleanup failed'));
62
- // Should not throw cleanup error
63
- await expect(writeFileAtomic(filePath, 'content')).rejects.toThrow('Write failed');
64
- // Restore original functions
65
- vi.restoreAllMocks();
66
- });
67
- it('should overwrite existing file', async () => {
68
- const filePath = path.join(testDir, 'existing.txt');
69
- const originalContent = 'Original content';
70
- const newContent = 'New content';
71
- // Create original file
72
- await fsp.writeFile(filePath, originalContent);
73
- // Overwrite atomically
74
- await writeFileAtomic(filePath, newContent);
75
- const result = await fsp.readFile(filePath, 'utf-8');
76
- expect(result).toBe(newContent);
77
- });
78
- it('should generate unique temp file names', async () => {
79
- const filePath = path.join(testDir, 'test.txt');
80
- const content = 'content';
81
- // Mock Date.now and Math.random for predictable temp names
82
- const mockDateNow = vi.spyOn(Date, 'now').mockReturnValue(1234567890);
83
- const mockMathRandom = vi.spyOn(Math, 'random').mockReturnValue(0.5);
84
- await writeFileAtomic(filePath, content);
85
- // Check that temp file name was generated correctly
86
- const files = await fsp.readdir(testDir);
87
- expect(files).toContain('test.txt');
88
- mockDateNow.mockRestore();
89
- mockMathRandom.mockRestore();
90
- });
91
- });
92
- describe('ensureWithinWorkspace', () => {
93
- it('should allow paths within workspace', () => {
94
- const workspaceRoot = '/workspace';
95
- const targetPath = '/workspace/subdir/file.txt';
96
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).not.toThrow();
97
- });
98
- it('should allow relative paths within workspace', () => {
99
- const workspaceRoot = '/workspace';
100
- const targetPath = path.join(workspaceRoot, 'subdir', 'file.txt');
101
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).not.toThrow();
102
- });
103
- it('should throw error for paths outside workspace', () => {
104
- const workspaceRoot = '/workspace';
105
- const targetPath = '/outside/file.txt';
106
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).toThrow(KbError);
107
- });
108
- it('should throw error for paths that escape via ..', () => {
109
- const workspaceRoot = '/workspace';
110
- const targetPath = '/workspace/../outside/file.txt';
111
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).toThrow(KbError);
112
- });
113
- it('should handle edge case with trailing slashes', () => {
114
- const workspaceRoot = '/workspace/';
115
- const targetPath = '/workspace/file.txt';
116
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).not.toThrow();
117
- });
118
- it('should handle same directory as workspace', () => {
119
- const workspaceRoot = '/workspace';
120
- const targetPath = '/workspace';
121
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).not.toThrow();
122
- });
123
- it('should throw error with correct error details', () => {
124
- const workspaceRoot = '/workspace';
125
- const targetPath = '/outside/file.txt';
126
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).toThrow(expect.objectContaining({
127
- code: 'ERR_PATH_OUTSIDE_WORKSPACE',
128
- message: 'Refusing to write outside workspace: /outside/file.txt',
129
- hint: 'Check cwd or use a relative path within the workspace',
130
- meta: {
131
- targetPath: '/outside/file.txt',
132
- workspaceRoot: '/workspace',
133
- },
134
- }));
135
- });
136
- it('should handle empty workspace root', () => {
137
- const workspaceRoot = '';
138
- const targetPath = '/some/path';
139
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).toThrow(KbError);
140
- });
141
- it('should handle empty target path', () => {
142
- const workspaceRoot = '/workspace';
143
- const targetPath = '';
144
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).toThrow(KbError);
145
- });
146
- it('should resolve paths correctly', () => {
147
- const workspaceRoot = '/workspace';
148
- const targetPath = path.resolve(workspaceRoot, 'subdir', '..', 'subdir', 'file.txt');
149
- expect(() => ensureWithinWorkspace(targetPath, workspaceRoot)).not.toThrow();
150
- });
151
- });
152
- });
153
- //# sourceMappingURL=fs-atomic.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-atomic.spec.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/fs-atomic.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,eAAe,CAAC;YAEhC,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,gBAAgB,CAAC;YAEjC,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU;YAEpE,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAEhD,mCAAmC;YACnC,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;YACxC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YAE5E,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAEnF,sCAAsC;YACtC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAElC,4BAA4B;YAC5B,EAAE,CAAC,eAAe,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAEhD,mCAAmC;YACnC,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;YACxC,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC;YAElC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YAC5E,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE3E,iCAAiC;YACjC,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAEnF,6BAA6B;YAC7B,EAAE,CAAC,eAAe,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACpD,MAAM,eAAe,GAAG,kBAAkB,CAAC;YAC3C,MAAM,UAAU,GAAG,aAAa,CAAC;YAEjC,uBAAuB;YACvB,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAE/C,uBAAuB;YACvB,MAAM,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,SAAS,CAAC;YAE1B,2DAA2D;YAC3D,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtE,MAAM,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAErE,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEzC,oDAAoD;YACpD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAEpC,WAAW,CAAC,WAAW,EAAE,CAAC;YAC1B,cAAc,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,4BAA4B,CAAC;YAEhD,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAElE,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,mBAAmB,CAAC;YAEvC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,gCAAgC,CAAC;YAEpD,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,aAAa,GAAG,aAAa,CAAC;YACpC,MAAM,UAAU,GAAG,qBAAqB,CAAC;YAEzC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,YAAY,CAAC;YAEhC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,mBAAmB,CAAC;YAEvC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CACpE,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,4BAA4B;gBAClC,OAAO,EAAE,wDAAwD;gBACjE,IAAI,EAAE,uDAAuD;gBAC7D,IAAI,EAAE;oBACJ,UAAU,EAAE,mBAAmB;oBAC/B,aAAa,EAAE,YAAY;iBAC5B;aACF,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,aAAa,GAAG,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,YAAY,CAAC;YAEhC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,EAAE,CAAC;YAEtB,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAErF,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core-config/__tests__/init-workspace
3
- * Smoke tests for initWorkspaceConfig
4
- */
5
- export {};
6
- //# sourceMappingURL=init-workspace.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-workspace.spec.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/init-workspace.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,99 +0,0 @@
1
- /**
2
- * @module @kb-labs/core-config/__tests__/init-workspace
3
- * Smoke tests for initWorkspaceConfig
4
- */
5
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
- import { promises as fs } from 'node:fs';
7
- import path from 'node:path';
8
- import { initWorkspaceConfig } from '../api/init-workspace';
9
- import os from 'node:os';
10
- describe('initWorkspaceConfig', () => {
11
- let tmpDir;
12
- beforeEach(async () => {
13
- tmpDir = path.join(os.tmpdir(), `kb-test-${Date.now()}-${Math.random()}`);
14
- await fs.mkdir(tmpDir, { recursive: true });
15
- });
16
- afterEach(async () => {
17
- await fs.rm(tmpDir, { recursive: true, force: true });
18
- });
19
- it('creates new workspace config in YAML format', async () => {
20
- const result = await initWorkspaceConfig({
21
- cwd: tmpDir,
22
- format: 'yaml',
23
- profiles: { default: 'node-ts-lib' },
24
- products: ['aiReview'],
25
- });
26
- expect(result.created).toHaveLength(1);
27
- expect(result.created[0]).toMatch(/kb-labs\.config\.yaml$/);
28
- const configPath = path.join(tmpDir, 'kb-labs.config.yaml');
29
- const content = await fs.readFile(configPath, 'utf-8');
30
- expect(content).toContain('schemaVersion: "1.0"');
31
- expect(content).toContain('node-ts-lib');
32
- expect(content).toContain('aiReview');
33
- });
34
- it('creates new workspace config in JSON format', async () => {
35
- const result = await initWorkspaceConfig({
36
- cwd: tmpDir,
37
- format: 'json',
38
- profiles: { default: 'node-ts-lib' },
39
- products: ['aiReview'],
40
- });
41
- expect(result.created).toHaveLength(1);
42
- expect(result.created[0]).toMatch(/kb-labs\.config\.json$/);
43
- const configPath = path.join(tmpDir, 'kb-labs.config.json');
44
- const content = await fs.readFile(configPath, 'utf-8');
45
- const parsed = JSON.parse(content);
46
- expect(parsed.schemaVersion).toBe('1.0');
47
- expect(parsed.profiles.default).toBe('node-ts-lib');
48
- expect(parsed.products).toHaveProperty('aiReview');
49
- });
50
- it('is idempotent - second run skips unchanged config', async () => {
51
- // First run
52
- await initWorkspaceConfig({
53
- cwd: tmpDir,
54
- format: 'yaml',
55
- profiles: { default: 'node-ts-lib' },
56
- products: ['aiReview'],
57
- });
58
- // Second run with same options
59
- const result2 = await initWorkspaceConfig({
60
- cwd: tmpDir,
61
- format: 'yaml',
62
- profiles: { default: 'node-ts-lib' },
63
- products: ['aiReview'],
64
- });
65
- expect(result2.skipped).toHaveLength(1);
66
- expect(result2.created).toHaveLength(0);
67
- expect(result2.updated).toHaveLength(0);
68
- });
69
- it('detects conflicts without --force', async () => {
70
- // Create initial config
71
- const configPath = path.join(tmpDir, 'kb-labs.config.yaml');
72
- await fs.writeFile(configPath, 'schemaVersion: "1.0"\nprofiles: {}\n', 'utf-8');
73
- // Try to overwrite with different content
74
- const result = await initWorkspaceConfig({
75
- cwd: tmpDir,
76
- format: 'yaml',
77
- profiles: { default: 'different-profile' },
78
- products: ['aiReview'],
79
- force: false,
80
- });
81
- const conflicts = result.actions.filter(a => a.kind === 'conflict');
82
- expect(conflicts.length).toBeGreaterThan(0);
83
- expect(result.warnings.length).toBeGreaterThan(0);
84
- });
85
- it('supports dry-run mode', async () => {
86
- const result = await initWorkspaceConfig({
87
- cwd: tmpDir,
88
- format: 'yaml',
89
- profiles: { default: 'node-ts-lib' },
90
- products: ['aiReview'],
91
- dryRun: true,
92
- });
93
- expect(result.actions.length).toBeGreaterThan(0);
94
- // File should not actually be created
95
- const configPath = path.join(tmpDir, 'kb-labs.config.yaml');
96
- await expect(fs.access(configPath)).rejects.toThrow();
97
- });
98
- });
99
- //# sourceMappingURL=init-workspace.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-workspace.spec.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/init-workspace.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/kb-error.spec.ts
3
- * Tests for KbError class and error utilities
4
- */
5
- export {};
6
- //# sourceMappingURL=kb-error.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kb-error.spec.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/kb-error.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,190 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/kb-error.spec.ts
3
- * Tests for KbError class and error utilities
4
- */
5
- import { describe, it, expect } from 'vitest';
6
- import { KbError, getExitCode, ERROR_HINTS } from '../errors/kb-error';
7
- describe('KbError', () => {
8
- describe('constructor', () => {
9
- it('should create error with all parameters', () => {
10
- const error = new KbError('ERR_TEST', 'Test error message', 'Test hint', { test: 'meta' });
11
- expect(error.code).toBe('ERR_TEST');
12
- expect(error.message).toBe('Test error message');
13
- expect(error.hint).toBe('Test hint');
14
- expect(error.meta).toEqual({ test: 'meta' });
15
- expect(error.name).toBe('KbError');
16
- expect(error).toBeInstanceOf(Error);
17
- });
18
- it('should create error with minimal parameters', () => {
19
- const error = new KbError('ERR_MINIMAL', 'Minimal error');
20
- expect(error.code).toBe('ERR_MINIMAL');
21
- expect(error.message).toBe('Minimal error');
22
- expect(error.hint).toBeUndefined();
23
- expect(error.meta).toBeUndefined();
24
- expect(error.name).toBe('KbError');
25
- });
26
- it('should create error with code and message only', () => {
27
- const error = new KbError('ERR_CODE_ONLY', 'Code only message');
28
- expect(error.code).toBe('ERR_CODE_ONLY');
29
- expect(error.message).toBe('Code only message');
30
- expect(error.hint).toBeUndefined();
31
- expect(error.meta).toBeUndefined();
32
- });
33
- it('should create error with hint but no meta', () => {
34
- const error = new KbError('ERR_HINT_ONLY', 'Hint only message', 'Hint without meta');
35
- expect(error.code).toBe('ERR_HINT_ONLY');
36
- expect(error.message).toBe('Hint only message');
37
- expect(error.hint).toBe('Hint without meta');
38
- expect(error.meta).toBeUndefined();
39
- });
40
- it('should create error with meta but no hint', () => {
41
- const error = new KbError('ERR_META_ONLY', 'Meta only message', undefined, { meta: 'data' });
42
- expect(error.code).toBe('ERR_META_ONLY');
43
- expect(error.message).toBe('Meta only message');
44
- expect(error.hint).toBeUndefined();
45
- expect(error.meta).toEqual({ meta: 'data' });
46
- });
47
- it('should handle complex meta objects', () => {
48
- const complexMeta = {
49
- nested: { value: 42 },
50
- array: [1, 2, 3],
51
- nullValue: null,
52
- undefinedValue: undefined,
53
- };
54
- const error = new KbError('ERR_COMPLEX', 'Complex meta error', 'Complex hint', complexMeta);
55
- expect(error.meta).toEqual(complexMeta);
56
- });
57
- it('should handle empty string parameters', () => {
58
- const error = new KbError('', '', '', {});
59
- expect(error.code).toBe('');
60
- expect(error.message).toBe('');
61
- expect(error.hint).toBe('');
62
- expect(error.meta).toEqual({});
63
- });
64
- });
65
- describe('inheritance', () => {
66
- it('should be instanceof Error', () => {
67
- const error = new KbError('ERR_INHERITANCE', 'Test');
68
- expect(error).toBeInstanceOf(Error);
69
- });
70
- it('should be instanceof KbError', () => {
71
- const error = new KbError('ERR_INHERITANCE', 'Test');
72
- expect(error).toBeInstanceOf(KbError);
73
- });
74
- it('should have Error prototype methods', () => {
75
- const error = new KbError('ERR_METHODS', 'Test message');
76
- expect(typeof error.toString).toBe('function');
77
- expect(typeof error.stack).toBe('string');
78
- });
79
- });
80
- describe('serialization', () => {
81
- it('should serialize to JSON correctly', () => {
82
- const error = new KbError('ERR_SERIALIZE', 'Serialization test', 'Test hint', { test: 'data' });
83
- // Error objects don't serialize custom properties by default
84
- // We need to manually serialize them
85
- const errorData = {
86
- code: error.code,
87
- message: error.message,
88
- hint: error.hint,
89
- meta: error.meta,
90
- };
91
- const serialized = JSON.stringify(errorData);
92
- const parsed = JSON.parse(serialized);
93
- expect(parsed.code).toBe('ERR_SERIALIZE');
94
- expect(parsed.message).toBe('Serialization test');
95
- expect(parsed.hint).toBe('Test hint');
96
- expect(parsed.meta).toEqual({ test: 'data' });
97
- });
98
- it('should handle undefined values in serialization', () => {
99
- const error = new KbError('ERR_UNDEFINED', 'Test');
100
- const errorData = {
101
- code: error.code,
102
- message: error.message,
103
- hint: error.hint,
104
- meta: error.meta,
105
- };
106
- const serialized = JSON.stringify(errorData);
107
- const parsed = JSON.parse(serialized);
108
- expect(parsed.code).toBe('ERR_UNDEFINED');
109
- expect(parsed.message).toBe('Test');
110
- expect(parsed.hint).toBeUndefined();
111
- expect(parsed.meta).toBeUndefined();
112
- });
113
- });
114
- });
115
- describe('getExitCode', () => {
116
- it('should return 3 for ERR_FORBIDDEN', () => {
117
- const error = new KbError('ERR_FORBIDDEN', 'Forbidden');
118
- expect(getExitCode(error)).toBe(3);
119
- });
120
- it('should return 2 for ERR_CONFIG_NOT_FOUND', () => {
121
- const error = new KbError('ERR_CONFIG_NOT_FOUND', 'Config not found');
122
- expect(getExitCode(error)).toBe(2);
123
- });
124
- it('should return 2 for ERR_CONFIG_EXISTS_CONFLICT', () => {
125
- const error = new KbError('ERR_CONFIG_EXISTS_CONFLICT', 'Config exists');
126
- expect(getExitCode(error)).toBe(2);
127
- });
128
- it('should return 2 for ERR_PATH_OUTSIDE_WORKSPACE', () => {
129
- const error = new KbError('ERR_PATH_OUTSIDE_WORKSPACE', 'Path outside');
130
- expect(getExitCode(error)).toBe(2);
131
- });
132
- it('should return 1 for other ERR_ codes', () => {
133
- const error = new KbError('ERR_OTHER', 'Other error');
134
- expect(getExitCode(error)).toBe(1);
135
- });
136
- it('should return 1 for non-ERR codes', () => {
137
- const error = new KbError('OTHER_CODE', 'Other code');
138
- expect(getExitCode(error)).toBe(1);
139
- });
140
- it('should return 1 for empty code', () => {
141
- const error = new KbError('', 'Empty code');
142
- expect(getExitCode(error)).toBe(1);
143
- });
144
- });
145
- describe('ERROR_HINTS', () => {
146
- it('should contain all expected error codes', () => {
147
- const expectedCodes = [
148
- 'ERR_CONFIG_NOT_FOUND',
149
- 'ERR_CONFIG_INVALID',
150
- 'ERR_CONFIG_EXISTS_CONFLICT',
151
- 'ERR_PATH_OUTSIDE_WORKSPACE',
152
- 'ERR_PRESET_NOT_RESOLVED',
153
- 'ERR_PROFILE_INCOMPATIBLE',
154
- 'ERR_PROFILE_NOT_DEFINED',
155
- 'ERR_PROFILE_RESOLVE_FAILED',
156
- 'ERR_PROFILE_INVALID_FORMAT',
157
- 'ERR_ARTIFACT_LIMIT_EXCEEDED',
158
- 'ERR_FORBIDDEN',
159
- ];
160
- expectedCodes.forEach(code => {
161
- expect(ERROR_HINTS[code]).toBeDefined();
162
- expect(typeof ERROR_HINTS[code]).toBe('string');
163
- expect(ERROR_HINTS[code].length).toBeGreaterThan(0);
164
- });
165
- });
166
- it('should have helpful hints for each error', () => {
167
- expect(ERROR_HINTS.ERR_CONFIG_NOT_FOUND).toContain('kb init');
168
- expect(ERROR_HINTS.ERR_CONFIG_INVALID).toContain('syntax');
169
- expect(ERROR_HINTS.ERR_CONFIG_EXISTS_CONFLICT).toContain('--force');
170
- expect(ERROR_HINTS.ERR_PATH_OUTSIDE_WORKSPACE).toContain('workspace');
171
- expect(ERROR_HINTS.ERR_PRESET_NOT_RESOLVED).toContain('preset');
172
- expect(ERROR_HINTS.ERR_PROFILE_INCOMPATIBLE).toContain('incompatible');
173
- expect(ERROR_HINTS.ERR_PROFILE_NOT_DEFINED).toContain('profiles.default');
174
- expect(ERROR_HINTS.ERR_PROFILE_RESOLVE_FAILED).toContain('pnpm add');
175
- expect(ERROR_HINTS.ERR_PROFILE_INVALID_FORMAT).toContain('kb init profile');
176
- expect(ERROR_HINTS.ERR_ARTIFACT_LIMIT_EXCEEDED).toContain('artifacts');
177
- expect(ERROR_HINTS.ERR_FORBIDDEN).toContain('policy');
178
- });
179
- it('should be readonly', () => {
180
- // TypeScript should prevent this, but let's verify runtime behavior
181
- const originalValue = ERROR_HINTS.ERR_CONFIG_NOT_FOUND;
182
- // Try to modify (this won't actually modify the const object)
183
- ERROR_HINTS.ERR_CONFIG_NOT_FOUND = 'Modified';
184
- // The original should still be there because it's a const object
185
- // But in JavaScript, const objects can still have their properties modified
186
- // So we'll just verify the original value exists
187
- expect(originalValue).toBe('Create kb-labs.config.yaml or run: kb init');
188
- });
189
- });
190
- //# sourceMappingURL=kb-error.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kb-error.spec.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/kb-error.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/__tests__/preset-lockfile.spec.ts
3
- * Tests for preset resolution and lockfile functionality
4
- */
5
- export {};
6
- //# sourceMappingURL=preset-lockfile.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset-lockfile.spec.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/__tests__/preset-lockfile.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}