input-kanban 0.0.16 → 0.0.17
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.en.md +2 -0
- package/README.md +2 -0
- package/RELEASE_NOTES.md +14 -0
- package/bin/input-kanban.js +79 -1
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -56,6 +56,8 @@ input-kanban submit --task "Fix the login issue and add regression tests" --labe
|
|
|
56
56
|
|
|
57
57
|
`submit` creates a run, starts planning, dispatches all batches, and starts the final judge after all workers finish by default. The default workspace is the current directory. If `--label` is omitted, the run label is generated from the task text. It uses the same runs directory, so CLI-created runs are visible in the Web dashboard on port 8787 as long as the dashboard uses the same `--runs-dir`.
|
|
58
58
|
|
|
59
|
+
If your Agent can only call the CLI, run `input-kanban guide` or `input-kanban --help` to get a friendlier execution template and control loop.
|
|
60
|
+
|
|
59
61
|
`input-kanban serve` starts a lightweight background scheduler that keeps refreshing and advancing unfinished runs: it dispatches batches when a plan is ready, starts the next serial batch after the previous one completes, and starts the final judge after all batches complete. CLI `submit --auto` / `input-kanban auto <runId>` and the Web server share the same orchestrator auto-advance path, so progress no longer depends on whether a browser page is open or refreshed.
|
|
60
62
|
|
|
61
63
|
To return immediately and let a background supervisor continue the auto loop, pass `-d` / `--detach`:
|
package/README.md
CHANGED
|
@@ -56,6 +56,8 @@ input-kanban submit --task "修复登录问题,并补充回归测试" --label
|
|
|
56
56
|
|
|
57
57
|
`submit` 默认会创建任务批次、发起拆分、自动派发所有批次,并在全部完成后自动发起最终验收。默认 workspace 是当前目录;如果不传 `--label`,任务批次名称会从任务内容自动生成。它使用同一个 runs 目录,所以只要 8787 Web 看板也使用相同的 `--runs-dir`,CLI 创建的任务会在 Web 界面里可见。
|
|
58
58
|
|
|
59
|
+
如果你的 Agent 只能调用 CLI,可以直接运行 `input-kanban guide` 或 `input-kanban --help`,拿到一版更友好的执行模板和控制循环。
|
|
60
|
+
|
|
59
61
|
如果希望 Planner 拆分完成后先看一眼计划,再放行执行,可以加计划确认 Gate:
|
|
60
62
|
|
|
61
63
|
```bash
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## v0.0.17
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
|
|
7
|
+
- Add a friendly `input-kanban guide` CLI entry that prints an agent-oriented control loop, decision rules, and ready-to-copy execution templates.
|
|
8
|
+
- Extend `input-kanban --help` with a visible agent guide entry point so CLI-only agents can discover the execution flow without reading repository docs.
|
|
9
|
+
- Add a small `docs/input-kanban-cli-README.md` entry page and a reusable `docs/input-kanban-cli-skill.md` execution guide for external-project reuse.
|
|
10
|
+
|
|
11
|
+
### Verification
|
|
12
|
+
|
|
13
|
+
- `node --test test/cli-submit.test.js` passed locally.
|
|
14
|
+
- `git diff --check` passed locally.
|
|
15
|
+
- Windows-native validation passed on `zhangxing_win` with `npm run check` in the Windows release-candidate working tree.
|
|
16
|
+
|
|
3
17
|
## v0.0.16
|
|
4
18
|
|
|
5
19
|
### Highlights
|
package/bin/input-kanban.js
CHANGED
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
7
7
|
const PACKAGE_VERSION = JSON.parse(await fsp.readFile(new URL('../package.json', import.meta.url), 'utf8')).version;
|
|
8
8
|
const VALID_RUNNERS = ['headless', 'tmux'];
|
|
9
9
|
const VALID_SANDBOXES = ['read-only', 'workspace-write', 'danger-full-access'];
|
|
10
|
-
const COMMANDS = new Set(['serve', 'submit', 'runs', 'status', 'result', 'retry', 'stop', 'auto']);
|
|
10
|
+
const COMMANDS = new Set(['serve', 'submit', 'runs', 'status', 'result', 'retry', 'stop', 'auto', 'guide']);
|
|
11
11
|
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
12
12
|
const STATUS_TEXT = {
|
|
13
13
|
created: '已创建', planning: '拆分中', plan_failed: '拆分失败', plan_empty: '拆分为空', planned: '已拆分',
|
|
@@ -167,6 +167,17 @@ function parseAutoArgs(argv) {
|
|
|
167
167
|
return args;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
+
function parseGuideArgs(argv) {
|
|
171
|
+
const args = { json: false, help: false };
|
|
172
|
+
for (let i = 0; i < argv.length; i++) {
|
|
173
|
+
const arg = argv[i];
|
|
174
|
+
if (arg === '--help' || arg === '-h') args.help = true;
|
|
175
|
+
else if (arg === '--json' || arg === '-j') args.json = true;
|
|
176
|
+
else throw new Error(`unknown guide argument: ${arg}`);
|
|
177
|
+
}
|
|
178
|
+
return args;
|
|
179
|
+
}
|
|
180
|
+
|
|
170
181
|
function parseSubmitArgs(argv) {
|
|
171
182
|
const args = {
|
|
172
183
|
host: '127.0.0.1', port: 8787, workspace: undefined, repo: undefined, runsDir: undefined, codexBin: undefined,
|
|
@@ -234,6 +245,7 @@ Usage:
|
|
|
234
245
|
input-kanban [options]
|
|
235
246
|
input-kanban serve [options]
|
|
236
247
|
input-kanban submit [options]
|
|
248
|
+
input-kanban guide [options]
|
|
237
249
|
input-kanban --version
|
|
238
250
|
input-kanban runs [options]
|
|
239
251
|
input-kanban status [runId] [options]
|
|
@@ -241,6 +253,9 @@ Usage:
|
|
|
241
253
|
input-kanban retry <runId> [taskId] [options]
|
|
242
254
|
input-kanban stop <runId> [options]
|
|
243
255
|
|
|
256
|
+
Agent guide:
|
|
257
|
+
input-kanban guide Print a friendly agent-oriented control loop and templates
|
|
258
|
+
|
|
244
259
|
Serve options:
|
|
245
260
|
--host <host> Host to bind, default 127.0.0.1
|
|
246
261
|
-p, --port <port> Port to bind, default 8787
|
|
@@ -427,6 +442,64 @@ Options:
|
|
|
427
442
|
`);
|
|
428
443
|
}
|
|
429
444
|
|
|
445
|
+
function printAgentGuide(json = false) {
|
|
446
|
+
const quickStart = [
|
|
447
|
+
'Use `input-kanban` as the execution tool.',
|
|
448
|
+
'Treat `submit` as a new task identity.',
|
|
449
|
+
'Treat `retry` as a new attempt for the same task.',
|
|
450
|
+
'Use `status` before any state-dependent action.',
|
|
451
|
+
'Use `result` for the final outcome.',
|
|
452
|
+
'Use `stop` only with a known `runId`.'
|
|
453
|
+
];
|
|
454
|
+
const templates = [
|
|
455
|
+
'input-kanban submit --task "Implement the new gate workflow" --label "gate-workflow"',
|
|
456
|
+
'input-kanban submit --task-file task.md',
|
|
457
|
+
'input-kanban submit --task-file task.md --plan-approval',
|
|
458
|
+
'input-kanban submit --task-file task.md --detach',
|
|
459
|
+
'input-kanban status run_1234567890',
|
|
460
|
+
'input-kanban status run_1234567890 --watch',
|
|
461
|
+
'input-kanban result run_1234567890',
|
|
462
|
+
'input-kanban result run_1234567890 --copy',
|
|
463
|
+
'input-kanban retry run_1234567890',
|
|
464
|
+
'input-kanban stop run_1234567890'
|
|
465
|
+
];
|
|
466
|
+
if (json) {
|
|
467
|
+
printJson({
|
|
468
|
+
ok: true,
|
|
469
|
+
command: 'guide',
|
|
470
|
+
title: 'Input Kanban Agent Guide',
|
|
471
|
+
quickStart,
|
|
472
|
+
templates,
|
|
473
|
+
rules: [
|
|
474
|
+
'submit = new task identity',
|
|
475
|
+
'retry = same task definition, new attempt',
|
|
476
|
+
'status = inspect before acting',
|
|
477
|
+
'result = final confirmation',
|
|
478
|
+
'stop = only with explicit runId'
|
|
479
|
+
]
|
|
480
|
+
});
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
console.log(`Input Kanban Agent Guide
|
|
484
|
+
|
|
485
|
+
Quick start:
|
|
486
|
+
${quickStart.map(item => ` - ${item}`).join('\n')}
|
|
487
|
+
|
|
488
|
+
Core commands:
|
|
489
|
+
submit Create a new run for a new task identity
|
|
490
|
+
retry Re-attempt the same task definition with a new attempt
|
|
491
|
+
status Inspect current progress before acting
|
|
492
|
+
result Read the final outcome
|
|
493
|
+
stop Halt a known run
|
|
494
|
+
|
|
495
|
+
Example templates:
|
|
496
|
+
${templates.map((item, index) => ` ${String(index + 1).padStart(2, '0')}. ${item}`).join('\n')}
|
|
497
|
+
|
|
498
|
+
See also:
|
|
499
|
+
input-kanban --help
|
|
500
|
+
`);
|
|
501
|
+
}
|
|
502
|
+
|
|
430
503
|
function openBrowser(url) {
|
|
431
504
|
const command = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'cmd' : 'xdg-open';
|
|
432
505
|
const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
|
|
@@ -778,6 +851,11 @@ try {
|
|
|
778
851
|
args.json = args.json || globals.json;
|
|
779
852
|
if (args.help) { printSubmitHelp(); process.exit(0); }
|
|
780
853
|
await submit(args);
|
|
854
|
+
} else if (command === 'guide') {
|
|
855
|
+
const args = parseGuideArgs(rest);
|
|
856
|
+
args.json = args.json || globals.json;
|
|
857
|
+
if (args.help) { printAgentGuide(args.json); process.exit(0); }
|
|
858
|
+
printAgentGuide(args.json);
|
|
781
859
|
} else if (command === 'runs') {
|
|
782
860
|
const args = parseRunsArgs(rest);
|
|
783
861
|
args.json = args.json || globals.json;
|