ba-kit-cli 2.0.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/README.md +160 -0
- package/bin/ba-kit.js +2 -0
- package/dist/commands/cache.d.ts +8 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +43 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/completion.d.ts +9 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +172 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +142 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/restore.d.ts +6 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +168 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +154 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +300 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +120 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +50 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +152 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/config.d.ts +25 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +67 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/copier.d.ts +10 -0
- package/dist/lib/copier.d.ts.map +1 -0
- package/dist/lib/copier.js +79 -0
- package/dist/lib/copier.js.map +1 -0
- package/dist/lib/differ.d.ts +16 -0
- package/dist/lib/differ.d.ts.map +1 -0
- package/dist/lib/differ.js +51 -0
- package/dist/lib/differ.js.map +1 -0
- package/dist/lib/downloader.d.ts +11 -0
- package/dist/lib/downloader.d.ts.map +1 -0
- package/dist/lib/downloader.js +110 -0
- package/dist/lib/downloader.js.map +1 -0
- package/dist/lib/hasher.d.ts +18 -0
- package/dist/lib/hasher.d.ts.map +1 -0
- package/dist/lib/hasher.js +54 -0
- package/dist/lib/hasher.js.map +1 -0
- package/dist/lib/manifest.d.ts +30 -0
- package/dist/lib/manifest.d.ts.map +1 -0
- package/dist/lib/manifest.js +72 -0
- package/dist/lib/manifest.js.map +1 -0
- package/dist/types.d.ts +91 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +21 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/constants.d.ts +13 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +38 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.d.ts +60 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +99 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +43 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +107 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/prompts.d.ts +18 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +63 -0
- package/dist/utils/prompts.js.map +1 -0
- package/man/ba-kit.1 +194 -0
- package/package.json +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { dirname, join } from 'path';
|
|
5
|
+
import { setLoggerOptions } from './utils/logger.js';
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name('ba-kit')
|
|
11
|
+
.description('CLI tool for scaffolding BA-Kit into projects')
|
|
12
|
+
.version(pkg.version)
|
|
13
|
+
.option('-v, --verbose', 'Enable verbose output')
|
|
14
|
+
.option('-q, --quiet', 'Suppress non-essential output')
|
|
15
|
+
.option('--json', 'Output in JSON format (for scripting)')
|
|
16
|
+
.hook('preAction', (thisCommand) => {
|
|
17
|
+
const opts = thisCommand.opts();
|
|
18
|
+
setLoggerOptions({
|
|
19
|
+
verbose: opts.verbose,
|
|
20
|
+
quiet: opts.quiet,
|
|
21
|
+
json: opts.json,
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
program
|
|
25
|
+
.command('init [path]')
|
|
26
|
+
.description('Initialize BA-Kit in current or specified directory')
|
|
27
|
+
.option('-f, --force', 'Overwrite existing .agent/ folder')
|
|
28
|
+
.option('-b, --branch <branch>', 'Branch to use', 'main')
|
|
29
|
+
.option('-l, --local <path>', 'Use local ba-kit source instead of GitHub')
|
|
30
|
+
.addHelpText('after', `
|
|
31
|
+
Examples:
|
|
32
|
+
$ ba-kit init # Initialize in current directory
|
|
33
|
+
$ ba-kit init ./my-project # Initialize in specific directory
|
|
34
|
+
$ ba-kit init --force # Overwrite existing installation
|
|
35
|
+
$ ba-kit init --branch develop # Use develop branch
|
|
36
|
+
`)
|
|
37
|
+
.action(async (path, options) => {
|
|
38
|
+
const { init } = await import('./commands/init.js');
|
|
39
|
+
await init(path, options);
|
|
40
|
+
});
|
|
41
|
+
program
|
|
42
|
+
.command('update')
|
|
43
|
+
.description('Update BA-Kit to latest version')
|
|
44
|
+
.option('-y, --yes', 'Auto-accept non-conflicting updates')
|
|
45
|
+
.option('--dry-run', 'Show changes without applying')
|
|
46
|
+
.option('-l, --local <path>', 'Use local ba-kit source instead of GitHub')
|
|
47
|
+
.addHelpText('after', `
|
|
48
|
+
Examples:
|
|
49
|
+
$ ba-kit update # Interactive update
|
|
50
|
+
$ ba-kit update --yes # Auto-accept all non-conflicts
|
|
51
|
+
$ ba-kit update --dry-run # Preview changes without applying
|
|
52
|
+
`)
|
|
53
|
+
.action(async (options) => {
|
|
54
|
+
const { update } = await import('./commands/update.js');
|
|
55
|
+
await update(options);
|
|
56
|
+
});
|
|
57
|
+
program
|
|
58
|
+
.command('status')
|
|
59
|
+
.description('Show BA-Kit installation status')
|
|
60
|
+
.option('--remote', 'Check against remote for updates')
|
|
61
|
+
.addHelpText('after', `
|
|
62
|
+
Examples:
|
|
63
|
+
$ ba-kit status # Show local file status
|
|
64
|
+
$ ba-kit status --remote # Also check for remote updates
|
|
65
|
+
`)
|
|
66
|
+
.action(async (options) => {
|
|
67
|
+
const { status } = await import('./commands/status.js');
|
|
68
|
+
await status(options);
|
|
69
|
+
});
|
|
70
|
+
program
|
|
71
|
+
.command('restore [file]')
|
|
72
|
+
.description('Restore modified files to original')
|
|
73
|
+
.option('-a, --all', 'Restore all modified files')
|
|
74
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
75
|
+
.option('-l, --local <path>', 'Use local ba-kit source instead of GitHub')
|
|
76
|
+
.addHelpText('after', `
|
|
77
|
+
Examples:
|
|
78
|
+
$ ba-kit restore # Interactive selection
|
|
79
|
+
$ ba-kit restore workflows/main.md # Restore specific file
|
|
80
|
+
$ ba-kit restore --all --yes # Restore all without prompts
|
|
81
|
+
`)
|
|
82
|
+
.action(async (file, options) => {
|
|
83
|
+
const { restore } = await import('./commands/restore.js');
|
|
84
|
+
await restore(file, options);
|
|
85
|
+
});
|
|
86
|
+
program
|
|
87
|
+
.command('cache')
|
|
88
|
+
.description('Manage download cache')
|
|
89
|
+
.option('--clear', 'Clear the download cache')
|
|
90
|
+
.addHelpText('after', `
|
|
91
|
+
Examples:
|
|
92
|
+
$ ba-kit cache # Show cache info
|
|
93
|
+
$ ba-kit cache --clear # Clear all cached files
|
|
94
|
+
`)
|
|
95
|
+
.action(async (options) => {
|
|
96
|
+
const { cache } = await import('./commands/cache.js');
|
|
97
|
+
await cache(options);
|
|
98
|
+
});
|
|
99
|
+
program
|
|
100
|
+
.command('completion <shell>')
|
|
101
|
+
.description('Generate shell completion script')
|
|
102
|
+
.addHelpText('after', `
|
|
103
|
+
Supported shells: bash, zsh, fish
|
|
104
|
+
|
|
105
|
+
Examples:
|
|
106
|
+
# Bash (add to ~/.bashrc)
|
|
107
|
+
$ ba-kit completion bash >> ~/.bashrc
|
|
108
|
+
|
|
109
|
+
# Zsh (add to fpath)
|
|
110
|
+
$ ba-kit completion zsh > ~/.zsh/completions/_ba-kit
|
|
111
|
+
|
|
112
|
+
# Fish
|
|
113
|
+
$ ba-kit completion fish > ~/.config/fish/completions/ba-kit.fish
|
|
114
|
+
`)
|
|
115
|
+
.action(async (shell) => {
|
|
116
|
+
const { completion } = await import('./commands/completion.js');
|
|
117
|
+
completion(shell);
|
|
118
|
+
});
|
|
119
|
+
program.parse();
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache entry metadata
|
|
3
|
+
*/
|
|
4
|
+
export interface CacheEntry {
|
|
5
|
+
etag?: string;
|
|
6
|
+
lastModified?: string;
|
|
7
|
+
cachedAt: string;
|
|
8
|
+
version: string;
|
|
9
|
+
tarballPath: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Cache index structure
|
|
13
|
+
*/
|
|
14
|
+
export interface CacheIndex {
|
|
15
|
+
entries: Record<string, CacheEntry>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get cached tarball if valid
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCached(branch: string): Promise<CacheEntry | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Store tarball in cache
|
|
23
|
+
*/
|
|
24
|
+
export declare function setCached(branch: string, version: string, tarballBuffer: Buffer, etag?: string, lastModified?: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Get ETag for conditional request
|
|
27
|
+
*/
|
|
28
|
+
export declare function getEtag(branch: string): Promise<string | undefined>;
|
|
29
|
+
/**
|
|
30
|
+
* Clear entire cache
|
|
31
|
+
*/
|
|
32
|
+
export declare function clearCache(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Get cache statistics
|
|
35
|
+
*/
|
|
36
|
+
export declare function getCacheStats(): Promise<{
|
|
37
|
+
entries: number;
|
|
38
|
+
totalSize: number;
|
|
39
|
+
location: string;
|
|
40
|
+
files: Array<{
|
|
41
|
+
name: string;
|
|
42
|
+
size: number;
|
|
43
|
+
age: string;
|
|
44
|
+
}>;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Get cache directory path
|
|
48
|
+
*/
|
|
49
|
+
export declare function getCacheDir(): string;
|
|
50
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AA2DD;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAU1E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D,CAAC,CA0BD;AAeD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
2
|
+
import { homedir } from 'os';
|
|
3
|
+
import { mkdir, readFile, writeFile, rm, access, stat } from 'fs/promises';
|
|
4
|
+
import { createHash } from 'crypto';
|
|
5
|
+
const CACHE_DIR = join(homedir(), '.cache', 'ba-kit');
|
|
6
|
+
const INDEX_FILE = join(CACHE_DIR, 'index.json');
|
|
7
|
+
const MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
8
|
+
/**
|
|
9
|
+
* Ensure cache directory exists
|
|
10
|
+
*/
|
|
11
|
+
async function ensureCacheDir() {
|
|
12
|
+
await mkdir(CACHE_DIR, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get cache index
|
|
16
|
+
*/
|
|
17
|
+
async function getIndex() {
|
|
18
|
+
try {
|
|
19
|
+
const content = await readFile(INDEX_FILE, 'utf8');
|
|
20
|
+
return JSON.parse(content);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return { entries: {} };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Save cache index
|
|
28
|
+
*/
|
|
29
|
+
async function saveIndex(index) {
|
|
30
|
+
await ensureCacheDir();
|
|
31
|
+
await writeFile(INDEX_FILE, JSON.stringify(index, null, 2));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate cache key from branch
|
|
35
|
+
*/
|
|
36
|
+
function getCacheKey(branch) {
|
|
37
|
+
return createHash('md5').update(branch).digest('hex').slice(0, 8);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if cached entry is still valid
|
|
41
|
+
*/
|
|
42
|
+
async function isValidCache(entry) {
|
|
43
|
+
if (!entry)
|
|
44
|
+
return false;
|
|
45
|
+
// Check age
|
|
46
|
+
const cachedAt = new Date(entry.cachedAt).getTime();
|
|
47
|
+
if (Date.now() - cachedAt > MAX_AGE_MS)
|
|
48
|
+
return false;
|
|
49
|
+
// Check file exists
|
|
50
|
+
try {
|
|
51
|
+
await access(entry.tarballPath);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get cached tarball if valid
|
|
60
|
+
*/
|
|
61
|
+
export async function getCached(branch) {
|
|
62
|
+
const index = await getIndex();
|
|
63
|
+
const key = getCacheKey(branch);
|
|
64
|
+
const entry = index.entries[key];
|
|
65
|
+
if (await isValidCache(entry)) {
|
|
66
|
+
return entry;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Store tarball in cache
|
|
72
|
+
*/
|
|
73
|
+
export async function setCached(branch, version, tarballBuffer, etag, lastModified) {
|
|
74
|
+
await ensureCacheDir();
|
|
75
|
+
const key = getCacheKey(branch);
|
|
76
|
+
const tarballPath = join(CACHE_DIR, `${key}-${version}.tar.gz`);
|
|
77
|
+
await writeFile(tarballPath, tarballBuffer);
|
|
78
|
+
const index = await getIndex();
|
|
79
|
+
index.entries[key] = {
|
|
80
|
+
etag,
|
|
81
|
+
lastModified,
|
|
82
|
+
cachedAt: new Date().toISOString(),
|
|
83
|
+
version,
|
|
84
|
+
tarballPath,
|
|
85
|
+
};
|
|
86
|
+
await saveIndex(index);
|
|
87
|
+
return tarballPath;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get ETag for conditional request
|
|
91
|
+
*/
|
|
92
|
+
export async function getEtag(branch) {
|
|
93
|
+
const index = await getIndex();
|
|
94
|
+
const key = getCacheKey(branch);
|
|
95
|
+
return index.entries[key]?.etag;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Clear entire cache
|
|
99
|
+
*/
|
|
100
|
+
export async function clearCache() {
|
|
101
|
+
await rm(CACHE_DIR, { recursive: true, force: true });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get cache statistics
|
|
105
|
+
*/
|
|
106
|
+
export async function getCacheStats() {
|
|
107
|
+
const index = await getIndex();
|
|
108
|
+
let totalSize = 0;
|
|
109
|
+
const files = [];
|
|
110
|
+
for (const [key, entry] of Object.entries(index.entries)) {
|
|
111
|
+
try {
|
|
112
|
+
const s = await stat(entry.tarballPath);
|
|
113
|
+
totalSize += s.size;
|
|
114
|
+
const age = formatAge(new Date(entry.cachedAt));
|
|
115
|
+
files.push({
|
|
116
|
+
name: `${key} (v${entry.version})`,
|
|
117
|
+
size: s.size,
|
|
118
|
+
age,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// File may be deleted
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
entries: files.length,
|
|
127
|
+
totalSize,
|
|
128
|
+
location: CACHE_DIR,
|
|
129
|
+
files,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Format age for display
|
|
134
|
+
*/
|
|
135
|
+
function formatAge(date) {
|
|
136
|
+
const ms = Date.now() - date.getTime();
|
|
137
|
+
const mins = Math.floor(ms / 60000);
|
|
138
|
+
if (mins < 60)
|
|
139
|
+
return `${mins}m ago`;
|
|
140
|
+
const hours = Math.floor(mins / 60);
|
|
141
|
+
if (hours < 24)
|
|
142
|
+
return `${hours}h ago`;
|
|
143
|
+
const days = Math.floor(hours / 24);
|
|
144
|
+
return `${days}d ago`;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get cache directory path
|
|
148
|
+
*/
|
|
149
|
+
export function getCacheDir() {
|
|
150
|
+
return CACHE_DIR;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration schema with Zod validation
|
|
4
|
+
*/
|
|
5
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
6
|
+
branch: z.ZodOptional<z.ZodString>;
|
|
7
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
quiet: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
autoUpdate: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
cacheDir: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type Config = z.infer<typeof ConfigSchema>;
|
|
13
|
+
/**
|
|
14
|
+
* Load config from project or home directory
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadConfig(projectPath: string): Promise<Config>;
|
|
17
|
+
/**
|
|
18
|
+
* Merge CLI options with loaded config (CLI takes precedence)
|
|
19
|
+
*/
|
|
20
|
+
export declare function mergeConfig<T extends object>(options: T, config: Config): T & Config;
|
|
21
|
+
/**
|
|
22
|
+
* Get default config values
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDefaultConfig(): Config;
|
|
25
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;iBAMvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAQlD;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBrE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,MAAM,GACb,CAAC,GAAG,MAAM,CAaZ;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Configuration schema with Zod validation
|
|
7
|
+
*/
|
|
8
|
+
export const ConfigSchema = z.object({
|
|
9
|
+
branch: z.string().optional(),
|
|
10
|
+
verbose: z.boolean().optional(),
|
|
11
|
+
quiet: z.boolean().optional(),
|
|
12
|
+
autoUpdate: z.boolean().optional(),
|
|
13
|
+
cacheDir: z.string().optional(),
|
|
14
|
+
});
|
|
15
|
+
const CONFIG_FILENAMES = [
|
|
16
|
+
'.ba-kitrc',
|
|
17
|
+
'.ba-kitrc.json',
|
|
18
|
+
'ba-kit.config.json',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Load config from project or home directory
|
|
22
|
+
*/
|
|
23
|
+
export async function loadConfig(projectPath) {
|
|
24
|
+
// Try project-level config files
|
|
25
|
+
for (const filename of CONFIG_FILENAMES) {
|
|
26
|
+
try {
|
|
27
|
+
const content = await readFile(join(projectPath, filename), 'utf8');
|
|
28
|
+
return ConfigSchema.parse(JSON.parse(content));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Continue to next file
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Try global config in ~/.config/ba-kit/
|
|
35
|
+
const globalConfigPath = join(homedir(), '.config', 'ba-kit', 'config.json');
|
|
36
|
+
try {
|
|
37
|
+
const content = await readFile(globalConfigPath, 'utf8');
|
|
38
|
+
return ConfigSchema.parse(JSON.parse(content));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// No config found, return defaults
|
|
42
|
+
}
|
|
43
|
+
return ConfigSchema.parse({});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Merge CLI options with loaded config (CLI takes precedence)
|
|
47
|
+
*/
|
|
48
|
+
export function mergeConfig(options, config) {
|
|
49
|
+
// Filter out undefined values from options so config defaults can apply
|
|
50
|
+
const definedOptions = {};
|
|
51
|
+
for (const [key, value] of Object.entries(options)) {
|
|
52
|
+
if (value !== undefined) {
|
|
53
|
+
definedOptions[key] = value;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
...config,
|
|
58
|
+
...definedOptions,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get default config values
|
|
63
|
+
*/
|
|
64
|
+
export function getDefaultConfig() {
|
|
65
|
+
return ConfigSchema.parse({});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAIH,MAAM,gBAAgB,GAAG;IACvB,WAAW;IACX,gBAAgB;IAChB,oBAAoB;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB;IAClD,iCAAiC;IACjC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;YACpE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,MAAc;IAEd,wEAAwE;IACxE,MAAM,cAAc,GAAe,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,cAA0C,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,GAAG,cAAc;KACJ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ManifestFile } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Copy files from extracted ba-kit to target .agent/ directory
|
|
4
|
+
*/
|
|
5
|
+
export declare function copyBaKitFiles(sourcePath: string, targetPath: string): Promise<Record<string, ManifestFile>>;
|
|
6
|
+
/**
|
|
7
|
+
* Check if .agent directory exists
|
|
8
|
+
*/
|
|
9
|
+
export declare function agentDirExists(basePath: string): Promise<boolean>;
|
|
10
|
+
//# sourceMappingURL=copier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copier.d.ts","sourceRoot":"","sources":["../../src/lib/copier.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAsCvC;AA4BD;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { copyFile, mkdir, readdir, stat } from 'fs/promises';
|
|
2
|
+
import { join, dirname, relative } from 'path';
|
|
3
|
+
import { CONFIG } from '../utils/constants.js';
|
|
4
|
+
import { hashFile } from './hasher.js';
|
|
5
|
+
/**
|
|
6
|
+
* Copy files from extracted ba-kit to target .agent/ directory
|
|
7
|
+
*/
|
|
8
|
+
export async function copyBaKitFiles(sourcePath, targetPath) {
|
|
9
|
+
const agentDir = join(targetPath, CONFIG.AGENT_DIR);
|
|
10
|
+
await mkdir(agentDir, { recursive: true });
|
|
11
|
+
const fileEntries = {};
|
|
12
|
+
for (const [src, dest] of Object.entries(CONFIG.FILE_MAP)) {
|
|
13
|
+
const srcPath = join(sourcePath, src);
|
|
14
|
+
const destPath = join(agentDir, dest);
|
|
15
|
+
const srcStat = await stat(srcPath).catch(() => null);
|
|
16
|
+
if (!srcStat)
|
|
17
|
+
continue;
|
|
18
|
+
if (srcStat.isDirectory()) {
|
|
19
|
+
const files = await copyDirectory(srcPath, destPath);
|
|
20
|
+
for (const file of files) {
|
|
21
|
+
const relativePath = relative(agentDir, file.dest);
|
|
22
|
+
const hash = await hashFile(file.dest);
|
|
23
|
+
fileEntries[relativePath] = {
|
|
24
|
+
original_hash: hash,
|
|
25
|
+
current_hash: hash,
|
|
26
|
+
source_path: relative(sourcePath, file.src),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
await mkdir(dirname(destPath), { recursive: true });
|
|
32
|
+
await copyFile(srcPath, destPath);
|
|
33
|
+
const relativePath = relative(agentDir, destPath);
|
|
34
|
+
const hash = await hashFile(destPath);
|
|
35
|
+
fileEntries[relativePath] = {
|
|
36
|
+
original_hash: hash,
|
|
37
|
+
current_hash: hash,
|
|
38
|
+
source_path: src,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return fileEntries;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Copy directory recursively
|
|
46
|
+
*/
|
|
47
|
+
async function copyDirectory(src, dest) {
|
|
48
|
+
await mkdir(dest, { recursive: true });
|
|
49
|
+
const entries = await readdir(src, { withFileTypes: true });
|
|
50
|
+
const copied = [];
|
|
51
|
+
for (const entry of entries) {
|
|
52
|
+
const srcPath = join(src, entry.name);
|
|
53
|
+
const destPath = join(dest, entry.name);
|
|
54
|
+
if (CONFIG.EXCLUDE.includes(entry.name))
|
|
55
|
+
continue;
|
|
56
|
+
if (entry.isDirectory()) {
|
|
57
|
+
const subFiles = await copyDirectory(srcPath, destPath);
|
|
58
|
+
copied.push(...subFiles);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
await copyFile(srcPath, destPath);
|
|
62
|
+
copied.push({ src: srcPath, dest: destPath });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return copied;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if .agent directory exists
|
|
69
|
+
*/
|
|
70
|
+
export async function agentDirExists(basePath) {
|
|
71
|
+
try {
|
|
72
|
+
const s = await stat(join(basePath, CONFIG.AGENT_DIR));
|
|
73
|
+
return s.isDirectory();
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=copier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copier.js","sourceRoot":"","sources":["../../src/lib/copier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Show diff between two file contents
|
|
3
|
+
*/
|
|
4
|
+
export declare function showDiff(originalContent: string, currentContent: string, fileName: string): void;
|
|
5
|
+
/**
|
|
6
|
+
* Generate unified diff patch
|
|
7
|
+
*/
|
|
8
|
+
export declare function generatePatch(originalContent: string, currentContent: string, fileName: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Compare two files and return diff stats
|
|
11
|
+
*/
|
|
12
|
+
export declare function diffFiles(file1Path: string, file2Path: string): Promise<{
|
|
13
|
+
additions: number;
|
|
14
|
+
deletions: number;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=differ.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../src/lib/differ.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,QAAQ,CACtB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,IAAI,CAuBN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,MAAM,CASR;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAcnD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { diffLines, createTwoFilesPatch } from 'diff';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
/**
|
|
5
|
+
* Show diff between two file contents
|
|
6
|
+
*/
|
|
7
|
+
export function showDiff(originalContent, currentContent, fileName) {
|
|
8
|
+
const diff = diffLines(originalContent, currentContent);
|
|
9
|
+
console.log('');
|
|
10
|
+
console.log(chalk.bold(`Diff: ${fileName}`));
|
|
11
|
+
console.log(chalk.dim('─'.repeat(60)));
|
|
12
|
+
for (const part of diff) {
|
|
13
|
+
const color = part.added
|
|
14
|
+
? chalk.green
|
|
15
|
+
: part.removed
|
|
16
|
+
? chalk.red
|
|
17
|
+
: chalk.dim;
|
|
18
|
+
const prefix = part.added ? '+' : part.removed ? '-' : ' ';
|
|
19
|
+
const lines = part.value.split('\n');
|
|
20
|
+
for (const line of lines) {
|
|
21
|
+
if (line)
|
|
22
|
+
console.log(color(`${prefix} ${line}`));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
console.log(chalk.dim('─'.repeat(60)));
|
|
26
|
+
console.log('');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate unified diff patch
|
|
30
|
+
*/
|
|
31
|
+
export function generatePatch(originalContent, currentContent, fileName) {
|
|
32
|
+
return createTwoFilesPatch(`a/${fileName}`, `b/${fileName}`, originalContent, currentContent, 'original', 'current');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Compare two files and return diff stats
|
|
36
|
+
*/
|
|
37
|
+
export async function diffFiles(file1Path, file2Path) {
|
|
38
|
+
const content1 = await readFile(file1Path, 'utf8');
|
|
39
|
+
const content2 = await readFile(file2Path, 'utf8');
|
|
40
|
+
const diff = diffLines(content1, content2);
|
|
41
|
+
let additions = 0;
|
|
42
|
+
let deletions = 0;
|
|
43
|
+
for (const part of diff) {
|
|
44
|
+
if (part.added)
|
|
45
|
+
additions += part.count ?? 0;
|
|
46
|
+
if (part.removed)
|
|
47
|
+
deletions += part.count ?? 0;
|
|
48
|
+
}
|
|
49
|
+
return { additions, deletions };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=differ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"differ.js","sourceRoot":"","sources":["../../src/lib/differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,eAAuB,EACvB,cAAsB,EACtB,QAAgB;IAEhB,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAExD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACtB,CAAC,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC,IAAI,CAAC,OAAO;gBACZ,CAAC,CAAC,KAAK,CAAC,GAAG;gBACX,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,eAAuB,EACvB,cAAsB,EACtB,QAAgB;IAEhB,OAAO,mBAAmB,CACxB,KAAK,QAAQ,EAAE,EACf,KAAK,QAAQ,EAAE,EACf,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK;YAAE,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,OAAO;YAAE,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
|