@kb-labs/devkit 1.4.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/claude/CLAUDE.md.snippet +30 -0
- package/assets/claude/manifest.json +47 -0
- package/assets/claude/skills/kb-labs-create-plugin/SKILL.md +144 -0
- package/assets/claude/skills/kb-labs-create-product/SKILL.md +144 -0
- package/assets/claude/skills/kb-labs-explore/SKILL.md +119 -0
- package/assets/claude/skills/kb-labs-quickstart/SKILL.md +72 -0
- package/assets/claude/skills/kb-labs-troubleshoot/SKILL.md +150 -0
- package/assets/claude/skills/kb-labs-update/SKILL.md +89 -0
- package/package.json +29 -29
- package/tsconfig/spa.json +7 -0
- package/vitest/node.js +8 -2
- package/vitest/react.js +8 -2
- package/.cursorrules +0 -32
- package/.github/CODEOWNERS +0 -2
- package/.github/actions/setup-node-pnpm/action.yml +0 -47
- package/.github/workflow-templates/ci.yml +0 -13
- package/.github/workflow-templates/deploy.yml +0 -28
- package/.github/workflow-templates/docker-build.yml +0 -25
- package/.github/workflow-templates/drift-check.yml +0 -10
- package/.github/workflow-templates/profiles-validate.yml +0 -16
- package/.github/workflow-templates/release.yml +0 -8
- package/.github/workflows/ci-reusable.yml +0 -131
- package/.github/workflows/deploy-reusable.yml +0 -110
- package/.github/workflows/docker-build-reusable.yml +0 -110
- package/.github/workflows/drift-check-reusable.yml +0 -23
- package/.github/workflows/fixtures.yml +0 -74
- package/.github/workflows/profiles-validate-reusable.yml +0 -67
- package/.github/workflows/release-reusable.yml +0 -50
- package/.vscode/settings.json +0 -23
- package/tsconfig/dist/__tests__/cache.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/cache.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/cache.spec.js +0 -85
- package/tsconfig/dist/__tests__/cache.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/fs-atomic.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/fs-atomic.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/fs-atomic.spec.js +0 -153
- package/tsconfig/dist/__tests__/fs-atomic.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/init-workspace.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/init-workspace.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/init-workspace.spec.js +0 -99
- package/tsconfig/dist/__tests__/init-workspace.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/kb-error.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/kb-error.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/kb-error.spec.js +0 -190
- package/tsconfig/dist/__tests__/kb-error.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/preset-lockfile.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/preset-lockfile.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/preset-lockfile.spec.js +0 -142
- package/tsconfig/dist/__tests__/preset-lockfile.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/product-config-profiles.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/product-config-profiles.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/product-config-profiles.spec.js +0 -100
- package/tsconfig/dist/__tests__/product-config-profiles.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/product-config.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/product-config.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/product-config.spec.js +0 -298
- package/tsconfig/dist/__tests__/product-config.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/runtime.spec.d.ts +0 -2
- package/tsconfig/dist/__tests__/runtime.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/runtime.spec.js +0 -127
- package/tsconfig/dist/__tests__/runtime.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/upsert-lockfile.spec.d.ts +0 -6
- package/tsconfig/dist/__tests__/upsert-lockfile.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/upsert-lockfile.spec.js +0 -251
- package/tsconfig/dist/__tests__/upsert-lockfile.spec.js.map +0 -1
- package/tsconfig/dist/__tests__/validate-config.spec.d.ts +0 -2
- package/tsconfig/dist/__tests__/validate-config.spec.d.ts.map +0 -1
- package/tsconfig/dist/__tests__/validate-config.spec.js +0 -14
- package/tsconfig/dist/__tests__/validate-config.spec.js.map +0 -1
- package/tsconfig/dist/api/init-workspace.d.ts +0 -10
- package/tsconfig/dist/api/init-workspace.d.ts.map +0 -1
- package/tsconfig/dist/api/init-workspace.js +0 -191
- package/tsconfig/dist/api/init-workspace.js.map +0 -1
- package/tsconfig/dist/api/product-config.d.ts +0 -21
- package/tsconfig/dist/api/product-config.d.ts.map +0 -1
- package/tsconfig/dist/api/product-config.js +0 -192
- package/tsconfig/dist/api/product-config.js.map +0 -1
- package/tsconfig/dist/api/read-config.d.ts +0 -22
- package/tsconfig/dist/api/read-config.d.ts.map +0 -1
- package/tsconfig/dist/api/read-config.js +0 -105
- package/tsconfig/dist/api/read-config.js.map +0 -1
- package/tsconfig/dist/api/upsert-lockfile.d.ts +0 -10
- package/tsconfig/dist/api/upsert-lockfile.d.ts.map +0 -1
- package/tsconfig/dist/api/upsert-lockfile.js +0 -63
- package/tsconfig/dist/api/upsert-lockfile.js.map +0 -1
- package/tsconfig/dist/cache/fs-cache.d.ts +0 -38
- package/tsconfig/dist/cache/fs-cache.d.ts.map +0 -1
- package/tsconfig/dist/cache/fs-cache.js +0 -142
- package/tsconfig/dist/cache/fs-cache.js.map +0 -1
- package/tsconfig/dist/errors/kb-error.d.ts +0 -32
- package/tsconfig/dist/errors/kb-error.d.ts.map +0 -1
- package/tsconfig/dist/errors/kb-error.js +0 -54
- package/tsconfig/dist/errors/kb-error.js.map +0 -1
- package/tsconfig/dist/fs/__tests__/fs.spec.d.ts +0 -2
- package/tsconfig/dist/fs/__tests__/fs.spec.d.ts.map +0 -1
- package/tsconfig/dist/fs/__tests__/fs.spec.js +0 -22
- package/tsconfig/dist/fs/__tests__/fs.spec.js.map +0 -1
- package/tsconfig/dist/fs/fs.d.ts +0 -6
- package/tsconfig/dist/fs/fs.d.ts.map +0 -1
- package/tsconfig/dist/fs/fs.js +0 -12
- package/tsconfig/dist/fs/fs.js.map +0 -1
- package/tsconfig/dist/fs/index.d.ts +0 -2
- package/tsconfig/dist/fs/index.d.ts.map +0 -1
- package/tsconfig/dist/fs/index.js +0 -2
- package/tsconfig/dist/fs/index.js.map +0 -1
- package/tsconfig/dist/hash/config-hash.d.ts +0 -17
- package/tsconfig/dist/hash/config-hash.d.ts.map +0 -1
- package/tsconfig/dist/hash/config-hash.js +0 -55
- package/tsconfig/dist/hash/config-hash.js.map +0 -1
- package/tsconfig/dist/index.d.ts +0 -5
- package/tsconfig/dist/index.d.ts.map +0 -1
- package/tsconfig/dist/index.js +0 -5
- package/tsconfig/dist/index.js.map +0 -1
- package/tsconfig/dist/lockfile/lockfile.d.ts +0 -54
- package/tsconfig/dist/lockfile/lockfile.d.ts.map +0 -1
- package/tsconfig/dist/lockfile/lockfile.js +0 -141
- package/tsconfig/dist/lockfile/lockfile.js.map +0 -1
- package/tsconfig/dist/logging/__tests__/logger.spec.d.ts +0 -2
- package/tsconfig/dist/logging/__tests__/logger.spec.d.ts.map +0 -1
- package/tsconfig/dist/logging/__tests__/logger.spec.js +0 -65
- package/tsconfig/dist/logging/__tests__/logger.spec.js.map +0 -1
- package/tsconfig/dist/logging/__tests__/redaction.spec.d.ts +0 -2
- package/tsconfig/dist/logging/__tests__/redaction.spec.d.ts.map +0 -1
- package/tsconfig/dist/logging/__tests__/redaction.spec.js +0 -34
- package/tsconfig/dist/logging/__tests__/redaction.spec.js.map +0 -1
- package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.d.ts +0 -2
- package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.d.ts.map +0 -1
- package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.js +0 -90
- package/tsconfig/dist/logging/__tests__/sinks-and-env.spec.js.map +0 -1
- package/tsconfig/dist/logging/index.d.ts +0 -6
- package/tsconfig/dist/logging/index.d.ts.map +0 -1
- package/tsconfig/dist/logging/index.js +0 -6
- package/tsconfig/dist/logging/index.js.map +0 -1
- package/tsconfig/dist/logging/logger.d.ts +0 -9
- package/tsconfig/dist/logging/logger.d.ts.map +0 -1
- package/tsconfig/dist/logging/logger.js +0 -101
- package/tsconfig/dist/logging/logger.js.map +0 -1
- package/tsconfig/dist/logging/redaction.d.ts +0 -7
- package/tsconfig/dist/logging/redaction.d.ts.map +0 -1
- package/tsconfig/dist/logging/redaction.js +0 -23
- package/tsconfig/dist/logging/redaction.js.map +0 -1
- package/tsconfig/dist/logging/sinks/json.d.ts +0 -4
- package/tsconfig/dist/logging/sinks/json.d.ts.map +0 -1
- package/tsconfig/dist/logging/sinks/json.js +0 -23
- package/tsconfig/dist/logging/sinks/json.js.map +0 -1
- package/tsconfig/dist/logging/sinks/stdout.d.ts +0 -3
- package/tsconfig/dist/logging/sinks/stdout.d.ts.map +0 -1
- package/tsconfig/dist/logging/sinks/stdout.js +0 -24
- package/tsconfig/dist/logging/sinks/stdout.js.map +0 -1
- package/tsconfig/dist/logging/types/index.d.ts +0 -2
- package/tsconfig/dist/logging/types/index.d.ts.map +0 -1
- package/tsconfig/dist/logging/types/index.js +0 -2
- package/tsconfig/dist/logging/types/index.js.map +0 -1
- package/tsconfig/dist/logging/types/types.d.ts +0 -37
- package/tsconfig/dist/logging/types/types.d.ts.map +0 -1
- package/tsconfig/dist/logging/types/types.js +0 -2
- package/tsconfig/dist/logging/types/types.js.map +0 -1
- package/tsconfig/dist/merge/layered-merge.d.ts +0 -16
- package/tsconfig/dist/merge/layered-merge.d.ts.map +0 -1
- package/tsconfig/dist/merge/layered-merge.js +0 -97
- package/tsconfig/dist/merge/layered-merge.js.map +0 -1
- package/tsconfig/dist/preset/resolve-preset.d.ts +0 -29
- package/tsconfig/dist/preset/resolve-preset.d.ts.map +0 -1
- package/tsconfig/dist/preset/resolve-preset.js +0 -104
- package/tsconfig/dist/preset/resolve-preset.js.map +0 -1
- package/tsconfig/dist/repo/__tests__/repo.spec.d.ts +0 -2
- package/tsconfig/dist/repo/__tests__/repo.spec.d.ts.map +0 -1
- package/tsconfig/dist/repo/__tests__/repo.spec.js +0 -25
- package/tsconfig/dist/repo/__tests__/repo.spec.js.map +0 -1
- package/tsconfig/dist/repo/index.d.ts +0 -2
- package/tsconfig/dist/repo/index.d.ts.map +0 -1
- package/tsconfig/dist/repo/index.js +0 -2
- package/tsconfig/dist/repo/index.js.map +0 -1
- package/tsconfig/dist/repo/repo.d.ts +0 -6
- package/tsconfig/dist/repo/repo.d.ts.map +0 -1
- package/tsconfig/dist/repo/repo.js +0 -25
- package/tsconfig/dist/repo/repo.js.map +0 -1
- package/tsconfig/dist/runtime/index.d.ts +0 -2
- package/tsconfig/dist/runtime/index.d.ts.map +0 -1
- package/tsconfig/dist/runtime/index.js +0 -2
- package/tsconfig/dist/runtime/index.js.map +0 -1
- package/tsconfig/dist/runtime/runtime.d.ts +0 -46
- package/tsconfig/dist/runtime/runtime.d.ts.map +0 -1
- package/tsconfig/dist/runtime/runtime.js +0 -126
- package/tsconfig/dist/runtime/runtime.js.map +0 -1
- package/tsconfig/dist/tsconfig.tools.tsbuildinfo +0 -1
- package/tsconfig/dist/tsconfig.tsbuildinfo +0 -1
- package/tsconfig/dist/types/index.d.ts +0 -2
- package/tsconfig/dist/types/index.d.ts.map +0 -1
- package/tsconfig/dist/types/index.js +0 -2
- package/tsconfig/dist/types/index.js.map +0 -1
- package/tsconfig/dist/types/init.d.ts +0 -34
- package/tsconfig/dist/types/init.d.ts.map +0 -1
- package/tsconfig/dist/types/init.js +0 -6
- package/tsconfig/dist/types/init.js.map +0 -1
- package/tsconfig/dist/types/preset.d.ts +0 -27
- package/tsconfig/dist/types/preset.d.ts.map +0 -1
- package/tsconfig/dist/types/preset.js +0 -6
- package/tsconfig/dist/types/preset.js.map +0 -1
- package/tsconfig/dist/types/types.d.ts +0 -6
- package/tsconfig/dist/types/types.d.ts.map +0 -1
- package/tsconfig/dist/types/types.js +0 -2
- package/tsconfig/dist/types/types.js.map +0 -1
- package/tsconfig/dist/utils/__tests__/env.spec.d.ts +0 -2
- package/tsconfig/dist/utils/__tests__/env.spec.d.ts.map +0 -1
- package/tsconfig/dist/utils/__tests__/env.spec.js +0 -33
- package/tsconfig/dist/utils/__tests__/env.spec.js.map +0 -1
- package/tsconfig/dist/utils/env.d.ts +0 -7
- package/tsconfig/dist/utils/env.d.ts.map +0 -1
- package/tsconfig/dist/utils/env.js +0 -25
- package/tsconfig/dist/utils/env.js.map +0 -1
- package/tsconfig/dist/utils/fs-atomic.d.ts +0 -15
- package/tsconfig/dist/utils/fs-atomic.d.ts.map +0 -1
- package/tsconfig/dist/utils/fs-atomic.js +0 -45
- package/tsconfig/dist/utils/fs-atomic.js.map +0 -1
- package/tsconfig/dist/utils/index.d.ts +0 -3
- package/tsconfig/dist/utils/index.d.ts.map +0 -1
- package/tsconfig/dist/utils/index.js +0 -3
- package/tsconfig/dist/utils/index.js.map +0 -1
- package/tsconfig/dist/utils/paths.d.ts +0 -21
- package/tsconfig/dist/utils/paths.d.ts.map +0 -1
- package/tsconfig/dist/utils/paths.js +0 -32
- package/tsconfig/dist/utils/paths.js.map +0 -1
- package/tsconfig/dist/utils/product-normalize.d.ts +0 -27
- package/tsconfig/dist/utils/product-normalize.d.ts.map +0 -1
- package/tsconfig/dist/utils/product-normalize.js +0 -45
- package/tsconfig/dist/utils/product-normalize.js.map +0 -1
- package/tsconfig/dist/validation/validate-config.d.ts +0 -7
- package/tsconfig/dist/validation/validate-config.d.ts.map +0 -1
- package/tsconfig/dist/validation/validate-config.js +0 -22
- package/tsconfig/dist/validation/validate-config.js.map +0 -1
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core/config/preset/resolve-preset
|
|
3
|
-
* Org preset resolution with offline-first npm package loading
|
|
4
|
-
*/
|
|
5
|
-
import { promises as fsp } from 'node:fs';
|
|
6
|
-
import path from 'node:path';
|
|
7
|
-
import { KbError, ERROR_HINTS } from '../errors/kb-error';
|
|
8
|
-
import { toFsProduct } from '../utils/product-normalize';
|
|
9
|
-
/**
|
|
10
|
-
* Resolve org preset package (offline-first)
|
|
11
|
-
*/
|
|
12
|
-
export async function resolvePreset(presetRef, cwd) {
|
|
13
|
-
// Parse preset reference (e.g., "@kb-labs/org-preset@1.3.2")
|
|
14
|
-
const [name, version] = parsePresetRef(presetRef);
|
|
15
|
-
// Try local node_modules first (offline-first)
|
|
16
|
-
const localPath = path.join(cwd, 'node_modules', name);
|
|
17
|
-
try {
|
|
18
|
-
const presetInfo = await loadPresetFromPath(localPath, name, version);
|
|
19
|
-
if (presetInfo) {
|
|
20
|
-
return presetInfo;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// Local preset not found, continue to network resolution
|
|
25
|
-
}
|
|
26
|
-
// Try network resolution (this would be implemented with npm/pnpm APIs)
|
|
27
|
-
// For now, we'll throw an error if local resolution fails
|
|
28
|
-
throw new KbError('ERR_PRESET_NOT_RESOLVED', `Preset not found: ${presetRef}`, ERROR_HINTS.ERR_PRESET_NOT_RESOLVED, { presetRef, cwd });
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Parse preset reference into name and version
|
|
32
|
-
*/
|
|
33
|
-
function parsePresetRef(presetRef) {
|
|
34
|
-
const atIndex = presetRef.lastIndexOf('@');
|
|
35
|
-
if (atIndex === -1) {
|
|
36
|
-
throw new KbError('ERR_PRESET_REF_INVALID', `Invalid preset reference: ${presetRef}`, 'Preset references must include version (e.g., @kb-labs/org-preset@1.3.2)', { presetRef });
|
|
37
|
-
}
|
|
38
|
-
const name = presetRef.substring(0, atIndex);
|
|
39
|
-
const version = presetRef.substring(atIndex + 1);
|
|
40
|
-
if (!name || !version) {
|
|
41
|
-
throw new KbError('ERR_PRESET_REF_INVALID', `Invalid preset reference: ${presetRef}`, 'Preset references must include both name and version', { presetRef });
|
|
42
|
-
}
|
|
43
|
-
return [name, version];
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Load preset from local path
|
|
47
|
-
*/
|
|
48
|
-
async function loadPresetFromPath(presetPath, name, version) {
|
|
49
|
-
try {
|
|
50
|
-
// Check if preset directory exists
|
|
51
|
-
await fsp.access(presetPath);
|
|
52
|
-
// Load package.json to verify version
|
|
53
|
-
const packageJsonPath = path.join(presetPath, 'package.json');
|
|
54
|
-
const packageJson = JSON.parse(await fsp.readFile(packageJsonPath, 'utf-8'));
|
|
55
|
-
// Verify version matches (supports semver ranges)
|
|
56
|
-
if (!versionMatches(packageJson.version, version)) {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
// Load preset config
|
|
60
|
-
const configPath = path.join(presetPath, 'config.defaults.json');
|
|
61
|
-
const config = JSON.parse(await fsp.readFile(configPath, 'utf-8'));
|
|
62
|
-
return {
|
|
63
|
-
name,
|
|
64
|
-
version: packageJson.version,
|
|
65
|
-
path: presetPath,
|
|
66
|
-
config,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Check if version matches (simple semver range support)
|
|
75
|
-
*/
|
|
76
|
-
function versionMatches(actualVersion, requiredVersion) {
|
|
77
|
-
// Simple exact match for now
|
|
78
|
-
// TODO: Implement proper semver range matching
|
|
79
|
-
if (requiredVersion.startsWith('^')) {
|
|
80
|
-
const major = requiredVersion.substring(1).split('.')[0];
|
|
81
|
-
const actualMajor = actualVersion.split('.')[0];
|
|
82
|
-
return major === actualMajor;
|
|
83
|
-
}
|
|
84
|
-
return actualVersion === requiredVersion;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get preset config for a specific product
|
|
88
|
-
*/
|
|
89
|
-
export function getPresetConfigForProduct(preset, product) {
|
|
90
|
-
const fsProduct = toFsProduct(product);
|
|
91
|
-
return preset.config.products?.[fsProduct] || {};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get preset metadata
|
|
95
|
-
*/
|
|
96
|
-
export function getPresetMetadata(preset) {
|
|
97
|
-
return {
|
|
98
|
-
name: preset.name,
|
|
99
|
-
version: preset.version,
|
|
100
|
-
path: preset.path,
|
|
101
|
-
products: Object.keys(preset.config.products || {}),
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=resolve-preset.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-preset.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/preset/resolve-preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo.spec.d.ts","sourceRoot":"","sources":["../../../../../kb-labs-core/packages/sys/src/repo/__tests__/repo.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { promises as fsp } from 'node:fs';
|
|
3
|
-
import os from 'node:os';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { findRepoRoot } from '../repo';
|
|
6
|
-
async function mkd(prefix = 'kb-core-sys-repo-') {
|
|
7
|
-
return await fsp.mkdtemp(path.join(os.tmpdir(), prefix));
|
|
8
|
-
}
|
|
9
|
-
describe('findRepoRoot', () => {
|
|
10
|
-
it('finds directory containing any marker (e.g., .git) when called from subdir', async () => {
|
|
11
|
-
const root = await mkd();
|
|
12
|
-
const sub = path.join(root, 'a/b/c');
|
|
13
|
-
await fsp.mkdir(sub, { recursive: true });
|
|
14
|
-
await fsp.mkdir(path.join(root, '.git'));
|
|
15
|
-
const found = await findRepoRoot(sub);
|
|
16
|
-
expect(found).toBe(root);
|
|
17
|
-
});
|
|
18
|
-
it('falls back to FS root if no marker is found up the tree', async () => {
|
|
19
|
-
const start = await mkd();
|
|
20
|
-
const found = await findRepoRoot(start);
|
|
21
|
-
// Implementation returns FS root when no markers are found
|
|
22
|
-
expect(found).toBe(path.parse(start).root);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=repo.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo.spec.js","sourceRoot":"","sources":["../../../../../kb-labs-core/packages/sys/src/repo/__tests__/repo.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,KAAK,UAAU,GAAG,CAAC,MAAM,GAAG,mBAAmB;IAC7C,OAAO,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAExC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAA;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,MAAM,GAAG,EAAE,CAAA;QACzB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAA;QACvC,2DAA2D;QAC3D,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/repo/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/repo/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/repo/repo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAsB,YAAY,CAAC,QAAQ,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core/sys/repo
|
|
3
|
-
* Repository root discovery. Pure infrastructure, no domain keys.
|
|
4
|
-
*/
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
import { promises as fsp } from "node:fs";
|
|
7
|
-
const markers = [".git", "pnpm-workspace.yaml", "package.json"];
|
|
8
|
-
export async function findRepoRoot(startDir = process.cwd()) {
|
|
9
|
-
let dir = path.resolve(startDir);
|
|
10
|
-
while (true) {
|
|
11
|
-
for (const m of markers) {
|
|
12
|
-
try {
|
|
13
|
-
await fsp.access(path.join(dir, m));
|
|
14
|
-
return dir;
|
|
15
|
-
}
|
|
16
|
-
catch { /* continue */ }
|
|
17
|
-
}
|
|
18
|
-
const parent = path.dirname(dir);
|
|
19
|
-
if (parent === dir) {
|
|
20
|
-
return dir;
|
|
21
|
-
} // FS root as fallback
|
|
22
|
-
dir = parent;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=repo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/repo/repo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE,cAAc,CAAC,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;IACvD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,IAAI,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC;gBAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,OAAO,GAAG,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YAAA,OAAO,GAAG,CAAC;QAAA,CAAC,CAAC,sBAAsB;QACxD,GAAG,GAAG,MAAM,CAAC;IACjB,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -1,46 +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 type { Diagnostic, FindNearestConfigOpts, JsonReadResult, ProfilesConfig, KBConfig } from "../types";
|
|
8
|
-
/** Find nearest config file walking up from startDir until stopDir or FS root. */
|
|
9
|
-
export declare function findNearestConfig(opts: FindNearestConfigOpts): Promise<{
|
|
10
|
-
path: string | null;
|
|
11
|
-
tried: string[];
|
|
12
|
-
}>;
|
|
13
|
-
/** Read JSON with explicit diagnostics (no silent nulls). */
|
|
14
|
-
export declare function readJsonWithDiagnostics<T = unknown>(p: string): Promise<JsonReadResult<T>>;
|
|
15
|
-
/** Shallow pick of defined fields only. */
|
|
16
|
-
export declare function pickDefined<T extends Record<string, any>>(obj: T | undefined): Partial<T>;
|
|
17
|
-
/** Deep merge (objects/arrays), ignoring `undefined` on the overlay. */
|
|
18
|
-
export declare function mergeDefined<T>(base: T, over?: Partial<T>): T;
|
|
19
|
-
declare const SYSTEM_DEFAULTS: {
|
|
20
|
-
readonly profiles: {
|
|
21
|
-
readonly rootDir: ".kb/profiles";
|
|
22
|
-
readonly defaultName: "default";
|
|
23
|
-
readonly strict: true;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
export interface ResolveConfigArgs<TConfig, _TEnvMap = unknown> {
|
|
27
|
-
defaults: TConfig;
|
|
28
|
-
fileConfig?: Partial<TConfig>;
|
|
29
|
-
envMapper?: (env: NodeJS.ProcessEnv) => Partial<TConfig> | undefined;
|
|
30
|
-
cliOverrides?: Partial<TConfig>;
|
|
31
|
-
validate?: (cfg: TConfig) => {
|
|
32
|
-
ok: boolean;
|
|
33
|
-
diagnostics?: Diagnostic[];
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Generic resolver: defaults → fileConfig → envMapper(process.env) → cliOverrides.
|
|
38
|
-
* No domain keys inside; mapping/validation provided by the product/shared layer.
|
|
39
|
-
*/
|
|
40
|
-
export declare function resolveConfig<TConfig>(args: ResolveConfigArgs<TConfig>): {
|
|
41
|
-
value: TConfig;
|
|
42
|
-
diagnostics: Diagnostic[];
|
|
43
|
-
};
|
|
44
|
-
export { SYSTEM_DEFAULTS };
|
|
45
|
-
export type { ProfilesConfig, KBConfig };
|
|
46
|
-
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE5G,kFAAkF;AAClF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsBtH;AAED,6DAA6D;AAC7D,wBAAsB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAehG;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAOzF;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAqB7D;AAMD,QAAA,MAAM,eAAe;;;;;;CAEX,CAAC;AAEX,MAAM,WAAW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAC5E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAuBtH;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -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":["../../../../kb-labs-core/packages/config/src/runtime/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"root":["../../../kb-labs-sdk/tsup.config.bin.ts","../../../kb-labs-sdk/tsup.config.cli.ts","../../../kb-labs-sdk/tsup.config.dual.ts","../../../kb-labs-sdk/tsup.config.ts","../../../kb-labs-sdk/vitest.config.ts","../../../kb-labs-sdk/packages/sdk/tsup.config.ts","../../../kb-labs-sdk/packages/sdk/dist/index.d.ts","../../../kb-labs-sdk/packages/sdk/dist/command/index.d.ts","../../../kb-labs-sdk/packages/sdk/dist/contracts/index.d.ts","../../../kb-labs-sdk/packages/sdk/dist/hooks/index.d.ts","../../../kb-labs-sdk/packages/sdk/dist/manifest/index.d.ts","../../../kb-labs-sdk/packages/sdk/dist/testing/index.d.ts","../../../kb-labs-sdk/packages/sdk/dist/types/index.d.ts","../../../kb-labs-sdk/packages/sdk/src/index.ts","../../../kb-labs-sdk/packages/sdk/src/__tests__/deep-behavior.test.ts","../../../kb-labs-sdk/packages/sdk/src/__tests__/entrypoint-contracts.test.ts","../../../kb-labs-sdk/packages/sdk/src/__tests__/exports.snapshot.test.ts","../../../kb-labs-sdk/packages/sdk/src/__type-tests__/sdk-typing.type-test.ts","../../../kb-labs-sdk/packages/sdk/src/command/index.ts","../../../kb-labs-sdk/packages/sdk/src/contracts/index.ts","../../../kb-labs-sdk/packages/sdk/src/hooks/index.ts","../../../kb-labs-sdk/packages/sdk/src/manifest/index.ts","../../../kb-labs-sdk/packages/sdk/src/test/create-test-context.ts","../../../kb-labs-sdk/packages/sdk/src/test/index.ts","../../../kb-labs-sdk/packages/sdk/src/testing/index.ts","../../../kb-labs-sdk/packages/sdk/src/types/index.ts","../../../kb-labs-sdk/packages/sdk/src/utils/index.ts","../../../kb-labs-sdk/eslint.config.js","../../../kb-labs-sdk/packages/sdk/eslint.config.js","../../../kb-labs-sdk/packages/sdk/dist/index.js","../../../kb-labs-sdk/packages/sdk/dist/command/index.js","../../../kb-labs-sdk/packages/sdk/dist/contracts/index.js","../../../kb-labs-sdk/packages/sdk/dist/hooks/index.js","../../../kb-labs-sdk/packages/sdk/dist/manifest/index.js","../../../kb-labs-sdk/packages/sdk/dist/testing/index.js","../../../kb-labs-sdk/packages/sdk/dist/types/index.js","../../../kb-labs-sdk/packages/sdk/scripts/check-api-removals.mjs","../../../kb-labs-sdk/packages/sdk/scripts/generate-export-glossary.mjs","../../../kb-labs-sdk/scripts/devkit-sync.mjs"],"errors":true,"version":"5.9.3"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":[],"fileInfos":[],"root":[],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"errors":true,"version":"5.9.3"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core/config/types/init
|
|
3
|
-
* Types for init operations
|
|
4
|
-
*/
|
|
5
|
-
import type { ProductId } from './types';
|
|
6
|
-
export interface InitWorkspaceOptions {
|
|
7
|
-
cwd: string;
|
|
8
|
-
format?: 'yaml' | 'json';
|
|
9
|
-
presetRef?: string | null;
|
|
10
|
-
profiles?: Record<string, string>;
|
|
11
|
-
products?: ProductId[];
|
|
12
|
-
dryRun?: boolean;
|
|
13
|
-
force?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface InitAction {
|
|
16
|
-
kind: 'write' | 'append' | 'update' | 'skip' | 'conflict';
|
|
17
|
-
path: string;
|
|
18
|
-
previewDiff?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface InitResult {
|
|
21
|
-
actions: InitAction[];
|
|
22
|
-
created: string[];
|
|
23
|
-
updated: string[];
|
|
24
|
-
skipped: string[];
|
|
25
|
-
warnings: string[];
|
|
26
|
-
}
|
|
27
|
-
export interface UpsertLockfileOptions {
|
|
28
|
-
cwd: string;
|
|
29
|
-
presetRef?: string | null;
|
|
30
|
-
profileRef?: string | null;
|
|
31
|
-
policyBundle?: string | null;
|
|
32
|
-
dryRun?: boolean;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/types/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,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,SAAS,EAAE,CAAC;IACvB,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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/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":["../../../../kb-labs-core/packages/config/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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/config/src/types/preset.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../kb-labs-core/packages/sys/src/types/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.spec.d.ts","sourceRoot":"","sources":["../../../../../kb-labs-core/packages/config/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":["../../../../../kb-labs-core/packages/config/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":["../../../../kb-labs-core/packages/config/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"}
|