@stilero/bankan 1.0.3 → 1.0.5
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 +78 -77
- package/package.json +1 -1
- package/scripts/setup.js +24 -48
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="docs/images/ban_kan_logo_readme.svg" alt="Ban Kan logo" width="520" />
|
|
2
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/ban_kan_logo_readme.svg" alt="Ban Kan logo" width="520" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
# Ban Kan
|
|
@@ -21,7 +21,7 @@ Bring order to parallel AI development without leaving your local workflow.
|
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
<p align="center">
|
|
24
|
-
<img src="docs/images/bankan_screenshot.png" alt="Ban Kan dashboard showing backlog, planning, implementation, review, and done columns" width="1200" />
|
|
24
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/bankan_screenshot.png" alt="Ban Kan dashboard showing backlog, planning, implementation, review, and done columns" width="1200" />
|
|
25
25
|
</p>
|
|
26
26
|
|
|
27
27
|
<p align="center">
|
|
@@ -38,6 +38,73 @@ Bring order to parallel AI development without leaving your local workflow.
|
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
### Run instantly
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx @stilero/bankan
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Install globally
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npm install -g @stilero/bankan
|
|
53
|
+
bankan
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Run from source
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
git clone https://github.com/stilero/bankan.git
|
|
60
|
+
cd bankan
|
|
61
|
+
|
|
62
|
+
npm run install:all
|
|
63
|
+
npm run setup
|
|
64
|
+
npm run dev
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Ban Kan starts a local server, opens your browser automatically, and serves the dashboard from the same process.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Requirements
|
|
72
|
+
|
|
73
|
+
- Node.js >= 18
|
|
74
|
+
- git
|
|
75
|
+
- One AI CLI tool:
|
|
76
|
+
- claude
|
|
77
|
+
- codex
|
|
78
|
+
|
|
79
|
+
Native build tools may be needed only if `node-pty` has to compile during install.
|
|
80
|
+
|
|
81
|
+
macOS: Xcode Command Line Tools
|
|
82
|
+
Linux: build-essential
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Quick Start
|
|
87
|
+
|
|
88
|
+
1. Launch Ban Kan
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
bankan
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
2. Complete the setup wizard
|
|
95
|
+
|
|
96
|
+
3. Add one or more repositories in `Settings -> General -> Repositories`
|
|
97
|
+
|
|
98
|
+
4. Create a task in the dashboard
|
|
99
|
+
|
|
100
|
+
5. Approve the generated plan
|
|
101
|
+
|
|
102
|
+
6. Watch agents implement and review the change
|
|
103
|
+
|
|
104
|
+
7. Optionally create a pull request
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
41
108
|
## What Is Ban Kan
|
|
42
109
|
|
|
43
110
|
Ban Kan is a **local control center for AI coding agents** that work across real repositories.
|
|
@@ -79,14 +146,14 @@ Each stage has a clear responsibility, and tasks move forward only when the prev
|
|
|
79
146
|
<table>
|
|
80
147
|
<tr>
|
|
81
148
|
<td align="center" width="50%">
|
|
82
|
-
<img src="docs/images/before_claude_windows.png" alt="Four separate Claude Code terminal windows used to coordinate parallel agent work before Ban Kan" width="100%" />
|
|
149
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/before_claude_windows.png" alt="Four separate Claude Code terminal windows used to coordinate parallel agent work before Ban Kan" width="100%" />
|
|
83
150
|
<br />
|
|
84
151
|
<strong>Before Ban Kan</strong>
|
|
85
152
|
<br />
|
|
86
153
|
Managing multiple agents means juggling separate terminal windows and fragmented context.
|
|
87
154
|
</td>
|
|
88
155
|
<td align="center" width="50%">
|
|
89
|
-
<img src="docs/images/bankan_multi_tasks.png" alt="Ban Kan dashboard showing multiple tasks and agent output in one coordinated interface" width="100%" />
|
|
156
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/bankan_multi_tasks.png" alt="Ban Kan dashboard showing multiple tasks and agent output in one coordinated interface" width="100%" />
|
|
90
157
|
<br />
|
|
91
158
|
<strong>With Ban Kan</strong>
|
|
92
159
|
<br />
|
|
@@ -133,7 +200,7 @@ Below is the same task moving through Ban Kan's workflow from creation to comple
|
|
|
133
200
|
### 1. Create the task
|
|
134
201
|
|
|
135
202
|
<p align="center">
|
|
136
|
-
<img src="docs/images/workflow/add_task.png" alt="Ban Kan add task modal used to create the Stripe payments task" />
|
|
203
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/add_task.png" alt="Ban Kan add task modal used to create the Stripe payments task" />
|
|
137
204
|
</p>
|
|
138
205
|
|
|
139
206
|
The developer creates a task in the dashboard and defines the story to be planned and executed.
|
|
@@ -141,7 +208,7 @@ The developer creates a task in the dashboard and defines the story to be planne
|
|
|
141
208
|
### 2. Planning starts
|
|
142
209
|
|
|
143
210
|
<p align="center">
|
|
144
|
-
<img src="docs/images/workflow/planning_stage_started.png" alt="Ban Kan planning stage showing the Stripe payments task as planning starts" />
|
|
211
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/planning_stage_started.png" alt="Ban Kan planning stage showing the Stripe payments task as planning starts" />
|
|
145
212
|
</p>
|
|
146
213
|
|
|
147
214
|
The planner agent picks up the task, analyzes the repository, and prepares an implementation plan.
|
|
@@ -149,7 +216,7 @@ The planner agent picks up the task, analyzes the repository, and prepares an im
|
|
|
149
216
|
### 3. Review and approve the plan
|
|
150
217
|
|
|
151
218
|
<p align="center">
|
|
152
|
-
<img src="docs/images/workflow/planning_approve_plan.png" alt="Ban Kan planning stage showing an approval-ready plan for the Stripe payments task" />
|
|
219
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/planning_approve_plan.png" alt="Ban Kan planning stage showing an approval-ready plan for the Stripe payments task" />
|
|
153
220
|
</p>
|
|
154
221
|
|
|
155
222
|
The generated plan is shown in the dashboard so the developer can approve it before any code is written.
|
|
@@ -157,7 +224,7 @@ The generated plan is shown in the dashboard so the developer can approve it bef
|
|
|
157
224
|
### 4. Implementation runs
|
|
158
225
|
|
|
159
226
|
<p align="center">
|
|
160
|
-
<img src="docs/images/workflow/implementing_task.png" alt="Ban Kan implementation stage showing the Stripe payments task being actively worked on by an agent" />
|
|
227
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/implementing_task.png" alt="Ban Kan implementation stage showing the Stripe payments task being actively worked on by an agent" />
|
|
161
228
|
</p>
|
|
162
229
|
|
|
163
230
|
After approval, the implementor agent creates its workspace, writes the code, and reports progress live in the UI.
|
|
@@ -165,7 +232,7 @@ After approval, the implementor agent creates its workspace, writes the code, an
|
|
|
165
232
|
### 5. Review stage
|
|
166
233
|
|
|
167
234
|
<p align="center">
|
|
168
|
-
<img src="docs/images/workflow/review_stage.png" alt="Ban Kan review stage showing the Stripe payments task being validated by a reviewer agent" />
|
|
235
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/review_stage.png" alt="Ban Kan review stage showing the Stripe payments task being validated by a reviewer agent" />
|
|
169
236
|
</p>
|
|
170
237
|
|
|
171
238
|
The reviewer agent validates the implementation, checks for issues, and decides whether the task is ready to move forward.
|
|
@@ -173,7 +240,7 @@ The reviewer agent validates the implementation, checks for issues, and decides
|
|
|
173
240
|
### 6. Done / ready for PR
|
|
174
241
|
|
|
175
242
|
<p align="center">
|
|
176
|
-
<img src="docs/images/workflow/done_stage.png" alt="Ban Kan done stage showing the Stripe payments task completed and ready for pull request creation" />
|
|
243
|
+
<img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/done_stage.png" alt="Ban Kan done stage showing the Stripe payments task completed and ready for pull request creation" />
|
|
177
244
|
</p>
|
|
178
245
|
|
|
179
246
|
Once review passes, the task moves to Done and can be used as the basis for a pull request.
|
|
@@ -182,72 +249,6 @@ Multiple tasks can move through these stages simultaneously with different agent
|
|
|
182
249
|
|
|
183
250
|
---
|
|
184
251
|
|
|
185
|
-
## Installation
|
|
186
|
-
|
|
187
|
-
### Run instantly
|
|
188
|
-
|
|
189
|
-
```bash
|
|
190
|
-
npx @stilero/bankan
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### Install globally
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
npm install -g @stilero/bankan
|
|
197
|
-
bankan
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### Run from source
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
git clone https://github.com/stilero/bankan.git
|
|
204
|
-
cd bankan
|
|
205
|
-
|
|
206
|
-
npm run install:all
|
|
207
|
-
npm run setup
|
|
208
|
-
npm run dev
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Ban Kan starts a local server, opens your browser automatically, and serves the dashboard from the same process.
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## Requirements
|
|
216
|
-
|
|
217
|
-
- Node.js >= 18
|
|
218
|
-
- git
|
|
219
|
-
- One AI CLI tool:
|
|
220
|
-
- claude
|
|
221
|
-
- codex
|
|
222
|
-
- Native build tools for node-pty
|
|
223
|
-
|
|
224
|
-
macOS: Xcode Command Line Tools
|
|
225
|
-
Linux: build-essential
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Quick Start
|
|
230
|
-
|
|
231
|
-
1. Launch Ban Kan
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
bankan
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
2. Complete the setup wizard
|
|
238
|
-
|
|
239
|
-
3. Add one or more local repositories
|
|
240
|
-
|
|
241
|
-
4. Create a task in the dashboard
|
|
242
|
-
|
|
243
|
-
5. Approve the generated plan
|
|
244
|
-
|
|
245
|
-
6. Watch agents implement and review the change
|
|
246
|
-
|
|
247
|
-
7. Optionally create a pull request
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
252
|
## How It Works
|
|
252
253
|
|
|
253
254
|
```mermaid
|
|
@@ -339,7 +340,7 @@ Useful scripts:
|
|
|
339
340
|
|
|
340
341
|
- `npm run build` – build client bundle
|
|
341
342
|
- `npm run dev` – run server + Vite client
|
|
342
|
-
- `npm run setup` – interactive setup wizard
|
|
343
|
+
- `npm run setup` – interactive setup wizard for agent CLI selection and local runtime config
|
|
343
344
|
- `npm run install:all` – install all dependencies
|
|
344
345
|
|
|
345
346
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stilero/bankan",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Run AI coding agents like a Kanban board. Plan, implement, review and ship code using parallel AI agents across your local repositories.",
|
|
6
6
|
"license": "MIT",
|
package/scripts/setup.js
CHANGED
|
@@ -102,20 +102,23 @@ async function main() {
|
|
|
102
102
|
console.log(`\n ${red('⚠')} Neither claude nor codex CLI found. At least one is required.\n`);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
105
|
+
if (!IS_PACKAGED_RUNTIME) {
|
|
106
|
+
console.log(` ${dim('Note: native build tools may be needed if npm has to compile node-pty during install.')}`);
|
|
107
|
+
|
|
108
|
+
const platform = process.platform;
|
|
109
|
+
if (platform === 'darwin') {
|
|
110
|
+
try {
|
|
111
|
+
execSync('xcode-select -p', { stdio: 'pipe' });
|
|
112
|
+
console.log(` ${green('✓')} Xcode command line tools available`);
|
|
113
|
+
} catch {
|
|
114
|
+
console.log(` ${yellow('⚠')} Xcode CLI tools not found ${dim('(only needed if node-pty builds from source: xcode-select --install)')}`);
|
|
115
|
+
}
|
|
116
|
+
} else if (platform === 'linux') {
|
|
117
|
+
if (checkCommand('cc')) {
|
|
118
|
+
console.log(` ${green('✓')} C compiler available`);
|
|
119
|
+
} else {
|
|
120
|
+
console.log(` ${yellow('⚠')} C compiler not found ${dim('(only needed if node-pty builds from source: apt install build-essential)')}`);
|
|
121
|
+
}
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
|
|
@@ -127,36 +130,11 @@ async function main() {
|
|
|
127
130
|
|
|
128
131
|
// Step 3: Project Config
|
|
129
132
|
console.log(bold(' Project Configuration\n'));
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const reposAnswer = await ask(` REPOS (comma-separated git repo paths)${reposHint}: `);
|
|
133
|
-
if (reposAnswer.trim()) {
|
|
134
|
-
config.REPOS = reposAnswer.trim();
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (config.REPOS) {
|
|
138
|
-
const repoPaths = config.REPOS.split(',').map(s => s.trim()).filter(Boolean);
|
|
139
|
-
for (const repoPath of repoPaths) {
|
|
140
|
-
try {
|
|
141
|
-
execSync(`git -C "${repoPath}" rev-parse HEAD`, { stdio: 'pipe' });
|
|
142
|
-
console.log(` ${green('✓')} ${repoPath} — valid git repo`);
|
|
143
|
-
} catch {
|
|
144
|
-
console.log(` ${yellow('⚠')} ${repoPath} — not a git repo or no commits yet`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const ghRepoHint = existing.GITHUB_REPO ? dim(` (${existing.GITHUB_REPO}), Enter to keep`) : dim(' (optional, owner/repo)');
|
|
150
|
-
const ghRepoAnswer = await ask(` GITHUB_REPO${ghRepoHint}: `);
|
|
151
|
-
if (ghRepoAnswer.trim()) config.GITHUB_REPO = ghRepoAnswer.trim();
|
|
152
|
-
|
|
153
|
-
const ghTokenHint = existing.GITHUB_TOKEN ? dim(' (already set, Enter to keep)') : dim(' (optional)');
|
|
154
|
-
const ghTokenAnswer = await ask(` GITHUB_TOKEN${ghTokenHint}: `);
|
|
155
|
-
if (ghTokenAnswer.trim()) config.GITHUB_TOKEN = ghTokenAnswer.trim();
|
|
156
|
-
|
|
133
|
+
console.log(` ${dim('Repositories are configured in the app under Settings → General → Repositories.')}`);
|
|
134
|
+
console.log(` ${dim('Use the workspace folder in Settings to choose where task workspaces are created.')}`);
|
|
157
135
|
console.log('');
|
|
158
136
|
|
|
159
|
-
// Step
|
|
137
|
+
// Step 4: Agent Config
|
|
160
138
|
console.log(bold(' Agent Configuration\n'));
|
|
161
139
|
|
|
162
140
|
const imp1Default = existing.IMPLEMENTOR_1_CLI || 'claude';
|
|
@@ -171,12 +149,9 @@ async function main() {
|
|
|
171
149
|
|
|
172
150
|
console.log('');
|
|
173
151
|
|
|
174
|
-
// Step
|
|
152
|
+
// Step 5: Write .env.local
|
|
175
153
|
mkdirSync(runtimePaths.dataDir, { recursive: true });
|
|
176
154
|
const envLines = [
|
|
177
|
-
`REPOS=${config.REPOS || ''}`,
|
|
178
|
-
`GITHUB_REPO=${config.GITHUB_REPO || ''}`,
|
|
179
|
-
`GITHUB_TOKEN=${config.GITHUB_TOKEN || ''}`,
|
|
180
155
|
`IMPLEMENTOR_1_CLI=${config.IMPLEMENTOR_1_CLI || 'claude'}`,
|
|
181
156
|
`IMPLEMENTOR_2_CLI=${config.IMPLEMENTOR_2_CLI || 'codex'}`,
|
|
182
157
|
`PORT=${config.PORT}`,
|
|
@@ -193,7 +168,7 @@ async function main() {
|
|
|
193
168
|
return;
|
|
194
169
|
}
|
|
195
170
|
|
|
196
|
-
// Step
|
|
171
|
+
// Step 6: Install Dependencies
|
|
197
172
|
console.log(bold(' Installing dependencies...\n'));
|
|
198
173
|
|
|
199
174
|
const installSteps = [
|
|
@@ -212,7 +187,7 @@ async function main() {
|
|
|
212
187
|
}
|
|
213
188
|
}
|
|
214
189
|
|
|
215
|
-
// Step
|
|
190
|
+
// Step 7: Success
|
|
216
191
|
console.log('');
|
|
217
192
|
console.log(green(bold(' ✓ Setup complete!')));
|
|
218
193
|
console.log('');
|
|
@@ -220,6 +195,7 @@ async function main() {
|
|
|
220
195
|
console.log(cyan(' npm start'));
|
|
221
196
|
console.log('');
|
|
222
197
|
console.log(` Then open: ${cyan('http://localhost:5173')}`);
|
|
198
|
+
console.log(` Configure repositories in ${cyan('Settings → General → Repositories')}.`);
|
|
223
199
|
console.log('');
|
|
224
200
|
|
|
225
201
|
rl.close();
|