@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,126 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/runtime
3
- * Infrastructure-only config pipeline (no domain keys).
4
- * Provides: nearest config discovery, safe JSON read with diagnostics,
5
- * deep merge that ignores `undefined`, and a generic resolver (defaults→file→env→cli).
6
- */
7
- import { promises as fsp } from "node:fs";
8
- import path from "node:path";
9
- /** Find nearest config file walking up from startDir until stopDir or FS root. */
10
- export async function findNearestConfig(opts) {
11
- const start = path.resolve(opts.startDir ?? process.cwd());
12
- const stop = opts.stopDir ? path.resolve(opts.stopDir) : null;
13
- const tried = [];
14
- let dir = start;
15
- while (true) {
16
- for (const name of opts.filenames) {
17
- const candidate = path.join(dir, name);
18
- tried.push(candidate);
19
- try {
20
- await fsp.access(candidate);
21
- return { path: candidate, tried };
22
- }
23
- catch { /* continue */ }
24
- }
25
- const parent = path.dirname(dir);
26
- if (parent === dir) {
27
- break;
28
- }
29
- if (stop && (dir === stop || parent === stop)) {
30
- break;
31
- }
32
- dir = parent;
33
- }
34
- return { path: null, tried };
35
- }
36
- /** Read JSON with explicit diagnostics (no silent nulls). */
37
- export async function readJsonWithDiagnostics(p) {
38
- const diagnostics = [];
39
- try {
40
- const raw = await fsp.readFile(p, "utf8");
41
- try {
42
- const data = JSON.parse(raw);
43
- return { ok: true, data, diagnostics };
44
- }
45
- catch (e) {
46
- diagnostics.push({ level: "error", code: "JSON_PARSE_FAILED", message: `Failed to parse JSON: ${p}`, detail: String(e) });
47
- return { ok: false, diagnostics };
48
- }
49
- }
50
- catch (e) {
51
- diagnostics.push({ level: "error", code: "FILE_READ_FAILED", message: `Failed to read file: ${p}`, detail: String(e) });
52
- return { ok: false, diagnostics };
53
- }
54
- }
55
- /** Shallow pick of defined fields only. */
56
- export function pickDefined(obj) {
57
- if (!obj) {
58
- return {};
59
- }
60
- const out = {};
61
- for (const [k, v] of Object.entries(obj)) {
62
- if (v !== undefined) {
63
- out[k] = v;
64
- }
65
- }
66
- return out;
67
- }
68
- /** Deep merge (objects/arrays), ignoring `undefined` on the overlay. */
69
- export function mergeDefined(base, over) {
70
- if (!over) {
71
- return base;
72
- }
73
- if (Array.isArray(base) && Array.isArray(over)) {
74
- return [...base, ...over.filter(v => v !== undefined)];
75
- }
76
- if (isPlainObject(base) && isPlainObject(over)) {
77
- const out = { ...base };
78
- for (const [k, v] of Object.entries(over)) {
79
- if (v === undefined) {
80
- continue;
81
- }
82
- if (isPlainObject(base[k]) && isPlainObject(v)) {
83
- out[k] = mergeDefined(base[k], v);
84
- }
85
- else if (Array.isArray(base[k]) && Array.isArray(v)) {
86
- out[k] = mergeDefined(base[k], v);
87
- }
88
- else {
89
- out[k] = v;
90
- }
91
- }
92
- return out;
93
- }
94
- // Different types → overlay wins if defined
95
- return over ?? base;
96
- }
97
- function isPlainObject(v) {
98
- return typeof v === "object" && v !== null && Object.getPrototypeOf(v) === Object.prototype;
99
- }
100
- const SYSTEM_DEFAULTS = {
101
- profiles: { rootDir: '.kb/profiles', defaultName: 'default', strict: true }
102
- };
103
- /**
104
- * Generic resolver: defaults → fileConfig → envMapper(process.env) → cliOverrides.
105
- * No domain keys inside; mapping/validation provided by the product/shared layer.
106
- */
107
- export function resolveConfig(args) {
108
- const diagnostics = [];
109
- const envPart = args.envMapper?.(process.env) ?? {};
110
- const merged = mergeDefined(mergeDefined(mergeDefined(mergeDefined(structuredClone(SYSTEM_DEFAULTS), structuredClone(args.defaults)), args.fileConfig), envPart), args.cliOverrides);
111
- if (args.validate) {
112
- const res = args.validate(merged);
113
- if (!res.ok) {
114
- diagnostics.push({ level: "error", code: "CONFIG_VALIDATION_FAILED", message: "Configuration did not pass validation." });
115
- if (res.diagnostics) {
116
- diagnostics.push(...res.diagnostics);
117
- }
118
- }
119
- else if (res.diagnostics?.length) {
120
- diagnostics.push(...res.diagnostics);
121
- }
122
- }
123
- return { value: merged, diagnostics };
124
- }
125
- export { SYSTEM_DEFAULTS };
126
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from "./types";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
@@ -1,2 +0,0 @@
1
- export * from "./types";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
@@ -1,33 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/types/init
3
- * Types for init operations
4
- */
5
- export interface InitWorkspaceOptions {
6
- cwd: string;
7
- format?: 'yaml' | 'json';
8
- presetRef?: string | null;
9
- profiles?: Record<string, string>;
10
- products?: string[];
11
- dryRun?: boolean;
12
- force?: boolean;
13
- }
14
- export interface InitAction {
15
- kind: 'write' | 'append' | 'update' | 'skip' | 'conflict';
16
- path: string;
17
- previewDiff?: string;
18
- }
19
- export interface InitResult {
20
- actions: InitAction[];
21
- created: string[];
22
- updated: string[];
23
- skipped: string[];
24
- warnings: string[];
25
- }
26
- export interface UpsertLockfileOptions {
27
- cwd: string;
28
- presetRef?: string | null;
29
- profileRef?: string | null;
30
- policyBundle?: string | null;
31
- dryRun?: boolean;
32
- }
33
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/types/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/types/init
3
- * Types for init operations
4
- */
5
- export {};
6
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/types/init.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,27 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/types/preset
3
- * Preset-related types
4
- */
5
- export interface PresetConfig {
6
- products: Record<string, any>;
7
- metadata?: {
8
- name: string;
9
- version: string;
10
- description?: string;
11
- };
12
- }
13
- export interface PresetResolutionOptions {
14
- cwd: string;
15
- presetRef: string;
16
- offline?: boolean;
17
- }
18
- export interface PresetResolutionResult {
19
- preset: {
20
- name: string;
21
- version: string;
22
- path: string;
23
- config: PresetConfig;
24
- };
25
- resolvedAt: string;
26
- }
27
- //# sourceMappingURL=preset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/types/preset.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/types/preset
3
- * Preset-related types
4
- */
5
- export {};
6
- //# sourceMappingURL=preset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/types/preset.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,70 +0,0 @@
1
- export type Diagnostic = {
2
- level: "warn" | "error";
3
- code: string;
4
- message: string;
5
- detail?: unknown;
6
- } | {
7
- level: "info";
8
- code: string;
9
- message: string;
10
- };
11
- export type JsonReadResult<T = unknown> = {
12
- ok: true;
13
- data: T;
14
- diagnostics: Diagnostic[];
15
- } | {
16
- ok: false;
17
- diagnostics: Diagnostic[];
18
- };
19
- export interface FindNearestConfigOpts {
20
- startDir?: string;
21
- stopDir?: string;
22
- filenames: string[];
23
- }
24
- export interface ProfilesConfig {
25
- rootDir?: string;
26
- defaultName?: string;
27
- strict?: boolean;
28
- }
29
- export interface KBConfig {
30
- profiles?: ProfilesConfig;
31
- }
32
- export interface MergeTrace {
33
- path: string;
34
- source: string;
35
- type: 'set' | 'overwriteArray';
36
- layer: string;
37
- profileRef?: string;
38
- presetRef?: string;
39
- version?: string;
40
- }
41
- export interface ProfileLayerInput {
42
- profileId: string;
43
- source: string;
44
- products?: Record<string, unknown>;
45
- scope?: {
46
- id: string;
47
- source: string;
48
- products?: Record<string, unknown>;
49
- };
50
- }
51
- export interface ResolveOptions {
52
- cwd: string;
53
- /**
54
- * Product identifier (e.g., 'mind', 'aiReview', 'workflow')
55
- */
56
- product: string;
57
- cli?: Record<string, unknown>;
58
- writeFinal?: boolean;
59
- profileLayer?: ProfileLayerInput;
60
- }
61
- export interface ConfigLayer {
62
- label: string;
63
- value: any;
64
- source: string;
65
- }
66
- export interface ProductConfigResult<T = Record<string, any>> {
67
- config: T;
68
- trace: MergeTrace[];
69
- }
70
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAChB;IAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5E;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,GAChD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC1D,MAAM,EAAE,CAAC,CAAC;IACV,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=env.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.spec.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/env.spec.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { toBool, toInt } from '../env';
3
- describe('toBool', () => {
4
- it('parses truthy values', () => {
5
- for (const v of ['1', 'true', 'yes', 'on', ' TRUE ', 'Yes']) {
6
- expect(toBool(v)).toBe(true);
7
- }
8
- });
9
- it('parses falsy values', () => {
10
- for (const v of ['0', 'false', 'no', 'off', ' False ']) {
11
- expect(toBool(v)).toBe(false);
12
- }
13
- });
14
- it('returns undefined for unknown or undefined', () => {
15
- expect(toBool('maybe')).toBeUndefined();
16
- expect(toBool(undefined)).toBeUndefined();
17
- expect(toBool('')).toBeUndefined();
18
- });
19
- });
20
- describe('toInt', () => {
21
- it('parses valid integers', () => {
22
- expect(toInt('0')).toBe(0);
23
- expect(toInt('42')).toBe(42);
24
- expect(toInt(' 7 ')).toBe(7);
25
- });
26
- it('returns undefined for invalid numbers or undefined', () => {
27
- expect(toInt('abc')).toBeUndefined();
28
- expect(toInt('NaN')).toBeUndefined();
29
- expect(toInt(undefined)).toBeUndefined();
30
- expect(toInt('')).toBe(0); // Number('') === 0 → considered valid
31
- });
32
- });
33
- //# sourceMappingURL=env.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.spec.js","sourceRoot":"","sources":["../../../src/utils/__tests__/env.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACzC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACpC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACpC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACxC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,sCAAsC;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/utils/env
3
- * Small helpers to convert ENV strings to typed values.
4
- */
5
- export declare function toBool(v: string | undefined): boolean | undefined;
6
- export declare function toInt(v: string | undefined): number | undefined;
7
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAMjE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI/D"}
package/dist/utils/env.js DELETED
@@ -1,25 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/utils/env
3
- * Small helpers to convert ENV strings to typed values.
4
- */
5
- export function toBool(v) {
6
- if (v === undefined) {
7
- return undefined;
8
- }
9
- const s = v.trim().toLowerCase();
10
- if (s === "1" || s === "true" || s === "yes" || s === "on") {
11
- return true;
12
- }
13
- if (s === "0" || s === "false" || s === "no" || s === "off") {
14
- return false;
15
- }
16
- return undefined; // unknown → let caller decide default
17
- }
18
- export function toInt(v) {
19
- if (v === undefined) {
20
- return undefined;
21
- }
22
- const n = Number(v);
23
- return Number.isFinite(n) ? n : undefined;
24
- }
25
- //# sourceMappingURL=env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,MAAM,CAAC,CAAqB;IACxC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAAA,OAAO,SAAS,CAAC;IAAA,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC;IAAA,CAAC;IAC1E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAC5E,OAAO,SAAS,CAAC,CAAC,sCAAsC;AAC5D,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAqB;IACvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAAA,OAAO,SAAS,CAAC;IAAA,CAAC;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/utils/fs-atomic
3
- * Atomic file write operations using tmp+rename pattern
4
- */
5
- /**
6
- * Write file atomically using tmp+rename pattern
7
- * This ensures that the file is never partially written in case of crashes
8
- */
9
- export declare function writeFileAtomic(path: string, data: string | Uint8Array): Promise<void>;
10
- /**
11
- * Ensure a path is within the workspace root
12
- * Throws ERR_PATH_OUTSIDE_WORKSPACE if the path escapes the workspace
13
- */
14
- export declare function ensureWithinWorkspace(targetPath: string, workspaceRoot: string): void;
15
- //# sourceMappingURL=fs-atomic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-atomic.d.ts","sourceRoot":"","sources":["../../src/utils/fs-atomic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAYrF"}
@@ -1,46 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/utils/fs-atomic
3
- * Atomic file write operations using tmp+rename pattern
4
- */
5
- import { promises as fs } from 'node:fs';
6
- import { resolve } from 'node:path';
7
- import { KbError } from '../errors/kb-error';
8
- import { dirname } from 'node:path';
9
- /**
10
- * Write file atomically using tmp+rename pattern
11
- * This ensures that the file is never partially written in case of crashes
12
- */
13
- export async function writeFileAtomic(path, data) {
14
- const tmp = `${path}.tmp-${Date.now()}-${Math.random().toString(36).slice(2)}`;
15
- try {
16
- // Ensure parent directory exists
17
- await fs.mkdir(dirname(path), { recursive: true });
18
- await fs.mkdir(dirname(tmp), { recursive: true });
19
- // Write to temp file
20
- await fs.writeFile(tmp, data);
21
- // Atomic rename
22
- await fs.rename(tmp, path);
23
- }
24
- catch (error) {
25
- // Clean up temp file if it exists
26
- try {
27
- await fs.unlink(tmp);
28
- }
29
- catch {
30
- // Ignore cleanup errors
31
- }
32
- throw error;
33
- }
34
- }
35
- /**
36
- * Ensure a path is within the workspace root
37
- * Throws ERR_PATH_OUTSIDE_WORKSPACE if the path escapes the workspace
38
- */
39
- export function ensureWithinWorkspace(targetPath, workspaceRoot) {
40
- const absTarget = resolve(targetPath);
41
- const absRoot = resolve(workspaceRoot);
42
- if (!absTarget.startsWith(absRoot)) {
43
- throw new KbError('ERR_PATH_OUTSIDE_WORKSPACE', `Refusing to write outside workspace: ${targetPath}`, 'Check cwd or use a relative path within the workspace', { targetPath, workspaceRoot });
44
- }
45
- }
46
- //# sourceMappingURL=fs-atomic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-atomic.js","sourceRoot":"","sources":["../../src/utils/fs-atomic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAyB;IAEzB,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/E,IAAI,CAAC;QACH,iCAAiC;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,qBAAqB;QACrB,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9B,gBAAgB;QAChB,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,aAAqB;IAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,OAAO,CACf,4BAA4B,EAC5B,wCAAwC,UAAU,EAAE,EACpD,uDAAuD,EACvD,EAAE,UAAU,EAAE,aAAa,EAAE,CAC9B,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './env';
2
- export * from './product-normalize';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,qBAAqB,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from './env';
2
- export * from './product-normalize';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,qBAAqB,CAAA"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Get profiles root directory
3
- */
4
- export declare function getProfilesRootDir(cwd: string): string;
5
- /**
6
- * Get product configuration directory
7
- */
8
- export declare function getProductConfigDir(cwd: string, fsProduct: string): string;
9
- /**
10
- * Get product configuration file path
11
- */
12
- export declare function getProductConfigPath(cwd: string, fsProduct: string): string;
13
- /**
14
- * Get .kb root directory
15
- */
16
- export declare function getKbRootDir(cwd: string): string;
17
- /**
18
- * Get lockfile path
19
- */
20
- export declare function getLockfilePath(cwd: string): string;
21
- //# sourceMappingURL=paths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -1,32 +0,0 @@
1
- import path from 'node:path';
2
- /**
3
- * Get profiles root directory
4
- */
5
- export function getProfilesRootDir(cwd) {
6
- return path.join(cwd, '.kb', 'profiles');
7
- }
8
- /**
9
- * Get product configuration directory
10
- */
11
- export function getProductConfigDir(cwd, fsProduct) {
12
- return path.join(cwd, '.kb', fsProduct);
13
- }
14
- /**
15
- * Get product configuration file path
16
- */
17
- export function getProductConfigPath(cwd, fsProduct) {
18
- return path.join(getProductConfigDir(cwd, fsProduct), `${fsProduct}.config.json`);
19
- }
20
- /**
21
- * Get .kb root directory
22
- */
23
- export function getKbRootDir(cwd) {
24
- return path.join(cwd, '.kb');
25
- }
26
- /**
27
- * Get lockfile path
28
- */
29
- export function getLockfilePath(cwd) {
30
- return path.join(getKbRootDir(cwd), 'lock.json');
31
- }
32
- //# sourceMappingURL=paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,SAAiB;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,SAAiB;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,cAAc,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC"}
@@ -1,25 +0,0 @@
1
- /**
2
- * @module @kb-labs/core/config/utils/product-normalize
3
- * Product ID normalization between code (camelCase) and filesystem (kebab-case)
4
- */
5
- /**
6
- * Convert product ID to filesystem kebab-case format
7
- * @param id Product ID (e.g., 'aiReview', 'mind', 'workflow')
8
- * @returns kebab-case string for filesystem paths
9
- */
10
- export declare function toFsProduct(id: string): string;
11
- /**
12
- * Convert filesystem kebab-case key to product ID
13
- * @param fsKey kebab-case string from filesystem
14
- * @returns Product ID (camelCase if mapped, original otherwise)
15
- */
16
- export declare function toConfigProduct(fsKey: string): string;
17
- /**
18
- * Check if a string is a known product ID
19
- */
20
- export declare function isValidProductId(value: string): boolean;
21
- /**
22
- * Get all known product IDs
23
- */
24
- export declare function getAllProductIds(): string[];
25
- //# sourceMappingURL=product-normalize.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-normalize.d.ts","sourceRoot":"","sources":["../../src/utils/product-normalize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}