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.
Files changed (80) hide show
  1. package/README.md +160 -0
  2. package/bin/ba-kit.js +2 -0
  3. package/dist/commands/cache.d.ts +8 -0
  4. package/dist/commands/cache.d.ts.map +1 -0
  5. package/dist/commands/cache.js +43 -0
  6. package/dist/commands/cache.js.map +1 -0
  7. package/dist/commands/completion.d.ts +9 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +172 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/init.d.ts +6 -0
  12. package/dist/commands/init.d.ts.map +1 -0
  13. package/dist/commands/init.js +142 -0
  14. package/dist/commands/init.js.map +1 -0
  15. package/dist/commands/restore.d.ts +6 -0
  16. package/dist/commands/restore.d.ts.map +1 -0
  17. package/dist/commands/restore.js +168 -0
  18. package/dist/commands/restore.js.map +1 -0
  19. package/dist/commands/status.d.ts +6 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +154 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/commands/update.d.ts +6 -0
  24. package/dist/commands/update.d.ts.map +1 -0
  25. package/dist/commands/update.js +300 -0
  26. package/dist/commands/update.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +120 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lib/cache.d.ts +50 -0
  32. package/dist/lib/cache.d.ts.map +1 -0
  33. package/dist/lib/cache.js +152 -0
  34. package/dist/lib/cache.js.map +1 -0
  35. package/dist/lib/config.d.ts +25 -0
  36. package/dist/lib/config.d.ts.map +1 -0
  37. package/dist/lib/config.js +67 -0
  38. package/dist/lib/config.js.map +1 -0
  39. package/dist/lib/copier.d.ts +10 -0
  40. package/dist/lib/copier.d.ts.map +1 -0
  41. package/dist/lib/copier.js +79 -0
  42. package/dist/lib/copier.js.map +1 -0
  43. package/dist/lib/differ.d.ts +16 -0
  44. package/dist/lib/differ.d.ts.map +1 -0
  45. package/dist/lib/differ.js +51 -0
  46. package/dist/lib/differ.js.map +1 -0
  47. package/dist/lib/downloader.d.ts +11 -0
  48. package/dist/lib/downloader.d.ts.map +1 -0
  49. package/dist/lib/downloader.js +110 -0
  50. package/dist/lib/downloader.js.map +1 -0
  51. package/dist/lib/hasher.d.ts +18 -0
  52. package/dist/lib/hasher.d.ts.map +1 -0
  53. package/dist/lib/hasher.js +54 -0
  54. package/dist/lib/hasher.js.map +1 -0
  55. package/dist/lib/manifest.d.ts +30 -0
  56. package/dist/lib/manifest.d.ts.map +1 -0
  57. package/dist/lib/manifest.js +72 -0
  58. package/dist/lib/manifest.js.map +1 -0
  59. package/dist/types.d.ts +91 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +21 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/utils/constants.d.ts +13 -0
  64. package/dist/utils/constants.d.ts.map +1 -0
  65. package/dist/utils/constants.js +38 -0
  66. package/dist/utils/constants.js.map +1 -0
  67. package/dist/utils/errors.d.ts +60 -0
  68. package/dist/utils/errors.d.ts.map +1 -0
  69. package/dist/utils/errors.js +99 -0
  70. package/dist/utils/errors.js.map +1 -0
  71. package/dist/utils/logger.d.ts +43 -0
  72. package/dist/utils/logger.d.ts.map +1 -0
  73. package/dist/utils/logger.js +107 -0
  74. package/dist/utils/logger.js.map +1 -0
  75. package/dist/utils/prompts.d.ts +18 -0
  76. package/dist/utils/prompts.d.ts.map +1 -0
  77. package/dist/utils/prompts.js +63 -0
  78. package/dist/utils/prompts.js.map +1 -0
  79. package/man/ba-kit.1 +194 -0
  80. 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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}