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
package/README.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# ba-kit-cli
|
|
2
|
+
|
|
3
|
+
CLI tool for scaffolding [BA-Kit](https://github.com/anthropics/ba-kit) into your projects.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g ba-kit-cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Initialize BA-Kit
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Initialize in current directory
|
|
17
|
+
ba-kit init
|
|
18
|
+
|
|
19
|
+
# Initialize in specific directory
|
|
20
|
+
ba-kit init ./my-project
|
|
21
|
+
|
|
22
|
+
# Force overwrite existing installation
|
|
23
|
+
ba-kit init --force
|
|
24
|
+
|
|
25
|
+
# Use specific branch
|
|
26
|
+
ba-kit init --branch develop
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Check Status
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Show installation status
|
|
33
|
+
ba-kit status
|
|
34
|
+
|
|
35
|
+
# Check for remote updates
|
|
36
|
+
ba-kit status --remote
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Update BA-Kit
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Interactive update with conflict resolution
|
|
43
|
+
ba-kit update
|
|
44
|
+
|
|
45
|
+
# Auto-accept non-conflicting updates
|
|
46
|
+
ba-kit update --yes
|
|
47
|
+
|
|
48
|
+
# Preview changes without applying
|
|
49
|
+
ba-kit update --dry-run
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Restore Modified Files
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Interactive file selection
|
|
56
|
+
ba-kit restore
|
|
57
|
+
|
|
58
|
+
# Restore specific file
|
|
59
|
+
ba-kit restore skills/core/planning.md
|
|
60
|
+
|
|
61
|
+
# Restore all modified files
|
|
62
|
+
ba-kit restore --all
|
|
63
|
+
|
|
64
|
+
# Skip confirmation
|
|
65
|
+
ba-kit restore --all --yes
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Commands
|
|
69
|
+
|
|
70
|
+
| Command | Description |
|
|
71
|
+
|---------|-------------|
|
|
72
|
+
| `init [path]` | Initialize BA-Kit in current or specified directory |
|
|
73
|
+
| `status` | Show BA-Kit installation status |
|
|
74
|
+
| `update` | Update BA-Kit to latest version |
|
|
75
|
+
| `restore [file]` | Restore modified files to original |
|
|
76
|
+
|
|
77
|
+
## Options
|
|
78
|
+
|
|
79
|
+
### Global
|
|
80
|
+
|
|
81
|
+
| Option | Description |
|
|
82
|
+
|--------|-------------|
|
|
83
|
+
| `-V, --version` | Display version |
|
|
84
|
+
| `-h, --help` | Display help |
|
|
85
|
+
|
|
86
|
+
### init
|
|
87
|
+
|
|
88
|
+
| Option | Description |
|
|
89
|
+
|--------|-------------|
|
|
90
|
+
| `-f, --force` | Overwrite existing .agent/ folder |
|
|
91
|
+
| `-b, --branch <branch>` | Branch to use (default: main) |
|
|
92
|
+
| `-l, --local <path>` | Use local ba-kit source |
|
|
93
|
+
|
|
94
|
+
### update
|
|
95
|
+
|
|
96
|
+
| Option | Description |
|
|
97
|
+
|--------|-------------|
|
|
98
|
+
| `-y, --yes` | Auto-accept non-conflicting updates |
|
|
99
|
+
| `--dry-run` | Show changes without applying |
|
|
100
|
+
| `-l, --local <path>` | Use local ba-kit source |
|
|
101
|
+
|
|
102
|
+
### status
|
|
103
|
+
|
|
104
|
+
| Option | Description |
|
|
105
|
+
|--------|-------------|
|
|
106
|
+
| `--remote` | Check against remote for updates |
|
|
107
|
+
|
|
108
|
+
### restore
|
|
109
|
+
|
|
110
|
+
| Option | Description |
|
|
111
|
+
|--------|-------------|
|
|
112
|
+
| `-a, --all` | Restore all modified files |
|
|
113
|
+
| `-y, --yes` | Skip confirmation prompt |
|
|
114
|
+
| `-l, --local <path>` | Use local ba-kit source |
|
|
115
|
+
|
|
116
|
+
## How It Works
|
|
117
|
+
|
|
118
|
+
BA-Kit CLI uses a manifest-based approach to track files:
|
|
119
|
+
|
|
120
|
+
1. **Init**: Downloads BA-Kit from GitHub, copies files to `.agent/`, creates manifest with SHA-256 hashes
|
|
121
|
+
2. **Status**: Compares current file hashes against manifest to detect modifications
|
|
122
|
+
3. **Update**: Downloads latest version, detects conflicts between local changes and upstream updates
|
|
123
|
+
4. **Restore**: Downloads original files and restores modified files with automatic backups
|
|
124
|
+
|
|
125
|
+
### Manifest
|
|
126
|
+
|
|
127
|
+
The manifest file (`.agent/.ba-kit-manifest.json`) tracks:
|
|
128
|
+
- Installed version
|
|
129
|
+
- Branch used
|
|
130
|
+
- File hashes (original and current)
|
|
131
|
+
- Installation/update timestamps
|
|
132
|
+
|
|
133
|
+
### Conflict Resolution
|
|
134
|
+
|
|
135
|
+
When both local and upstream files have changed, the update command offers:
|
|
136
|
+
- **Keep local**: Preserve your modifications
|
|
137
|
+
- **Overwrite**: Accept upstream changes
|
|
138
|
+
- **View diff**: Compare changes side-by-side
|
|
139
|
+
- **Backup & overwrite**: Save local copy before updating
|
|
140
|
+
|
|
141
|
+
## Development
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Clone the repo
|
|
145
|
+
git clone https://github.com/anthropics/ba-kit-cli.git
|
|
146
|
+
cd ba-kit-cli
|
|
147
|
+
|
|
148
|
+
# Install dependencies
|
|
149
|
+
npm install
|
|
150
|
+
|
|
151
|
+
# Link for local development
|
|
152
|
+
npm link
|
|
153
|
+
|
|
154
|
+
# Test with local ba-kit source
|
|
155
|
+
ba-kit init --local /path/to/ba-kit
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT
|
package/bin/ba-kit.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { log } from '../utils/logger.js';
|
|
2
|
+
import { clearCache, getCacheStats } from '../lib/cache.js';
|
|
3
|
+
/**
|
|
4
|
+
* Manage ba-kit download cache
|
|
5
|
+
*/
|
|
6
|
+
export async function cache(options) {
|
|
7
|
+
if (options.clear) {
|
|
8
|
+
await clearCache();
|
|
9
|
+
log.success('Cache cleared');
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
// Show cache info using cache manager
|
|
13
|
+
const stats = await getCacheStats();
|
|
14
|
+
console.log('');
|
|
15
|
+
log.info(`Location: ${stats.location}`);
|
|
16
|
+
log.info(`Entries: ${stats.entries}`);
|
|
17
|
+
log.info(`Size: ${formatBytes(stats.totalSize)}`);
|
|
18
|
+
if (stats.files.length > 0) {
|
|
19
|
+
console.log('');
|
|
20
|
+
log.dim('Cached tarballs:');
|
|
21
|
+
for (const file of stats.files) {
|
|
22
|
+
log.dim(` ${file.name} (${formatBytes(file.size)}, ${file.age})`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
console.log('');
|
|
26
|
+
if (stats.entries > 0) {
|
|
27
|
+
log.dim('Run `ba-kit cache --clear` to clear the cache');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
log.dim('Cache is empty');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Format bytes to human-readable string
|
|
35
|
+
*/
|
|
36
|
+
function formatBytes(bytes) {
|
|
37
|
+
if (bytes < 1024)
|
|
38
|
+
return `${bytes} B`;
|
|
39
|
+
if (bytes < 1024 * 1024)
|
|
40
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
41
|
+
return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAe,MAAM,iBAAiB,CAAC;AAMzE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB;IAC/C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,UAAU,EAAE,CAAC;QACnB,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,sCAAsC;IACtC,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxC,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+IH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CA0B7C"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell completion scripts for ba-kit CLI
|
|
3
|
+
*/
|
|
4
|
+
const BASH_COMPLETION = `
|
|
5
|
+
_ba_kit_completion() {
|
|
6
|
+
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
7
|
+
local commands="init update status restore completion cache help"
|
|
8
|
+
|
|
9
|
+
if [ "\${COMP_CWORD}" -eq 1 ]; then
|
|
10
|
+
COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
|
|
11
|
+
else
|
|
12
|
+
case "\${COMP_WORDS[1]}" in
|
|
13
|
+
init)
|
|
14
|
+
COMPREPLY=( $(compgen -W "--force --branch --local --help" -- "\${cur}") )
|
|
15
|
+
;;
|
|
16
|
+
update)
|
|
17
|
+
COMPREPLY=( $(compgen -W "--yes --dry-run --local --help" -- "\${cur}") )
|
|
18
|
+
;;
|
|
19
|
+
status)
|
|
20
|
+
COMPREPLY=( $(compgen -W "--remote --help" -- "\${cur}") )
|
|
21
|
+
;;
|
|
22
|
+
restore)
|
|
23
|
+
COMPREPLY=( $(compgen -W "--all --yes --local --help" -- "\${cur}") )
|
|
24
|
+
;;
|
|
25
|
+
cache)
|
|
26
|
+
COMPREPLY=( $(compgen -W "--clear --help" -- "\${cur}") )
|
|
27
|
+
;;
|
|
28
|
+
esac
|
|
29
|
+
fi
|
|
30
|
+
}
|
|
31
|
+
complete -F _ba_kit_completion ba-kit
|
|
32
|
+
`;
|
|
33
|
+
const ZSH_COMPLETION = `
|
|
34
|
+
#compdef ba-kit
|
|
35
|
+
|
|
36
|
+
_ba-kit() {
|
|
37
|
+
local -a commands
|
|
38
|
+
commands=(
|
|
39
|
+
'init:Initialize BA-Kit in current or specified directory'
|
|
40
|
+
'update:Update BA-Kit to latest version'
|
|
41
|
+
'status:Show BA-Kit installation status'
|
|
42
|
+
'restore:Restore modified files to original'
|
|
43
|
+
'completion:Generate shell completion script'
|
|
44
|
+
'cache:Manage download cache'
|
|
45
|
+
'help:Display help for command'
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
_arguments -C \\
|
|
49
|
+
'-v[Enable verbose output]' \\
|
|
50
|
+
'--verbose[Enable verbose output]' \\
|
|
51
|
+
'-q[Suppress non-essential output]' \\
|
|
52
|
+
'--quiet[Suppress non-essential output]' \\
|
|
53
|
+
'--json[Output in JSON format]' \\
|
|
54
|
+
'1: :->command' \\
|
|
55
|
+
'*:: :->args'
|
|
56
|
+
|
|
57
|
+
case $state in
|
|
58
|
+
command)
|
|
59
|
+
_describe 'command' commands
|
|
60
|
+
;;
|
|
61
|
+
args)
|
|
62
|
+
case $words[1] in
|
|
63
|
+
init)
|
|
64
|
+
_arguments \\
|
|
65
|
+
'-f[Overwrite existing .agent/ folder]' \\
|
|
66
|
+
'--force[Overwrite existing .agent/ folder]' \\
|
|
67
|
+
'-b[Branch to use]:branch:' \\
|
|
68
|
+
'--branch[Branch to use]:branch:' \\
|
|
69
|
+
'-l[Use local ba-kit source]:path:_files -/' \\
|
|
70
|
+
'--local[Use local ba-kit source]:path:_files -/' \\
|
|
71
|
+
'1:path:_files -/'
|
|
72
|
+
;;
|
|
73
|
+
update)
|
|
74
|
+
_arguments \\
|
|
75
|
+
'-y[Auto-accept non-conflicting updates]' \\
|
|
76
|
+
'--yes[Auto-accept non-conflicting updates]' \\
|
|
77
|
+
'--dry-run[Show changes without applying]' \\
|
|
78
|
+
'-l[Use local ba-kit source]:path:_files -/' \\
|
|
79
|
+
'--local[Use local ba-kit source]:path:_files -/'
|
|
80
|
+
;;
|
|
81
|
+
status)
|
|
82
|
+
_arguments \\
|
|
83
|
+
'--remote[Check against remote for updates]'
|
|
84
|
+
;;
|
|
85
|
+
restore)
|
|
86
|
+
_arguments \\
|
|
87
|
+
'-a[Restore all modified files]' \\
|
|
88
|
+
'--all[Restore all modified files]' \\
|
|
89
|
+
'-y[Skip confirmation prompt]' \\
|
|
90
|
+
'--yes[Skip confirmation prompt]' \\
|
|
91
|
+
'-l[Use local ba-kit source]:path:_files -/' \\
|
|
92
|
+
'--local[Use local ba-kit source]:path:_files -/'
|
|
93
|
+
;;
|
|
94
|
+
cache)
|
|
95
|
+
_arguments \\
|
|
96
|
+
'--clear[Clear the download cache]'
|
|
97
|
+
;;
|
|
98
|
+
esac
|
|
99
|
+
;;
|
|
100
|
+
esac
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
_ba-kit
|
|
104
|
+
`;
|
|
105
|
+
const FISH_COMPLETION = `
|
|
106
|
+
complete -c ba-kit -f
|
|
107
|
+
|
|
108
|
+
# Global options
|
|
109
|
+
complete -c ba-kit -s v -l verbose -d 'Enable verbose output'
|
|
110
|
+
complete -c ba-kit -s q -l quiet -d 'Suppress non-essential output'
|
|
111
|
+
complete -c ba-kit -l json -d 'Output in JSON format'
|
|
112
|
+
|
|
113
|
+
# Commands
|
|
114
|
+
complete -c ba-kit -n '__fish_use_subcommand' -a 'init' -d 'Initialize BA-Kit'
|
|
115
|
+
complete -c ba-kit -n '__fish_use_subcommand' -a 'update' -d 'Update BA-Kit'
|
|
116
|
+
complete -c ba-kit -n '__fish_use_subcommand' -a 'status' -d 'Show status'
|
|
117
|
+
complete -c ba-kit -n '__fish_use_subcommand' -a 'restore' -d 'Restore files'
|
|
118
|
+
complete -c ba-kit -n '__fish_use_subcommand' -a 'completion' -d 'Generate completions'
|
|
119
|
+
complete -c ba-kit -n '__fish_use_subcommand' -a 'cache' -d 'Manage cache'
|
|
120
|
+
|
|
121
|
+
# init options
|
|
122
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from init' -s f -l force -d 'Overwrite existing'
|
|
123
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from init' -s b -l branch -d 'Branch to use'
|
|
124
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from init' -s l -l local -d 'Local source'
|
|
125
|
+
|
|
126
|
+
# update options
|
|
127
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from update' -s y -l yes -d 'Auto-accept'
|
|
128
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from update' -l dry-run -d 'Preview only'
|
|
129
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from update' -s l -l local -d 'Local source'
|
|
130
|
+
|
|
131
|
+
# status options
|
|
132
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from status' -l remote -d 'Check remote'
|
|
133
|
+
|
|
134
|
+
# restore options
|
|
135
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from restore' -s a -l all -d 'Restore all'
|
|
136
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from restore' -s y -l yes -d 'Skip confirm'
|
|
137
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from restore' -s l -l local -d 'Local source'
|
|
138
|
+
|
|
139
|
+
# cache options
|
|
140
|
+
complete -c ba-kit -n '__fish_seen_subcommand_from cache' -l clear -d 'Clear cache'
|
|
141
|
+
`;
|
|
142
|
+
/**
|
|
143
|
+
* Output shell completion script
|
|
144
|
+
*/
|
|
145
|
+
export function completion(shell) {
|
|
146
|
+
switch (shell) {
|
|
147
|
+
case 'bash':
|
|
148
|
+
console.log(BASH_COMPLETION.trim());
|
|
149
|
+
break;
|
|
150
|
+
case 'zsh':
|
|
151
|
+
console.log(ZSH_COMPLETION.trim());
|
|
152
|
+
break;
|
|
153
|
+
case 'fish':
|
|
154
|
+
console.log(FISH_COMPLETION.trim());
|
|
155
|
+
break;
|
|
156
|
+
default:
|
|
157
|
+
console.error(`Unknown shell: ${shell}`);
|
|
158
|
+
console.error('Supported shells: bash, zsh, fish');
|
|
159
|
+
console.error('');
|
|
160
|
+
console.error('Usage:');
|
|
161
|
+
console.error(' # Bash');
|
|
162
|
+
console.error(' ba-kit completion bash >> ~/.bashrc');
|
|
163
|
+
console.error('');
|
|
164
|
+
console.error(' # Zsh');
|
|
165
|
+
console.error(' ba-kit completion zsh > ~/.zsh/completions/_ba-kit');
|
|
166
|
+
console.error('');
|
|
167
|
+
console.error(' # Fish');
|
|
168
|
+
console.error(' ba-kit completion fish > ~/.config/fish/completions/ba-kit.fish');
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BvB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEtB,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCvB,CAAC;AAIF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,KAAK;YACR,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,wBAAsB,IAAI,CACxB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Hf"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { join, resolve } from 'path';
|
|
2
|
+
import { rename, mkdir, access, stat, constants, readFile } from 'fs/promises';
|
|
3
|
+
import { log, spinner } from '../utils/logger.js';
|
|
4
|
+
import { CONFIG } from '../utils/constants.js';
|
|
5
|
+
import { agentDirExists, copyBaKitFiles } from '../lib/copier.js';
|
|
6
|
+
import { downloadBaKit, cleanupDownload } from '../lib/downloader.js';
|
|
7
|
+
import { createManifest, writeManifest } from '../lib/manifest.js';
|
|
8
|
+
import { confirmOverwrite } from '../utils/prompts.js';
|
|
9
|
+
/**
|
|
10
|
+
* Initialize BA-Kit in project
|
|
11
|
+
*/
|
|
12
|
+
export async function init(targetPath, options) {
|
|
13
|
+
const projectPath = resolve(targetPath || process.cwd());
|
|
14
|
+
const branch = options.branch || CONFIG.DEFAULT_BRANCH;
|
|
15
|
+
// Validate target path exists and is writable
|
|
16
|
+
try {
|
|
17
|
+
const s = await stat(projectPath);
|
|
18
|
+
if (!s.isDirectory()) {
|
|
19
|
+
log.error(`${projectPath} is not a directory.`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
log.error(`${projectPath} does not exist.`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
await access(projectPath, constants.W_OK);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
log.error(`Cannot write to ${projectPath}. Check permissions.`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
log.info(`Initializing BA-Kit in ${projectPath}`);
|
|
35
|
+
// Check if .agent already exists
|
|
36
|
+
if (await agentDirExists(projectPath)) {
|
|
37
|
+
if (!options.force) {
|
|
38
|
+
const shouldContinue = await confirmOverwrite();
|
|
39
|
+
if (!shouldContinue) {
|
|
40
|
+
log.warn('Aborted. Use --force to overwrite existing installation.');
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Backup existing .agent
|
|
45
|
+
const backupPath = join(projectPath, CONFIG.BACKUP_DIR, `.agent-${Date.now()}`);
|
|
46
|
+
await mkdir(join(projectPath, CONFIG.BACKUP_DIR), { recursive: true });
|
|
47
|
+
await rename(join(projectPath, CONFIG.AGENT_DIR), backupPath);
|
|
48
|
+
log.dim(`Backed up existing .agent/ to ${CONFIG.BACKUP_DIR}/`);
|
|
49
|
+
}
|
|
50
|
+
let extractedPath;
|
|
51
|
+
let version;
|
|
52
|
+
let needsCleanup = true;
|
|
53
|
+
// Use local source if specified, otherwise download from GitHub
|
|
54
|
+
if (options.local) {
|
|
55
|
+
// Use local ba-kit source for testing
|
|
56
|
+
const localSpinner = spinner('Using local BA-Kit source...').start();
|
|
57
|
+
try {
|
|
58
|
+
extractedPath = resolve(options.local);
|
|
59
|
+
const s = await stat(extractedPath);
|
|
60
|
+
if (!s.isDirectory()) {
|
|
61
|
+
throw new Error('Local source must be a directory');
|
|
62
|
+
}
|
|
63
|
+
version = await getLocalVersion(extractedPath);
|
|
64
|
+
needsCleanup = false;
|
|
65
|
+
localSpinner.succeed(`Using local BA-Kit v${version}`);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
localSpinner.fail('Failed to use local source');
|
|
69
|
+
log.error(error.message);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Download ba-kit from GitHub
|
|
75
|
+
const downloadSpinner = spinner('Downloading BA-Kit from GitHub...').start();
|
|
76
|
+
try {
|
|
77
|
+
const result = await downloadBaKit(branch, projectPath);
|
|
78
|
+
extractedPath = result.extractedPath;
|
|
79
|
+
version = result.version;
|
|
80
|
+
downloadSpinner.succeed(`Downloaded BA-Kit v${version}`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
downloadSpinner.fail('Failed to download BA-Kit');
|
|
84
|
+
log.error(error.message);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Copy files
|
|
89
|
+
const copySpinner = spinner('Copying files to .agent/...').start();
|
|
90
|
+
let fileEntries;
|
|
91
|
+
try {
|
|
92
|
+
fileEntries = await copyBaKitFiles(extractedPath, projectPath);
|
|
93
|
+
const fileCount = Object.keys(fileEntries).length;
|
|
94
|
+
copySpinner.succeed(`Copied ${fileCount} files to .agent/`);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
copySpinner.fail('Failed to copy files');
|
|
98
|
+
log.error(error.message);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
// Create manifest
|
|
102
|
+
const manifestSpinner = spinner('Creating manifest...').start();
|
|
103
|
+
try {
|
|
104
|
+
const manifest = createManifest(version, branch, fileEntries);
|
|
105
|
+
await writeManifest(projectPath, manifest);
|
|
106
|
+
manifestSpinner.succeed('Created .agent/.ba-kit.json');
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
manifestSpinner.fail('Failed to create manifest');
|
|
110
|
+
log.error(error.message);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
// Cleanup (only for downloaded files)
|
|
114
|
+
if (needsCleanup) {
|
|
115
|
+
await cleanupDownload(extractedPath);
|
|
116
|
+
}
|
|
117
|
+
// Success
|
|
118
|
+
console.log('');
|
|
119
|
+
log.success('BA-Kit initialized successfully!');
|
|
120
|
+
console.log('');
|
|
121
|
+
log.dim('Next steps:');
|
|
122
|
+
log.dim(' 1. Review files in .agent/');
|
|
123
|
+
log.dim(' 2. Add AGENT.MD reference to your AI config');
|
|
124
|
+
log.dim(' 3. Run `ba-kit status` to check installation');
|
|
125
|
+
console.log('');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get version from local ba-kit source
|
|
129
|
+
*/
|
|
130
|
+
async function getLocalVersion(path) {
|
|
131
|
+
try {
|
|
132
|
+
const changelog = await readFile(join(path, 'CHANGELOG.md'), 'utf8');
|
|
133
|
+
const match = changelog.match(/##\s+\[?v?(\d+\.\d+\.\d+)/);
|
|
134
|
+
if (match)
|
|
135
|
+
return match[1];
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// ignore
|
|
139
|
+
}
|
|
140
|
+
return 'local';
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAoJf"}
|