@kb-labs/core-config 1.2.0 → 1.4.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 (173) hide show
  1. package/dist/index.d.ts +1016 -25
  2. package/dist/index.js +1533 -29
  3. package/dist/index.js.map +1 -1
  4. package/package.json +2 -2
  5. package/dist/__tests__/cache.spec.d.ts +0 -6
  6. package/dist/__tests__/cache.spec.d.ts.map +0 -1
  7. package/dist/__tests__/cache.spec.js +0 -87
  8. package/dist/__tests__/cache.spec.js.map +0 -1
  9. package/dist/__tests__/fs-atomic.spec.d.ts +0 -6
  10. package/dist/__tests__/fs-atomic.spec.d.ts.map +0 -1
  11. package/dist/__tests__/fs-atomic.spec.js +0 -153
  12. package/dist/__tests__/fs-atomic.spec.js.map +0 -1
  13. package/dist/__tests__/get-product-config-edge-cases.spec.d.ts +0 -6
  14. package/dist/__tests__/get-product-config-edge-cases.spec.d.ts.map +0 -1
  15. package/dist/__tests__/get-product-config-edge-cases.spec.js +0 -334
  16. package/dist/__tests__/get-product-config-edge-cases.spec.js.map +0 -1
  17. package/dist/__tests__/init-workspace.spec.d.ts +0 -6
  18. package/dist/__tests__/init-workspace.spec.d.ts.map +0 -1
  19. package/dist/__tests__/init-workspace.spec.js +0 -101
  20. package/dist/__tests__/init-workspace.spec.js.map +0 -1
  21. package/dist/__tests__/kb-error.spec.d.ts +0 -6
  22. package/dist/__tests__/kb-error.spec.d.ts.map +0 -1
  23. package/dist/__tests__/kb-error.spec.js +0 -193
  24. package/dist/__tests__/kb-error.spec.js.map +0 -1
  25. package/dist/__tests__/preset-lockfile.spec.d.ts +0 -6
  26. package/dist/__tests__/preset-lockfile.spec.d.ts.map +0 -1
  27. package/dist/__tests__/preset-lockfile.spec.js +0 -142
  28. package/dist/__tests__/preset-lockfile.spec.js.map +0 -1
  29. package/dist/__tests__/product-config-profiles.spec.d.ts +0 -6
  30. package/dist/__tests__/product-config-profiles.spec.d.ts.map +0 -1
  31. package/dist/__tests__/product-config-profiles.spec.js +0 -82
  32. package/dist/__tests__/product-config-profiles.spec.js.map +0 -1
  33. package/dist/__tests__/product-config.spec.d.ts +0 -6
  34. package/dist/__tests__/product-config.spec.d.ts.map +0 -1
  35. package/dist/__tests__/product-config.spec.js +0 -304
  36. package/dist/__tests__/product-config.spec.js.map +0 -1
  37. package/dist/__tests__/profiles-demo.d.ts +0 -11
  38. package/dist/__tests__/profiles-demo.d.ts.map +0 -1
  39. package/dist/__tests__/profiles-demo.js +0 -173
  40. package/dist/__tests__/profiles-demo.js.map +0 -1
  41. package/dist/__tests__/profiles-resolver.spec.d.ts +0 -2
  42. package/dist/__tests__/profiles-resolver.spec.d.ts.map +0 -1
  43. package/dist/__tests__/profiles-resolver.spec.js +0 -114
  44. package/dist/__tests__/profiles-resolver.spec.js.map +0 -1
  45. package/dist/__tests__/profiles-section.spec.d.ts +0 -2
  46. package/dist/__tests__/profiles-section.spec.d.ts.map +0 -1
  47. package/dist/__tests__/profiles-section.spec.js +0 -50
  48. package/dist/__tests__/profiles-section.spec.js.map +0 -1
  49. package/dist/__tests__/runtime.spec.d.ts +0 -2
  50. package/dist/__tests__/runtime.spec.d.ts.map +0 -1
  51. package/dist/__tests__/runtime.spec.js +0 -170
  52. package/dist/__tests__/runtime.spec.js.map +0 -1
  53. package/dist/__tests__/upsert-lockfile.spec.d.ts +0 -1
  54. package/dist/__tests__/upsert-lockfile.spec.d.ts.map +0 -1
  55. package/dist/__tests__/upsert-lockfile.spec.js +0 -2
  56. package/dist/__tests__/upsert-lockfile.spec.js.map +0 -1
  57. package/dist/__tests__/validate-config.spec.d.ts +0 -2
  58. package/dist/__tests__/validate-config.spec.d.ts.map +0 -1
  59. package/dist/__tests__/validate-config.spec.js +0 -14
  60. package/dist/__tests__/validate-config.spec.js.map +0 -1
  61. package/dist/api/init-workspace.d.ts +0 -10
  62. package/dist/api/init-workspace.d.ts.map +0 -1
  63. package/dist/api/init-workspace.js +0 -186
  64. package/dist/api/init-workspace.js.map +0 -1
  65. package/dist/api/product-config.d.ts +0 -20
  66. package/dist/api/product-config.d.ts.map +0 -1
  67. package/dist/api/product-config.js +0 -236
  68. package/dist/api/product-config.js.map +0 -1
  69. package/dist/api/read-config.d.ts +0 -22
  70. package/dist/api/read-config.d.ts.map +0 -1
  71. package/dist/api/read-config.js +0 -112
  72. package/dist/api/read-config.js.map +0 -1
  73. package/dist/api/read-kb-config.d.ts +0 -12
  74. package/dist/api/read-kb-config.d.ts.map +0 -1
  75. package/dist/api/read-kb-config.js +0 -47
  76. package/dist/api/read-kb-config.js.map +0 -1
  77. package/dist/api/upsert-lockfile.d.ts +0 -10
  78. package/dist/api/upsert-lockfile.d.ts.map +0 -1
  79. package/dist/api/upsert-lockfile.js +0 -63
  80. package/dist/api/upsert-lockfile.js.map +0 -1
  81. package/dist/cache/fs-cache.d.ts +0 -38
  82. package/dist/cache/fs-cache.d.ts.map +0 -1
  83. package/dist/cache/fs-cache.js +0 -142
  84. package/dist/cache/fs-cache.js.map +0 -1
  85. package/dist/errors/kb-error.d.ts +0 -35
  86. package/dist/errors/kb-error.d.ts.map +0 -1
  87. package/dist/errors/kb-error.js +0 -57
  88. package/dist/errors/kb-error.js.map +0 -1
  89. package/dist/hash/config-hash.d.ts +0 -17
  90. package/dist/hash/config-hash.d.ts.map +0 -1
  91. package/dist/hash/config-hash.js +0 -55
  92. package/dist/hash/config-hash.js.map +0 -1
  93. package/dist/index.d.ts.map +0 -1
  94. package/dist/lockfile/lockfile.d.ts +0 -53
  95. package/dist/lockfile/lockfile.d.ts.map +0 -1
  96. package/dist/lockfile/lockfile.js +0 -142
  97. package/dist/lockfile/lockfile.js.map +0 -1
  98. package/dist/merge/layered-merge.d.ts +0 -16
  99. package/dist/merge/layered-merge.d.ts.map +0 -1
  100. package/dist/merge/layered-merge.js +0 -87
  101. package/dist/merge/layered-merge.js.map +0 -1
  102. package/dist/preset/resolve-preset.d.ts +0 -28
  103. package/dist/preset/resolve-preset.d.ts.map +0 -1
  104. package/dist/preset/resolve-preset.js +0 -104
  105. package/dist/preset/resolve-preset.js.map +0 -1
  106. package/dist/profiles/loader.d.ts +0 -12
  107. package/dist/profiles/loader.d.ts.map +0 -1
  108. package/dist/profiles/loader.js +0 -34
  109. package/dist/profiles/loader.js.map +0 -1
  110. package/dist/profiles/resolver.d.ts +0 -11
  111. package/dist/profiles/resolver.d.ts.map +0 -1
  112. package/dist/profiles/resolver.js +0 -252
  113. package/dist/profiles/resolver.js.map +0 -1
  114. package/dist/profiles/scope-selector.d.ts +0 -19
  115. package/dist/profiles/scope-selector.d.ts.map +0 -1
  116. package/dist/profiles/scope-selector.js +0 -64
  117. package/dist/profiles/scope-selector.js.map +0 -1
  118. package/dist/profiles/types.d.ts +0 -462
  119. package/dist/profiles/types.d.ts.map +0 -1
  120. package/dist/profiles/types.js +0 -68
  121. package/dist/profiles/types.js.map +0 -1
  122. package/dist/runtime/index.d.ts +0 -2
  123. package/dist/runtime/index.d.ts.map +0 -1
  124. package/dist/runtime/index.js +0 -2
  125. package/dist/runtime/index.js.map +0 -1
  126. package/dist/runtime/runtime.d.ts +0 -46
  127. package/dist/runtime/runtime.d.ts.map +0 -1
  128. package/dist/runtime/runtime.js +0 -126
  129. package/dist/runtime/runtime.js.map +0 -1
  130. package/dist/types/index.d.ts +0 -2
  131. package/dist/types/index.d.ts.map +0 -1
  132. package/dist/types/index.js +0 -2
  133. package/dist/types/index.js.map +0 -1
  134. package/dist/types/init.d.ts +0 -33
  135. package/dist/types/init.d.ts.map +0 -1
  136. package/dist/types/init.js +0 -6
  137. package/dist/types/init.js.map +0 -1
  138. package/dist/types/preset.d.ts +0 -27
  139. package/dist/types/preset.d.ts.map +0 -1
  140. package/dist/types/preset.js +0 -6
  141. package/dist/types/preset.js.map +0 -1
  142. package/dist/types/types.d.ts +0 -70
  143. package/dist/types/types.d.ts.map +0 -1
  144. package/dist/types/types.js +0 -2
  145. package/dist/types/types.js.map +0 -1
  146. package/dist/utils/__tests__/env.spec.d.ts +0 -2
  147. package/dist/utils/__tests__/env.spec.d.ts.map +0 -1
  148. package/dist/utils/__tests__/env.spec.js +0 -33
  149. package/dist/utils/__tests__/env.spec.js.map +0 -1
  150. package/dist/utils/env.d.ts +0 -7
  151. package/dist/utils/env.d.ts.map +0 -1
  152. package/dist/utils/env.js +0 -25
  153. package/dist/utils/env.js.map +0 -1
  154. package/dist/utils/fs-atomic.d.ts +0 -15
  155. package/dist/utils/fs-atomic.d.ts.map +0 -1
  156. package/dist/utils/fs-atomic.js +0 -46
  157. package/dist/utils/fs-atomic.js.map +0 -1
  158. package/dist/utils/index.d.ts +0 -3
  159. package/dist/utils/index.d.ts.map +0 -1
  160. package/dist/utils/index.js +0 -3
  161. package/dist/utils/index.js.map +0 -1
  162. package/dist/utils/paths.d.ts +0 -21
  163. package/dist/utils/paths.d.ts.map +0 -1
  164. package/dist/utils/paths.js +0 -32
  165. package/dist/utils/paths.js.map +0 -1
  166. package/dist/utils/product-normalize.d.ts +0 -25
  167. package/dist/utils/product-normalize.d.ts.map +0 -1
  168. package/dist/utils/product-normalize.js +0 -48
  169. package/dist/utils/product-normalize.js.map +0 -1
  170. package/dist/validation/validate-config.d.ts +0 -10
  171. package/dist/validation/validate-config.d.ts.map +0 -1
  172. package/dist/validation/validate-config.js +0 -21
  173. package/dist/validation/validate-config.js.map +0 -1
@@ -1,304 +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
- const workspaceConfigPath = (cwd) => path.join(cwd, ".kb", "kb.config.json");
16
- const writeWorkspaceConfig = async (cwd, config) => {
17
- await fsp.mkdir(path.join(cwd, ".kb"), { recursive: true });
18
- await fsp.writeFile(workspaceConfigPath(cwd), JSON.stringify(config, null, 2));
19
- };
20
- beforeEach(async () => {
21
- testDir = path.join(tmpdir(), `kb-labs-config-test-${Date.now()}`);
22
- await fsp.mkdir(testDir, { recursive: true });
23
- clearCaches();
24
- });
25
- afterEach(async () => {
26
- await fsp.rm(testDir, { recursive: true, force: true });
27
- clearCaches();
28
- });
29
- describe("Product Normalization", () => {
30
- it("should convert ProductId to filesystem format", () => {
31
- expect(toFsProduct("aiReview")).toBe("ai-review");
32
- expect(toFsProduct("aiDocs")).toBe("ai-docs");
33
- expect(toFsProduct("devlink")).toBe("devlink");
34
- expect(toFsProduct("release")).toBe("release");
35
- expect(toFsProduct("devkit")).toBe("devkit");
36
- });
37
- it("should convert filesystem format to ProductId", () => {
38
- expect(toConfigProduct("ai-review")).toBe("aiReview");
39
- expect(toConfigProduct("ai-docs")).toBe("aiDocs");
40
- expect(toConfigProduct("devlink")).toBe("devlink");
41
- expect(toConfigProduct("release")).toBe("release");
42
- expect(toConfigProduct("devkit")).toBe("devkit");
43
- });
44
- });
45
- describe("getProductConfig", () => {
46
- it("should return runtime defaults when no config files exist", async () => {
47
- const result = await getProductConfig({
48
- cwd: testDir,
49
- product: "aiReview",
50
- }, null);
51
- expect(result.config).toMatchObject({
52
- enabled: true,
53
- rules: [],
54
- });
55
- expect(result.trace.length).toBeGreaterThan(0);
56
- expect(result.trace[0]?.layer).toBe("runtime");
57
- });
58
- it("should merge workspace config", async () => {
59
- // Create workspace config
60
- const workspaceConfig = {
61
- schemaVersion: "1.0",
62
- products: {
63
- "ai-review": {
64
- enabled: false,
65
- customSetting: "test",
66
- },
67
- },
68
- };
69
- await writeWorkspaceConfig(testDir, workspaceConfig);
70
- const result = await getProductConfig({
71
- cwd: testDir,
72
- product: "aiReview",
73
- }, null);
74
- expect(result.config).toMatchObject({
75
- enabled: false,
76
- customSetting: "test",
77
- });
78
- expect(result.trace.length).toBeGreaterThan(1);
79
- expect(result.trace.some((t) => t.layer === "workspace")).toBe(true);
80
- });
81
- it("should merge local config", async () => {
82
- // Create local config directory
83
- const localConfigDir = path.join(testDir, ".kb", "ai-review");
84
- await fsp.mkdir(localConfigDir, { recursive: true });
85
- const localConfig = {
86
- $schema: "https://schemas.kb-labs.dev/config.schema.json",
87
- schemaVersion: "1.0",
88
- enabled: false,
89
- localSetting: "local-value",
90
- };
91
- await fsp.writeFile(path.join(localConfigDir, "ai-review.config.json"), JSON.stringify(localConfig, null, 2));
92
- const result = await getProductConfig({
93
- cwd: testDir,
94
- product: "aiReview",
95
- }, null);
96
- expect(result.config).toMatchObject({
97
- enabled: false,
98
- localSetting: "local-value",
99
- });
100
- expect(result.trace.length).toBeGreaterThan(1);
101
- expect(result.trace.some((t) => t.layer === "local")).toBe(true);
102
- });
103
- it("should merge CLI overrides", async () => {
104
- const result = await getProductConfig({
105
- cwd: testDir,
106
- product: "aiReview",
107
- cli: {
108
- enabled: false,
109
- debug: true,
110
- },
111
- }, null);
112
- expect(result.config).toMatchObject({
113
- enabled: false,
114
- debug: true,
115
- });
116
- expect(result.trace.length).toBeGreaterThan(1);
117
- expect(result.trace.some((t) => t.layer === "cli")).toBe(true);
118
- });
119
- it("should handle array overwrite", async () => {
120
- // Create workspace config with array
121
- const workspaceConfig = {
122
- schemaVersion: "1.0",
123
- products: {
124
- "ai-review": {
125
- rules: ["workspace-rule"],
126
- },
127
- },
128
- };
129
- await writeWorkspaceConfig(testDir, workspaceConfig);
130
- const result = await getProductConfig({
131
- cwd: testDir,
132
- product: "aiReview",
133
- cli: {
134
- rules: ["cli-rule"],
135
- },
136
- }, null);
137
- expect(result.config.rules).toEqual(["cli-rule"]);
138
- expect(result.trace.length).toBeGreaterThan(2);
139
- expect(result.trace.some((t) => t.type === "overwriteArray")).toBe(true);
140
- });
141
- });
142
- describe("explainProductConfig", () => {
143
- it("should return trace without resolving config", async () => {
144
- const result = await explainProductConfig({
145
- cwd: testDir,
146
- product: "aiReview",
147
- }, null);
148
- expect(result.trace.length).toBeGreaterThan(0);
149
- expect(result.trace[0].layer).toBe("runtime");
150
- });
151
- });
152
- describe("Error Handling", () => {
153
- it("should throw KbError for invalid config", async () => {
154
- // Create invalid JSON config
155
- await fsp.mkdir(path.join(testDir, ".kb"), { recursive: true });
156
- await fsp.writeFile(workspaceConfigPath(testDir), "{ invalid json }");
157
- await expect(getProductConfig({
158
- cwd: testDir,
159
- product: "aiReview",
160
- }, null)).rejects.toThrow(KbError);
161
- });
162
- it("should handle preset resolution failures", async () => {
163
- // Create config with invalid preset
164
- const workspaceConfig = {
165
- schemaVersion: "1.0",
166
- preset: "nonexistent/preset",
167
- products: {
168
- "ai-review": {
169
- enabled: true,
170
- },
171
- },
172
- };
173
- await writeWorkspaceConfig(testDir, workspaceConfig);
174
- // The function should handle invalid presets gracefully and fall back to defaults
175
- const result = await getProductConfig({
176
- cwd: testDir,
177
- product: "aiReview",
178
- }, null);
179
- expect(result.config).toMatchObject({
180
- enabled: true,
181
- rules: [],
182
- });
183
- });
184
- it("should handle merge conflicts gracefully", async () => {
185
- // Create conflicting configs
186
- const workspaceConfig = {
187
- schemaVersion: "1.0",
188
- products: {
189
- "ai-review": {
190
- enabled: true,
191
- rules: ["workspace-rule"],
192
- },
193
- },
194
- };
195
- await writeWorkspaceConfig(testDir, workspaceConfig);
196
- const localConfigDir = path.join(testDir, ".kb", "ai-review");
197
- await fsp.mkdir(localConfigDir, { recursive: true });
198
- const localConfig = {
199
- $schema: "https://schemas.kb-labs.dev/config.schema.json",
200
- schemaVersion: "1.0",
201
- enabled: false,
202
- rules: ["local-rule"],
203
- };
204
- await fsp.writeFile(path.join(localConfigDir, "ai-review.config.json"), JSON.stringify(localConfig, null, 2));
205
- const result = await getProductConfig({
206
- cwd: testDir,
207
- product: "aiReview",
208
- }, null);
209
- // Local config should override workspace
210
- expect(result.config).toMatchObject({
211
- enabled: false,
212
- rules: ["local-rule"],
213
- });
214
- });
215
- it("should handle missing product in config", async () => {
216
- // Create config without the product
217
- const workspaceConfig = {
218
- schemaVersion: "1.0",
219
- products: {
220
- "other-product": {
221
- enabled: true,
222
- },
223
- },
224
- };
225
- await writeWorkspaceConfig(testDir, workspaceConfig);
226
- const result = await getProductConfig({
227
- cwd: testDir,
228
- product: "aiReview",
229
- }, null);
230
- // Should fall back to runtime defaults
231
- expect(result.config).toMatchObject({
232
- enabled: true,
233
- rules: [],
234
- });
235
- });
236
- it("should handle invalid product configuration structure", async () => {
237
- // Create config with invalid product structure
238
- const workspaceConfig = {
239
- schemaVersion: "1.0",
240
- products: {
241
- "ai-review": "invalid-string-instead-of-object",
242
- },
243
- };
244
- await writeWorkspaceConfig(testDir, workspaceConfig);
245
- // The function should handle invalid structures gracefully
246
- const result = await getProductConfig({
247
- cwd: testDir,
248
- product: "aiReview",
249
- }, null);
250
- // Should handle invalid structure gracefully
251
- expect(result.config).toBe("invalid-string-instead-of-object");
252
- });
253
- it("should handle circular references in config", async () => {
254
- // Create config that might cause circular references
255
- const workspaceConfig = {
256
- schemaVersion: "1.0",
257
- products: {
258
- "ai-review": {
259
- enabled: true,
260
- circularRef: null,
261
- },
262
- },
263
- };
264
- workspaceConfig.products["ai-review"].circularRef = workspaceConfig;
265
- // JSON.stringify will fail with circular references, so we'll create a simpler test
266
- const simpleConfig = {
267
- schemaVersion: "1.0",
268
- products: {
269
- "ai-review": {
270
- enabled: true,
271
- },
272
- },
273
- };
274
- await writeWorkspaceConfig(testDir, simpleConfig);
275
- // Should handle gracefully
276
- const result = await getProductConfig({
277
- cwd: testDir,
278
- product: "aiReview",
279
- }, null);
280
- expect(result.config).toMatchObject({
281
- enabled: true,
282
- });
283
- });
284
- it("should handle file system errors", async () => {
285
- // Create directory that can't be read
286
- const restrictedDir = path.join(testDir, "restricted");
287
- await fsp.mkdir(restrictedDir, { recursive: true });
288
- await fsp.chmod(restrictedDir, 0o000); // Remove all permissions
289
- // The function should handle permission errors gracefully
290
- const result = await getProductConfig({
291
- cwd: restrictedDir,
292
- product: "aiReview",
293
- }, null);
294
- // Should fall back to runtime defaults
295
- expect(result.config).toMatchObject({
296
- enabled: true,
297
- rules: [],
298
- });
299
- // Restore permissions for cleanup
300
- await fsp.chmod(restrictedDir, 0o755);
301
- });
302
- });
303
- });
304
- //# sourceMappingURL=product-config.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-config.spec.js","sourceRoot":"","sources":["../../src/__tests__/product-config.spec.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Демонстрация работы Profiles v2
3
- *
4
- * Этот скрипт показывает, как работают профили:
5
- * 1. Чтение profiles[] из kb.config.json
6
- * 2. Разрешение профилей с extends
7
- * 3. Выбор scope
8
- * 4. Мердж product overlays
9
- */
10
- export {};
11
- //# sourceMappingURL=profiles-demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles-demo.d.ts","sourceRoot":"","sources":["../../src/__tests__/profiles-demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1,173 +0,0 @@
1
- /**
2
- * Демонстрация работы Profiles v2
3
- *
4
- * Этот скрипт показывает, как работают профили:
5
- * 1. Чтение profiles[] из kb.config.json
6
- * 2. Разрешение профилей с extends
7
- * 3. Выбор scope
8
- * 4. Мердж product overlays
9
- */
10
- import path from "node:path";
11
- import { promises as fs } from "node:fs";
12
- import os from "node:os";
13
- import { readProfilesSection, resolveProfile, selectProfileScope, } from "../index";
14
- async function demo() {
15
- const tmpDir = path.join(os.tmpdir(), `kb-profiles-demo-${Date.now()}`);
16
- await fs.mkdir(tmpDir, { recursive: true });
17
- // Создаем пример kb.config.json с профилями
18
- const config = {
19
- profiles: [
20
- {
21
- id: "base",
22
- label: "Base Profile",
23
- description: "Базовый профиль с настройками по умолчанию",
24
- products: {
25
- aiReview: {
26
- engine: "openai",
27
- maxComments: 20,
28
- riskThreshold: "medium",
29
- },
30
- },
31
- scopes: [
32
- {
33
- id: "root",
34
- include: ["**/*"],
35
- default: true,
36
- products: {
37
- aiReview: {
38
- engine: "openai",
39
- },
40
- },
41
- },
42
- ],
43
- },
44
- {
45
- id: "frontend",
46
- label: "Frontend Profile",
47
- extends: "base",
48
- description: "Профиль для фронтенда с другим движком",
49
- products: {
50
- aiReview: {
51
- engine: "anthropic",
52
- maxComments: 10,
53
- },
54
- },
55
- scopes: [
56
- {
57
- id: "frontend",
58
- include: ["src/frontend/**", "apps/web/**"],
59
- default: true,
60
- products: {
61
- aiReview: {
62
- engine: "anthropic",
63
- maxComments: 5,
64
- },
65
- },
66
- },
67
- {
68
- id: "backend",
69
- include: ["src/backend/**", "apps/api/**"],
70
- products: {
71
- aiReview: {
72
- engine: "openai",
73
- maxComments: 15,
74
- },
75
- },
76
- },
77
- ],
78
- },
79
- ],
80
- };
81
- await fs.writeFile(path.join(tmpDir, "kb.config.json"), JSON.stringify(config, null, 2));
82
- console.log("📁 Создан kb.config.json с профилями:\n");
83
- console.log(JSON.stringify(config, null, 2));
84
- console.log("\n" + "=".repeat(80) + "\n");
85
- // 1. Чтение profiles section
86
- console.log("1️⃣ Чтение profiles[] из kb.config.json:\n");
87
- const profilesSection = await readProfilesSection(tmpDir);
88
- console.log(`Найдено профилей: ${profilesSection.profiles.length}`);
89
- console.log(`Источник: ${profilesSection.sourcePath || "не найден"}`);
90
- profilesSection.profiles.forEach((p) => {
91
- console.log(` - ${p.id}${p.label ? ` (${p.label})` : ""}`);
92
- });
93
- console.log("\n" + "=".repeat(80) + "\n");
94
- // 2. Разрешение базового профиля
95
- console.log('2️⃣ Разрешение базового профиля "base":\n');
96
- const baseProfile = await resolveProfile({ cwd: tmpDir, profileId: "base" });
97
- console.log(`ID: ${baseProfile.id}`);
98
- console.log(`Label: ${baseProfile.label}`);
99
- console.log(`Source: ${baseProfile.source}`);
100
- console.log(`Products:`, JSON.stringify(baseProfile.products, null, 2));
101
- console.log(`Scopes:`, baseProfile.scopes.map((s) => s.id).join(", "));
102
- console.log("\n" + "=".repeat(80) + "\n");
103
- // 3. Разрешение профиля с extends
104
- console.log('3️⃣ Разрешение профиля "frontend" с extends="base":\n');
105
- const frontendProfile = await resolveProfile({
106
- cwd: tmpDir,
107
- profileId: "frontend",
108
- });
109
- console.log(`ID: ${frontendProfile.id}`);
110
- console.log(`Label: ${frontendProfile.label}`);
111
- console.log(`Source: ${frontendProfile.source}`);
112
- console.log(`Trace (extends):`, frontendProfile.trace?.extends || []);
113
- console.log(`Products (merged):`, JSON.stringify(frontendProfile.products, null, 2));
114
- console.log(` → engine: ${frontendProfile.products?.aiReview?.engine} (переопределен)`);
115
- console.log(` → maxComments: ${frontendProfile.products?.aiReview?.maxComments} (переопределен)`);
116
- console.log(` → riskThreshold: ${frontendProfile.products?.aiReview?.riskThreshold} (унаследован от base)`);
117
- console.log(`Scopes:`, frontendProfile.scopes.map((s) => s.id).join(", "));
118
- console.log("\n" + "=".repeat(80) + "\n");
119
- // 4. Выбор scope
120
- console.log('4️⃣ Выбор scope для профиля "frontend":\n');
121
- // Выбор default scope
122
- const defaultScope = selectProfileScope({
123
- bundleProfile: frontendProfile,
124
- cwd: tmpDir,
125
- executionPath: tmpDir,
126
- });
127
- console.log(`Strategy: ${defaultScope.strategy}`);
128
- console.log(`Selected scope: ${defaultScope.scope?.id || "none"}`);
129
- if (defaultScope.scope) {
130
- console.log(`Scope products:`, JSON.stringify(defaultScope.scope.products, null, 2));
131
- }
132
- console.log("\n");
133
- // Выбор scope по пути
134
- const frontendPath = path.join(tmpDir, "src", "frontend", "component.ts");
135
- await fs.mkdir(path.dirname(frontendPath), { recursive: true });
136
- await fs.writeFile(frontendPath, "// frontend code");
137
- const frontendScope = selectProfileScope({
138
- bundleProfile: frontendProfile,
139
- cwd: tmpDir,
140
- executionPath: frontendPath,
141
- });
142
- console.log(`Execution path: ${frontendPath}`);
143
- console.log(`Strategy: ${frontendScope.strategy}`);
144
- console.log(`Selected scope: ${frontendScope.scope?.id || "none"}`);
145
- if (frontendScope.scope) {
146
- console.log(`Scope products:`, JSON.stringify(frontendScope.scope.products, null, 2));
147
- }
148
- console.log("\n");
149
- // Выбор scope по explicit scopeId
150
- const backendScope = selectProfileScope({
151
- bundleProfile: frontendProfile,
152
- cwd: tmpDir,
153
- executionPath: tmpDir,
154
- scopeId: "backend",
155
- });
156
- console.log(`Explicit scopeId: backend`);
157
- console.log(`Strategy: ${backendScope.strategy}`);
158
- console.log(`Selected scope: ${backendScope.scope?.id || "none"}`);
159
- if (backendScope.scope) {
160
- console.log(`Scope products:`, JSON.stringify(backendScope.scope.products, null, 2));
161
- }
162
- console.log("\n" + "=".repeat(80) + "\n");
163
- // 5. Products by scope
164
- console.log("5️⃣ Products by scope (мердж profile + scope):\n");
165
- console.log(`Products for scope "frontend":`, JSON.stringify(frontendProfile.productsByScope?.frontend, null, 2));
166
- console.log(`Products for scope "backend":`, JSON.stringify(frontendProfile.productsByScope?.backend, null, 2));
167
- console.log("\n" + "=".repeat(80) + "\n");
168
- // Очистка
169
- await fs.rm(tmpDir, { recursive: true, force: true });
170
- console.log("✅ Демонстрация завершена!");
171
- }
172
- demo().catch(console.error);
173
- //# sourceMappingURL=profiles-demo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles-demo.js","sourceRoot":"","sources":["../../src/__tests__/profiles-demo.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=profiles-resolver.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles-resolver.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/profiles-resolver.spec.ts"],"names":[],"mappings":""}
@@ -1,114 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import path from "node:path";
3
- import os from "node:os";
4
- import { promises as fs } from "node:fs";
5
- import { resolveProfile } from "../profiles/resolver";
6
- import { KbError } from "../errors/kb-error";
7
- const writeJson = (filePath, data) => fs.writeFile(filePath, JSON.stringify(data, null, 2));
8
- describe("resolveProfile", () => {
9
- let tmpDir;
10
- beforeEach(async () => {
11
- tmpDir = path.join(os.tmpdir(), `kb-profiles-${Date.now()}-${Math.random()}`);
12
- await fs.mkdir(tmpDir, { recursive: true });
13
- });
14
- afterEach(async () => {
15
- await fs.rm(tmpDir, { recursive: true, force: true });
16
- });
17
- it("resolves local profile with extends chain and merges overlays", async () => {
18
- await writeJson(path.join(tmpDir, "kb.config.json"), {
19
- profiles: [
20
- {
21
- id: "base",
22
- label: "Base Profile",
23
- products: {
24
- aiReview: { engine: "openai", maxComments: 20 },
25
- },
26
- scopes: [
27
- {
28
- id: "root",
29
- include: ["**/*"],
30
- default: true,
31
- products: { aiReview: { engine: "openai" } },
32
- },
33
- ],
34
- },
35
- {
36
- id: "child",
37
- extends: "base",
38
- products: {
39
- aiReview: { engine: "anthropic" },
40
- },
41
- scopes: [
42
- {
43
- id: "src",
44
- include: ["src/**"],
45
- default: true,
46
- products: { aiReview: { engine: "anthropic" } },
47
- },
48
- ],
49
- },
50
- ],
51
- });
52
- const result = await resolveProfile({ cwd: tmpDir, profileId: "child" });
53
- expect(result.id).toBe("child");
54
- expect(result.products?.aiReview).toEqual({
55
- engine: "anthropic",
56
- maxComments: 20,
57
- });
58
- expect(result.scopes).toHaveLength(1);
59
- expect(result.scopes[0].products?.aiReview).toEqual({
60
- engine: "anthropic",
61
- });
62
- expect(result.productsByScope?.src?.aiReview).toEqual({
63
- engine: "anthropic",
64
- });
65
- expect(result.trace?.extends).toEqual(["workspace:base"]);
66
- });
67
- it("throws when profile not found", async () => {
68
- await writeJson(path.join(tmpDir, "kb.config.json"), { profiles: [] });
69
- await expect(resolveProfile({ cwd: tmpDir, profileId: "missing" })).rejects.toBeInstanceOf(KbError);
70
- });
71
- it("detects circular extends", async () => {
72
- await writeJson(path.join(tmpDir, "kb.config.json"), {
73
- profiles: [
74
- { id: "a", extends: "b" },
75
- { id: "b", extends: "a" },
76
- ],
77
- });
78
- await expect(resolveProfile({ cwd: tmpDir, profileId: "a" })).rejects.toBeInstanceOf(KbError);
79
- });
80
- it("loads profiles from npm packages", async () => {
81
- const pkgRoot = path.join(tmpDir, "node_modules", "@test", "preset");
82
- await fs.mkdir(pkgRoot, { recursive: true });
83
- await writeJson(path.join(pkgRoot, "package.json"), {
84
- name: "@test/preset",
85
- version: "1.0.0",
86
- });
87
- await writeJson(path.join(pkgRoot, "kb.config.json"), {
88
- profiles: [
89
- {
90
- id: "default",
91
- label: "Preset Profile",
92
- products: { aiReview: { engine: "openai" } },
93
- scopes: [{ id: "root", include: ["**/*"], default: true }],
94
- },
95
- ],
96
- });
97
- await writeJson(path.join(tmpDir, "kb.config.json"), {
98
- profiles: [
99
- {
100
- id: "workspace",
101
- extends: "@test/preset#default",
102
- products: { aiReview: { engine: "local" } },
103
- },
104
- ],
105
- });
106
- const result = await resolveProfile({
107
- cwd: tmpDir,
108
- profileId: "workspace",
109
- });
110
- expect(result.products?.aiReview).toEqual({ engine: "local" });
111
- expect(result.trace?.extends).toEqual(["npm:@test/preset#default"]);
112
- });
113
- });
114
- //# sourceMappingURL=profiles-resolver.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles-resolver.spec.js","sourceRoot":"","sources":["../../src/__tests__/profiles-resolver.spec.ts"],"names":[],"mappings":"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"}