hzl-cli 1.20.1 → 1.22.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 CHANGED
@@ -369,64 +369,92 @@ If your coding agent supports an instruction file (for example `CLAUDE.md`, `AGE
369
369
  ```md
370
370
  ### HZL task ledger (external task tracking)
371
371
 
372
- HZL is an external task database. Use it whenever external tracking would help clarity, handoff, or auditability.
373
- Multi-session or multi-agent work are common reasons to use HZL, not requirements.
374
- Use HZL for single-session, single-agent work when the task is non-trivial.
372
+ HZL is an external task database. Use it when external tracking helps clarity, handoff, or auditability.
375
373
 
376
- **Prefer using HZL when:**
377
- - Work may outlive this session or is likely to be paused/resumed
378
- - You want a durable record of decisions, progress, or ownership
379
- - You expect handoff or review by another agent/person
380
- - The user asks to track work in HZL
381
- - The task is non-trivial (multiple steps, ~30+ minutes, or risky changes)
374
+ **Use HZL when:**
375
+ - Work has multiple steps or may not finish this session
376
+ - You want durable record of progress or ownership
377
+ - Handoff or review expected
378
+ - Task is non-trivial (~30+ min or risky changes)
382
379
 
383
- **You can skip HZL when:**
384
- - The work is small, clearly scoped, and will be completed immediately
385
- - The user asks for a quick one-off answer or tiny change
380
+ **Skip HZL when:**
381
+ - Small, clearly scoped work completed immediately
382
+ - Quick one-off answer or tiny change
386
383
 
387
- **Rule of thumb:** If you feel tempted to make a multi-step plan or there is any chance you will not finish in this session, use HZL.
388
-
389
- Example: "Investigate failing tests and fix root cause" -> use HZL because it likely involves multiple subtasks, even if you expect to finish within a session.
384
+ **Rule of thumb:** If you're tempted to make a multi-step plan, use HZL.
390
385
 
391
386
  **Structure:**
392
- - **Project** = stable container (one per repo). Check `hzl project list` before creating.
393
- - **Task** = top-level work item (often a feature). Use `--depends-on` to sequence separate tasks.
394
- - **Subtask** = breakdown of a task into parts (`--parent <id>`). Max 1 level of nesting.
387
+ - **Project** = repo name. One per repo. Always `hzl project list` first.
388
+ - **Task** = feature or work item.
389
+ - **Subtask** = breakdown (`--parent <id>`). Max 1 level.
390
+
391
+ **Anti-pattern: project sprawl**
392
+ ```bash
393
+ hzl project create "query-perf" # Wrong: feature is not a project
394
+ ```
395
+ Features are parent tasks:
396
+ ```bash
397
+ hzl task add "Query perf" -P myrepo # Parent task
398
+ hzl task add "Fix N+1" --parent <parent-id> # Subtask
399
+ ```
400
+
401
+ ---
395
402
 
396
- **⚠️ Anti-pattern: project sprawl**
403
+ **Setup:**
397
404
  ```bash
398
- hzl project create "query-perf" # Feature ≠ project
405
+ hzl project list # Always check first
406
+ hzl project create <repo-name> # Only if needed
399
407
  ```
400
- Features are parent tasks, not projects:
408
+
409
+ **Adding work:**
401
410
  ```bash
402
- hzl task add "Query perf fixes" -P myrepo # Parent task
403
- hzl task add "Fix N+1" --parent <parent-id> # Subtask
404
- ```
405
-
406
- **Workflow:**
407
- 1. `hzl project list` — **Always check first. Reuse existing repo project.**
408
- 2. Only create a project for a NEW repo (not a feature).
409
- 3. For multi-step work: create parent task, then subtasks with `--parent`.
410
- 4. Claim before work, checkpoint progress, complete when done.
411
- 5. Use `--json` for scripted output.
412
-
413
- **Task lifecycle:**
414
- - New tasks start in `backlog` (not claimable)
415
- - To work: `set-status <id> ready` → `claim <id>` → work → `complete <id>`
416
- - Or create ready: `hzl task add "..." -P project -s ready`
417
-
418
- **Quick commands:**
419
- | Action | Command |
420
- |--------|---------|
421
- | Create (ready to work) | `hzl task add "title" -P project -s ready` |
422
- | Create and claim | `hzl task add "title" -P project -s in_progress --assignee <name>` |
423
- | Create (planning) | `hzl task add "title" -P project` |
424
- | Claim | `hzl task claim <id> --assignee <name>` |
425
- | Complete | `hzl task complete <id>` |
426
-
427
- **⚠️ DESTRUCTIVE - Never run without explicit user request:**
411
+ hzl task add "Feature X" -P myrepo -s ready # Ready to claim
412
+ hzl task add "Subtask A" --parent <id> # Subtask
413
+ hzl task add "Subtask B" --parent <id> --depends-on <subtask-a-id> # With dependency
414
+ ```
415
+
416
+ **Working on a task:**
417
+ ```bash
418
+ hzl task next -P myrepo # Next available task
419
+ hzl task next --parent <id> # Next subtask of parent
420
+ hzl task next -P myrepo --claim # Find and claim in one step
421
+ hzl task claim <id> # Claim specific task
422
+ hzl task checkpoint <id> "milestone X" # Notable progress or before pausing
423
+ ```
424
+
425
+ **Changing status:**
426
+ ```bash
427
+ hzl task set-status <id> ready # Make claimable (from backlog)
428
+ hzl task set-status <id> backlog # Move back to planning
429
+ ```
430
+ Statuses: `backlog` → `ready` `in_progress` `done` (or `blocked`)
431
+
432
+ **When blocked:**
433
+ ```bash
434
+ hzl task block <id> --comment "Waiting for API keys from DevOps"
435
+ hzl task unblock <id> # When resolved
436
+ ```
437
+
438
+ **Finishing work:**
439
+ ```bash
440
+ hzl task comment <id> "Implemented X, tested Y" # Optional: final notes
441
+ hzl task complete <id>
442
+
443
+ # After completing a subtask, check parent:
444
+ hzl task show <parent-id> --json # Any subtasks left?
445
+ hzl task complete <parent-id> # If all done, complete parent
446
+ ```
447
+
448
+ **Troubleshooting:**
449
+ | Error | Fix |
450
+ |-------|-----|
451
+ | "not claimable (status: backlog)" | `hzl task set-status <id> ready` |
452
+ | "Cannot complete: status is X" | Claim first: `hzl task claim <id>` |
453
+
454
+ ---
455
+
456
+ **DESTRUCTIVE - Never run without explicit user request:**
428
457
  - `hzl task prune` — **PERMANENTLY DELETES** old done/archived tasks. No undo.
429
- - **AI agents: NEVER run prune unless the user explicitly asks to delete old tasks**
430
458
  ```
431
459
  <!-- END [code:md] docs/snippets/agent-policy.md -->
432
460
 
@@ -569,8 +597,8 @@ hzl task list --project <project> # List tasks (--available for clai
569
597
  hzl task next --project <project> # Get highest priority available task
570
598
 
571
599
  # Working
572
- hzl task claim <id> --assignee <name> # Claim task (--lease <minutes> for expiry)
573
- hzl task claim <id> --agent-id <id> # Claim as AI agent (machine identifier)
600
+ hzl task claim <id> --assignee <name> # Claim task (or: hzl task start <id>)
601
+ hzl task claim <id> --agent-id <id> # --lease <minutes> for expiry
574
602
  hzl task checkpoint <id> "<message>" # Save progress snapshot
575
603
  hzl task progress <id> <value> # Set progress (0-100)
576
604
  hzl task complete <id> # Mark done
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/task/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,wBAAgB,iBAAiB,IAAI,OAAO,CA6B3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/task/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,iBAAiB,IAAI,OAAO,CA8B3C"}
@@ -19,6 +19,7 @@ import { createCheckpointCommand } from './checkpoint.js';
19
19
  import { createHistoryCommand } from './history.js';
20
20
  import { createSearchCommand } from './search.js';
21
21
  import { createNextCommand } from './next.js';
22
+ import { createStartCommand } from './start.js';
22
23
  import { createBlockCommand } from './block.js';
23
24
  import { createUnblockCommand } from './unblock.js';
24
25
  import { createProgressCommand } from './progress.js';
@@ -29,6 +30,7 @@ export function createTaskCommand() {
29
30
  command.addCommand(createListCommand());
30
31
  command.addCommand(createShowCommand());
31
32
  command.addCommand(createClaimCommand());
33
+ command.addCommand(createStartCommand());
32
34
  command.addCommand(createCompleteCommand());
33
35
  command.addCommand(createReleaseCommand());
34
36
  command.addCommand(createArchiveCommand());
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createStartCommand(): Command;
3
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/task/start.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C"}
@@ -0,0 +1,37 @@
1
+ // Alias for 'claim' - more intuitive for "starting work on a task"
2
+ import { Command } from 'commander';
3
+ import { resolveDbPaths } from '../../config.js';
4
+ import { initializeDb, closeDb } from '../../db.js';
5
+ import { handleError } from '../../errors.js';
6
+ import { GlobalOptionsSchema } from '../../types.js';
7
+ import { runClaim } from './claim.js';
8
+ export function createStartCommand() {
9
+ return new Command('start')
10
+ .description('Start working on a task (alias for claim)')
11
+ .argument('<taskId>', 'Task ID')
12
+ .option('--assignee <name>', 'Who to assign the task to')
13
+ .option('--agent-id <id>', 'Agent ID (machine/AI identifier)')
14
+ .option('-l, --lease <minutes>', 'Lease duration in minutes')
15
+ .action(function (taskId, opts) {
16
+ const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
17
+ const { eventsDbPath, cacheDbPath } = resolveDbPaths(globalOpts.db);
18
+ const services = initializeDb({ eventsDbPath, cacheDbPath });
19
+ try {
20
+ runClaim({
21
+ services,
22
+ taskId,
23
+ assignee: opts.assignee,
24
+ agentId: opts.agentId,
25
+ leaseMinutes: opts.lease ? parseInt(opts.lease, 10) : undefined,
26
+ json: globalOpts.json ?? false,
27
+ });
28
+ }
29
+ catch (e) {
30
+ handleError(e, globalOpts.json);
31
+ }
32
+ finally {
33
+ closeDb(services);
34
+ }
35
+ });
36
+ }
37
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/task/start.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;SAC/B,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;SAC7D,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;SAC5D,MAAM,CAAC,UAAyB,MAAc,EAAE,IAAyB;QACxE,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,QAAQ,CAAC;gBACP,QAAQ;gBACR,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC/D,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hzl-cli",
3
- "version": "1.20.1",
3
+ "version": "1.22.0",
4
4
  "description": "CLI for HZL - External task ledger for coding agents and OpenClaw.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -60,8 +60,8 @@
60
60
  "libsql": "^0.5.0",
61
61
  "commander": "^14.0.0",
62
62
  "zod": "^3.23.8",
63
- "hzl-core": "1.20.1",
64
- "hzl-web": "1.20.1"
63
+ "hzl-core": "1.22.0",
64
+ "hzl-web": "1.22.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/better-sqlite3": "^7.6.13",