hzl-cli 1.8.2 → 1.9.1

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 (191) hide show
  1. package/README.md +55 -20
  2. package/dist/commands/init.d.ts +11 -1
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +118 -11
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/init.test.js +96 -8
  7. package/dist/commands/init.test.js.map +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/types.d.ts +1 -1
  11. package/package.json +3 -3
  12. package/dist/commands/add-dep.d.ts +0 -15
  13. package/dist/commands/add-dep.d.ts.map +0 -1
  14. package/dist/commands/add-dep.js +0 -86
  15. package/dist/commands/add-dep.js.map +0 -1
  16. package/dist/commands/add-dep.test.d.ts +0 -2
  17. package/dist/commands/add-dep.test.d.ts.map +0 -1
  18. package/dist/commands/add-dep.test.js +0 -47
  19. package/dist/commands/add-dep.test.js.map +0 -1
  20. package/dist/commands/add.d.ts +0 -23
  21. package/dist/commands/add.d.ts.map +0 -1
  22. package/dist/commands/add.js +0 -65
  23. package/dist/commands/add.js.map +0 -1
  24. package/dist/commands/add.test.d.ts +0 -2
  25. package/dist/commands/add.test.d.ts.map +0 -1
  26. package/dist/commands/add.test.js +0 -60
  27. package/dist/commands/add.test.js.map +0 -1
  28. package/dist/commands/archive.d.ts +0 -16
  29. package/dist/commands/archive.d.ts.map +0 -1
  30. package/dist/commands/archive.js +0 -51
  31. package/dist/commands/archive.js.map +0 -1
  32. package/dist/commands/archive.test.d.ts +0 -2
  33. package/dist/commands/archive.test.d.ts.map +0 -1
  34. package/dist/commands/archive.test.js +0 -48
  35. package/dist/commands/archive.test.js.map +0 -1
  36. package/dist/commands/checkpoint.d.ts +0 -17
  37. package/dist/commands/checkpoint.d.ts.map +0 -1
  38. package/dist/commands/checkpoint.js +0 -64
  39. package/dist/commands/checkpoint.js.map +0 -1
  40. package/dist/commands/checkpoint.test.d.ts +0 -2
  41. package/dist/commands/checkpoint.test.d.ts.map +0 -1
  42. package/dist/commands/checkpoint.test.js +0 -47
  43. package/dist/commands/checkpoint.test.js.map +0 -1
  44. package/dist/commands/claim.d.ts +0 -20
  45. package/dist/commands/claim.d.ts.map +0 -1
  46. package/dist/commands/claim.js +0 -62
  47. package/dist/commands/claim.js.map +0 -1
  48. package/dist/commands/claim.test.d.ts +0 -2
  49. package/dist/commands/claim.test.d.ts.map +0 -1
  50. package/dist/commands/claim.test.js +0 -48
  51. package/dist/commands/claim.test.js.map +0 -1
  52. package/dist/commands/comment.d.ts +0 -16
  53. package/dist/commands/comment.d.ts.map +0 -1
  54. package/dist/commands/comment.js +0 -53
  55. package/dist/commands/comment.js.map +0 -1
  56. package/dist/commands/comment.test.d.ts +0 -2
  57. package/dist/commands/comment.test.d.ts.map +0 -1
  58. package/dist/commands/comment.test.js +0 -46
  59. package/dist/commands/comment.test.js.map +0 -1
  60. package/dist/commands/complete.d.ts +0 -15
  61. package/dist/commands/complete.d.ts.map +0 -1
  62. package/dist/commands/complete.js +0 -47
  63. package/dist/commands/complete.js.map +0 -1
  64. package/dist/commands/complete.test.d.ts +0 -2
  65. package/dist/commands/complete.test.d.ts.map +0 -1
  66. package/dist/commands/complete.test.js +0 -42
  67. package/dist/commands/complete.test.js.map +0 -1
  68. package/dist/commands/history.d.ts +0 -22
  69. package/dist/commands/history.d.ts.map +0 -1
  70. package/dist/commands/history.js +0 -70
  71. package/dist/commands/history.js.map +0 -1
  72. package/dist/commands/history.test.d.ts +0 -2
  73. package/dist/commands/history.test.d.ts.map +0 -1
  74. package/dist/commands/history.test.js +0 -41
  75. package/dist/commands/history.test.js.map +0 -1
  76. package/dist/commands/list.d.ts +0 -26
  77. package/dist/commands/list.d.ts.map +0 -1
  78. package/dist/commands/list.js +0 -85
  79. package/dist/commands/list.js.map +0 -1
  80. package/dist/commands/list.test.d.ts +0 -2
  81. package/dist/commands/list.test.d.ts.map +0 -1
  82. package/dist/commands/list.test.js +0 -55
  83. package/dist/commands/list.test.js.map +0 -1
  84. package/dist/commands/move.d.ts +0 -15
  85. package/dist/commands/move.d.ts.map +0 -1
  86. package/dist/commands/move.js +0 -62
  87. package/dist/commands/move.js.map +0 -1
  88. package/dist/commands/move.test.d.ts +0 -2
  89. package/dist/commands/move.test.d.ts.map +0 -1
  90. package/dist/commands/move.test.js +0 -55
  91. package/dist/commands/move.test.js.map +0 -1
  92. package/dist/commands/next.d.ts +0 -18
  93. package/dist/commands/next.d.ts.map +0 -1
  94. package/dist/commands/next.js +0 -64
  95. package/dist/commands/next.js.map +0 -1
  96. package/dist/commands/next.test.d.ts +0 -2
  97. package/dist/commands/next.test.d.ts.map +0 -1
  98. package/dist/commands/next.test.js +0 -52
  99. package/dist/commands/next.test.js.map +0 -1
  100. package/dist/commands/projects.d.ts +0 -16
  101. package/dist/commands/projects.d.ts.map +0 -1
  102. package/dist/commands/projects.js +0 -64
  103. package/dist/commands/projects.js.map +0 -1
  104. package/dist/commands/projects.test.d.ts +0 -2
  105. package/dist/commands/projects.test.d.ts.map +0 -1
  106. package/dist/commands/projects.test.js +0 -47
  107. package/dist/commands/projects.test.js.map +0 -1
  108. package/dist/commands/release.d.ts +0 -17
  109. package/dist/commands/release.d.ts.map +0 -1
  110. package/dist/commands/release.js +0 -52
  111. package/dist/commands/release.js.map +0 -1
  112. package/dist/commands/release.test.d.ts +0 -2
  113. package/dist/commands/release.test.d.ts.map +0 -1
  114. package/dist/commands/release.test.js +0 -47
  115. package/dist/commands/release.test.js.map +0 -1
  116. package/dist/commands/remove-dep.d.ts +0 -15
  117. package/dist/commands/remove-dep.d.ts.map +0 -1
  118. package/dist/commands/remove-dep.js +0 -55
  119. package/dist/commands/remove-dep.js.map +0 -1
  120. package/dist/commands/remove-dep.test.d.ts +0 -2
  121. package/dist/commands/remove-dep.test.d.ts.map +0 -1
  122. package/dist/commands/remove-dep.test.js +0 -47
  123. package/dist/commands/remove-dep.test.js.map +0 -1
  124. package/dist/commands/rename-project.d.ts +0 -16
  125. package/dist/commands/rename-project.d.ts.map +0 -1
  126. package/dist/commands/rename-project.js +0 -70
  127. package/dist/commands/rename-project.js.map +0 -1
  128. package/dist/commands/rename-project.test.d.ts +0 -2
  129. package/dist/commands/rename-project.test.d.ts.map +0 -1
  130. package/dist/commands/rename-project.test.js +0 -75
  131. package/dist/commands/rename-project.test.js.map +0 -1
  132. package/dist/commands/reopen.d.ts +0 -18
  133. package/dist/commands/reopen.d.ts.map +0 -1
  134. package/dist/commands/reopen.js +0 -56
  135. package/dist/commands/reopen.js.map +0 -1
  136. package/dist/commands/reopen.test.d.ts +0 -2
  137. package/dist/commands/reopen.test.d.ts.map +0 -1
  138. package/dist/commands/reopen.test.js +0 -48
  139. package/dist/commands/reopen.test.js.map +0 -1
  140. package/dist/commands/search.d.ts +0 -23
  141. package/dist/commands/search.d.ts.map +0 -1
  142. package/dist/commands/search.js +0 -89
  143. package/dist/commands/search.js.map +0 -1
  144. package/dist/commands/search.test.d.ts +0 -2
  145. package/dist/commands/search.test.d.ts.map +0 -1
  146. package/dist/commands/search.test.js +0 -41
  147. package/dist/commands/search.test.js.map +0 -1
  148. package/dist/commands/set-status.d.ts +0 -18
  149. package/dist/commands/set-status.d.ts.map +0 -1
  150. package/dist/commands/set-status.js +0 -60
  151. package/dist/commands/set-status.js.map +0 -1
  152. package/dist/commands/set-status.test.d.ts +0 -2
  153. package/dist/commands/set-status.test.d.ts.map +0 -1
  154. package/dist/commands/set-status.test.js +0 -45
  155. package/dist/commands/set-status.test.js.map +0 -1
  156. package/dist/commands/show.d.ts +0 -34
  157. package/dist/commands/show.d.ts.map +0 -1
  158. package/dist/commands/show.js +0 -96
  159. package/dist/commands/show.js.map +0 -1
  160. package/dist/commands/show.test.d.ts +0 -2
  161. package/dist/commands/show.test.d.ts.map +0 -1
  162. package/dist/commands/show.test.js +0 -50
  163. package/dist/commands/show.test.js.map +0 -1
  164. package/dist/commands/steal.d.ts +0 -19
  165. package/dist/commands/steal.d.ts.map +0 -1
  166. package/dist/commands/steal.js +0 -90
  167. package/dist/commands/steal.js.map +0 -1
  168. package/dist/commands/steal.test.d.ts +0 -2
  169. package/dist/commands/steal.test.d.ts.map +0 -1
  170. package/dist/commands/steal.test.js +0 -66
  171. package/dist/commands/steal.test.js.map +0 -1
  172. package/dist/commands/stuck.d.ts +0 -22
  173. package/dist/commands/stuck.d.ts.map +0 -1
  174. package/dist/commands/stuck.js +0 -91
  175. package/dist/commands/stuck.js.map +0 -1
  176. package/dist/commands/stuck.test.d.ts +0 -2
  177. package/dist/commands/stuck.test.d.ts.map +0 -1
  178. package/dist/commands/stuck.test.js +0 -51
  179. package/dist/commands/stuck.test.js.map +0 -1
  180. package/dist/commands/task.d.ts +0 -32
  181. package/dist/commands/task.d.ts.map +0 -1
  182. package/dist/commands/task.js +0 -72
  183. package/dist/commands/task.js.map +0 -1
  184. package/dist/commands/update.d.ts +0 -23
  185. package/dist/commands/update.d.ts.map +0 -1
  186. package/dist/commands/update.js +0 -105
  187. package/dist/commands/update.js.map +0 -1
  188. package/dist/commands/update.test.d.ts +0 -2
  189. package/dist/commands/update.test.d.ts.map +0 -1
  190. package/dist/commands/update.test.js +0 -63
  191. package/dist/commands/update.test.js.map +0 -1
package/README.md CHANGED
@@ -1,31 +1,47 @@
1
1
  # HZL (Hazel)
2
2
 
3
- **A shared task ledger for OpenClaw and poly-agent workflows.**
3
+ **External task ledger for coding agents and OpenClaw.**
4
4
 
5
- OpenClaw is great at doing work: running tools, coordinating sub-agents, and maintaining memory.
6
- What it (and most agent tools) do not give you is a durable, shared backlog that survives:
5
+ Claude Code has [Tasks](https://x.com/trq212/status/2014480496013803643). If you use Claude Code for short, self-contained work, that's probably enough.
7
6
 
8
- - session boundaries
9
- - crashes/reboots
10
- - switching between different agent runtimes (Claude Code, Codex, Gemini, etc.)
7
+ HZL is for when work outlives a single session: days-long projects, switching between Claude Code and Codex, OpenClaw juggling parallel workstreams.
11
8
 
12
- HZL fills that gap: a lightweight, local-first task tracker that any agent can read/write.
9
+ **Coding agents (Claude Code, Codex, Gemini)**
13
10
 
14
- Using OpenClaw? Start here: [OpenClaw integration](#openclaw-integration)
11
+ You're working across several projects over days or weeks. You switch between agents. Each has its own task tracking (or none).
12
+
13
+ HZL is the shared ledger underneath. Claim a task in Claude Code, pick it up in Codex tomorrow. One source of truth across tools and sessions.
14
+
15
+ **OpenClaw**
15
16
 
16
- Not using OpenClaw? Jump to: [Using HZL with Claude Code, Codex, Gemini CLI, or any coding agent](#using-hzl-with-claude-code-codex-gemini-cli-or-any-coding-agent)
17
+ OpenClaw has tools for user memory—context, preferences, past chats. It doesn't have a tool for tracking task execution state: workstreams, dependencies, checkpoints.
17
18
 
18
- HZL provides:
19
+ That all lives in-context today. It burns space. It fragments when chats compact.
19
20
 
20
- - Projects and tasks
21
- - Dependencies (`B` waits for `A`)
22
- - Checkpoints (progress snapshots you can resume from)
23
- - Leases (time-limited claims for multi-agent coordination)
24
- - Event history (audit trail)
25
- - Cloud Sync (multi-device/multi-agent synchronization with Turso)
26
- - A CLI + JSON output that agents can script against
21
+ HZL fills that gap. Say you ask OpenClaw to plan a family vacation—flights, hotels, activities, reservations. That's multiple tasks with dependencies (can't book hotels until you know the dates). Instead of tracking all of it in the chat, OpenClaw creates tasks in HZL:
22
+
23
+ ```bash
24
+ hzl task list --project family-vacation --available --json
25
+ "Book hotel" is now ready (depends on "Finalize dates" which completed)
26
+ ```
27
27
 
28
- Data is stored in SQLite. Default location: `$XDG_DATA_HOME/hzl/data.db` (fallback `~/.local/share/hzl/data.db`); Windows: `%LOCALAPPDATA%\\hzl\\data.db`.
28
+ OpenClaw queries HZL, sees what's unblocked, and picks up the next task—without reconstructing state from a compacted chat. If you ever run multiple OpenClaw instances, they coordinate through the same ledger.
29
+
30
+ **Local-first with built-in cloud sync**
31
+
32
+ Fast reads and writes to local SQLite. Enable sync to [Turso](https://turso.tech) with one command (`hzl init --sync-url ...`) for automatic backup and multi-device access.
33
+
34
+ **Also**
35
+
36
+ - Leases: time-limited claims that expire, so callers can find and reclaim stuck work
37
+ - Checkpoints: save progress notes so work can resume after interruption
38
+ - Event history: full audit trail of what happened
39
+
40
+ Using OpenClaw? Start here: [OpenClaw integration](#openclaw-integration)
41
+
42
+ Using Claude Code, Codex, or Gemini? See: [Using HZL with coding agents](#using-hzl-with-claude-code-codex-gemini-cli-or-any-coding-agent)
43
+
44
+ Data is stored in SQLite. Default location: `$XDG_DATA_HOME/hzl/` (fallback `~/.local/share/hzl/`); Windows: `%LOCALAPPDATA%\\hzl\\`. Contains `events.db` (source of truth) and `cache.db` (projections).
29
45
 
30
46
  ---
31
47
 
@@ -62,7 +78,7 @@ flowchart LR
62
78
 
63
79
  OpenClaw coordinates the work. HZL is the shared, durable task board that OpenClaw and its sub-agents can use across sessions.
64
80
 
65
- ### 2) Any poly-agent system (no OpenClaw required)
81
+ ### 2) Any multi-agent system (no OpenClaw required)
66
82
 
67
83
  ```mermaid
68
84
  flowchart LR
@@ -222,7 +238,7 @@ flowchart TD
222
238
 
223
239
  ## Patterns
224
240
 
225
- ### Pattern: Poly-agent backlog (recommended)
241
+ ### Pattern: Multi-agent backlog (recommended)
226
242
 
227
243
  Conventions that help:
228
244
 
@@ -381,6 +397,7 @@ https://raw.githubusercontent.com/tmchow/hzl/main/docs/openclaw/tools-prompt.md
381
397
  ```bash
382
398
  # Setup
383
399
  hzl init # Initialize database (add --sync-url for cloud)
400
+ hzl init --reset-config # Reset config to default database location
384
401
 
385
402
  # Projects
386
403
  hzl project create <name> # Create a project
@@ -406,6 +423,10 @@ hzl sync # Sync with cloud (if configured)
406
423
  hzl status # Show database and sync state
407
424
  hzl doctor # Health checks
408
425
 
426
+ # ⚠️ DESTRUCTIVE - deletes all data
427
+ hzl init --force # Prompts for confirmation before deleting
428
+ hzl init --force --yes # Deletes WITHOUT confirmation (dangerous)
429
+
409
430
  # Web Dashboard
410
431
  hzl serve # Start dashboard (network accessible)
411
432
  hzl serve --port 8080 # Custom port
@@ -461,6 +482,20 @@ The server binds to `0.0.0.0` by default, making it accessible over the network
461
482
 
462
483
  ---
463
484
 
485
+ ## Packages
486
+
487
+ HZL is a monorepo with three packages:
488
+
489
+ | Package | Description | Install |
490
+ |---------|-------------|---------|
491
+ | [`hzl-cli`](https://www.npmjs.com/package/hzl-cli) | CLI for task management (`hzl` command) | `npm install -g hzl-cli` |
492
+ | [`hzl-core`](https://www.npmjs.com/package/hzl-core) | Core library for programmatic use | `npm install hzl-core` |
493
+ | [`hzl-web`](https://www.npmjs.com/package/hzl-web) | Web server and Kanban dashboard | `npm install hzl-web` |
494
+
495
+ Most users should install `hzl-cli`. Use `hzl-core` or `hzl-web` directly if you're building your own tooling or UI on top of HZL.
496
+
497
+ ---
498
+
464
499
  ## License
465
500
 
466
501
  MIT
@@ -16,12 +16,22 @@ export interface InitOptions {
16
16
  pathSource: DbPathSource;
17
17
  json: boolean;
18
18
  configPath?: string;
19
- force?: boolean;
19
+ /** Reset config to default database location (non-destructive) */
20
+ resetConfig?: boolean;
20
21
  syncUrl?: string;
21
22
  authToken?: string;
22
23
  encryptionKey?: string;
23
24
  local?: boolean;
24
25
  }
26
+ /**
27
+ * Delete existing database files for --force operation.
28
+ * Exported for testing.
29
+ *
30
+ * Note: Deletion is handled at the CLI layer (not in runInit) because it requires
31
+ * CLI-specific concerns: interactive confirmation prompts, TTY detection, and the
32
+ * ability to abort. runInit() remains idempotent and testable.
33
+ */
34
+ export declare function deleteExistingDatabases(eventsDbPath: string, cacheDbPath: string): void;
25
35
  export declare function runInit(options: InitOptions): InitResult;
26
36
  export declare function createInitCommand(): Command;
27
37
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EASL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,YAAY,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgBD,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CA0HxD;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAqD3C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,EASL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,YAAY,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGvF;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CA0HxD;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAwG3C"}
@@ -1,9 +1,11 @@
1
1
  import { Command } from 'commander';
2
2
  import fs from 'fs';
3
3
  import path from 'path';
4
+ import readline from 'readline';
4
5
  import { z } from 'zod';
5
6
  import { createDatastore } from 'hzl-core';
6
7
  import { resolveDbPathsWithSource, getDefaultDbPath, ensureDbDirectory, writeConfig, readConfig, getConfigPath, isDevMode, deriveCachePath } from '../config.js';
8
+ import { CLIError, ExitCode } from '../errors.js';
7
9
  import { GlobalOptionsSchema } from '../types.js';
8
10
  function formatSourceHint(source) {
9
11
  switch (source) {
@@ -18,13 +20,80 @@ function formatSourceHint(source) {
18
20
  }
19
21
  }
20
22
  }
23
+ /**
24
+ * Prompt for confirmation before destructive operations.
25
+ * Returns true if user confirms, false otherwise.
26
+ */
27
+ async function confirmDestructiveAction(eventsDbPath, cacheDbPath) {
28
+ const rl = readline.createInterface({
29
+ input: process.stdin,
30
+ output: process.stderr, // Use stderr so prompts don't interfere with --json output
31
+ });
32
+ return new Promise((resolve) => {
33
+ console.error('');
34
+ console.error('⚠️ WARNING: This will permanently delete all HZL data:');
35
+ console.error(` - ${eventsDbPath}`);
36
+ if (fs.existsSync(cacheDbPath)) {
37
+ console.error(` - ${cacheDbPath}`);
38
+ }
39
+ console.error('');
40
+ console.error('This action cannot be undone. All tasks, projects, and history will be lost.');
41
+ console.error('');
42
+ console.error(`To backup first: cp "${eventsDbPath}" "${eventsDbPath}.backup"`);
43
+ console.error('');
44
+ rl.question("Type 'yes' to confirm: ", (answer) => {
45
+ rl.close();
46
+ resolve(answer.toLowerCase() === 'yes');
47
+ });
48
+ });
49
+ }
50
+ /**
51
+ * Delete a SQLite database file and its WAL/SHM auxiliary files.
52
+ * Deletes auxiliary files FIRST to preserve recovery options if interrupted.
53
+ */
54
+ function deleteDbWithAuxiliaryFiles(dbPath) {
55
+ // Delete auxiliary files BEFORE main database - if interrupted, WAL can still be recovered
56
+ for (const suffix of ['-wal', '-shm', '-journal']) {
57
+ const auxPath = dbPath + suffix;
58
+ try {
59
+ if (fs.existsSync(auxPath))
60
+ fs.unlinkSync(auxPath);
61
+ }
62
+ catch (err) {
63
+ // Continue with other files even if one fails
64
+ const message = err instanceof Error ? err.message : String(err);
65
+ throw new CLIError(`Failed to delete ${auxPath}: ${message}`, ExitCode.DatabaseError);
66
+ }
67
+ }
68
+ // Delete main database file last
69
+ try {
70
+ if (fs.existsSync(dbPath))
71
+ fs.unlinkSync(dbPath);
72
+ }
73
+ catch (err) {
74
+ const message = err instanceof Error ? err.message : String(err);
75
+ throw new CLIError(`Failed to delete ${dbPath}: ${message}`, ExitCode.DatabaseError);
76
+ }
77
+ }
78
+ /**
79
+ * Delete existing database files for --force operation.
80
+ * Exported for testing.
81
+ *
82
+ * Note: Deletion is handled at the CLI layer (not in runInit) because it requires
83
+ * CLI-specific concerns: interactive confirmation prompts, TTY detection, and the
84
+ * ability to abort. runInit() remains idempotent and testable.
85
+ */
86
+ export function deleteExistingDatabases(eventsDbPath, cacheDbPath) {
87
+ deleteDbWithAuxiliaryFiles(eventsDbPath);
88
+ deleteDbWithAuxiliaryFiles(cacheDbPath);
89
+ }
21
90
  export function runInit(options) {
22
- const { eventsDbPath, cacheDbPath, pathSource, json, configPath = getConfigPath(), force = false, syncUrl, authToken, encryptionKey, local } = options;
91
+ const { eventsDbPath, cacheDbPath, pathSource, json, configPath = getConfigPath(), resetConfig = false, syncUrl, authToken, encryptionKey, local } = options;
23
92
  // Check for config conflict
24
93
  const existingConfig = readConfig(configPath);
25
- if (existingConfig.dbPath && existingConfig.dbPath !== eventsDbPath && !force) {
94
+ if (existingConfig.dbPath && existingConfig.dbPath !== eventsDbPath && !resetConfig) {
26
95
  throw new Error(`Config already points to: ${existingConfig.dbPath}\n` +
27
- `Use --force to reset to default location, or --db <path> to use a specific location`);
96
+ `Use --reset-config to reset to default location, or --db <path> to use a specific location`);
28
97
  }
29
98
  const existed = fs.existsSync(eventsDbPath);
30
99
  // Ensure the directories exist
@@ -62,8 +131,8 @@ export function runInit(options) {
62
131
  // Overwrite config to remove sync keys
63
132
  writeConfig(cleanConfig, configPath);
64
133
  }
65
- else if (force) {
66
- // --force: clear old dbPath and write fresh config
134
+ else if (resetConfig) {
135
+ // --reset-config: clear old dbPath and write fresh config
67
136
  const existing = readConfig(configPath);
68
137
  const cleanConfig = {
69
138
  defaultProject: existing.defaultProject,
@@ -123,21 +192,32 @@ export function runInit(options) {
123
192
  export function createInitCommand() {
124
193
  return new Command('init')
125
194
  .description('Initialize a new HZL database')
126
- .option('-f, --force', 'Reset to default location (or use with --db for specific path)')
195
+ .option('--reset-config', 'Reset config to default database location (non-destructive)')
196
+ .option('-f, --force', 'DESTRUCTIVE: Delete existing database and create fresh. Prompts for confirmation.')
197
+ .option('-y, --yes', 'Skip confirmation prompt (use with --force)')
127
198
  .option('--sync-url <url>', 'Turso sync URL (libsql://...)')
128
199
  .option('--auth-token <token>', 'Turso auth token')
129
200
  .option('--encryption-key <key>', 'Local encryption key')
130
201
  .option('--local', 'Explicit local-only mode, don\'t configure sync')
131
- .action(function () {
202
+ .action(async function () {
132
203
  const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
133
204
  const opts = z.object({
205
+ resetConfig: z.boolean().optional(),
134
206
  force: z.boolean().optional(),
207
+ yes: z.boolean().optional(),
135
208
  syncUrl: z.string().optional(),
136
209
  authToken: z.string().optional(),
137
210
  encryptionKey: z.string().optional(),
138
211
  local: z.boolean().optional()
139
212
  }).parse(this.opts());
213
+ const resetConfig = opts.resetConfig ?? false;
140
214
  const force = opts.force ?? false;
215
+ const yes = opts.yes ?? false;
216
+ const json = globalOpts.json ?? false;
217
+ // Validate flag combinations
218
+ if (force && resetConfig) {
219
+ throw new CLIError('Cannot use --force and --reset-config together. Choose one.', ExitCode.InvalidUsage);
220
+ }
141
221
  let eventsDbPath;
142
222
  let cacheDbPath;
143
223
  let pathSource;
@@ -147,8 +227,8 @@ export function createInitCommand() {
147
227
  cacheDbPath = deriveCachePath(eventsDbPath);
148
228
  pathSource = 'cli';
149
229
  }
150
- else if (force) {
151
- // --force without --db resets to default (or dev path in dev mode)
230
+ else if (resetConfig) {
231
+ // --reset-config without --db resets to default (or dev path in dev mode)
152
232
  eventsDbPath = getDefaultDbPath();
153
233
  cacheDbPath = deriveCachePath(eventsDbPath);
154
234
  pathSource = isDevMode() ? 'dev' : 'default';
@@ -160,12 +240,39 @@ export function createInitCommand() {
160
240
  cacheDbPath = resolved.cacheDbPath;
161
241
  pathSource = resolved.source;
162
242
  }
243
+ // Handle destructive --force flag
244
+ if (force) {
245
+ const dbExists = fs.existsSync(eventsDbPath);
246
+ if (dbExists) {
247
+ // In JSON mode without --yes, we can't prompt interactively
248
+ if (json && !yes) {
249
+ throw new CLIError('Cannot use --force with --json without --yes.\n' +
250
+ 'Use --force --yes to confirm destruction, or remove --json to see the confirmation prompt.', ExitCode.InvalidUsage);
251
+ }
252
+ // Check if we can prompt (TTY available)
253
+ if (!yes && !process.stdin.isTTY) {
254
+ throw new CLIError('Cannot prompt for confirmation in non-interactive mode.\n' +
255
+ 'Use --force --yes to confirm destruction without prompting.', ExitCode.InvalidUsage);
256
+ }
257
+ // Prompt for confirmation unless --yes is provided
258
+ if (!yes) {
259
+ const confirmed = await confirmDestructiveAction(eventsDbPath, cacheDbPath);
260
+ if (!confirmed) {
261
+ console.error('Aborted. No changes made.');
262
+ process.exit(1);
263
+ }
264
+ }
265
+ // Delete existing databases
266
+ deleteExistingDatabases(eventsDbPath, cacheDbPath);
267
+ }
268
+ // If no database exists, --force just initializes normally (no deletion needed)
269
+ }
163
270
  runInit({
164
271
  eventsDbPath,
165
272
  cacheDbPath,
166
273
  pathSource,
167
- json: globalOpts.json ?? false,
168
- force,
274
+ json,
275
+ resetConfig,
169
276
  syncUrl: opts.syncUrl,
170
277
  authToken: opts.authToken,
171
278
  encryptionKey: opts.encryptionKey,
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { createInitCommand, runInit } from './init.js';
2
+ import { createInitCommand, runInit, deleteExistingDatabases } from './init.js';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
5
  import os from 'os';
@@ -113,7 +113,7 @@ describe('hzl init command', () => {
113
113
  // Config file should not exist since no values were persisted
114
114
  expect(fs.existsSync(configPath)).toBe(false);
115
115
  });
116
- it('clears existing config dbPath when using --force', () => {
116
+ it('clears existing config dbPath when using --reset-config', () => {
117
117
  const existingDbPath = '/existing/path/events.db';
118
118
  fs.writeFileSync(configPath, JSON.stringify({ dbPath: existingDbPath }));
119
119
  runInit({
@@ -122,13 +122,13 @@ describe('hzl init command', () => {
122
122
  pathSource: 'default',
123
123
  json: true,
124
124
  configPath,
125
- force: true
125
+ resetConfig: true
126
126
  });
127
127
  const savedConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
128
- // --force clears the old dbPath so default location is used
128
+ // --reset-config clears the old dbPath so default location is used
129
129
  expect(savedConfig.dbPath).toBeUndefined();
130
130
  });
131
- it('preserves existing config dbPath without --force when pathSource is config', () => {
131
+ it('preserves existing config dbPath without --reset-config when pathSource is config', () => {
132
132
  // Use paths in test directory
133
133
  const existingDbPath = path.join(testDir, 'existing', 'events.db');
134
134
  const existingCachePath = path.join(testDir, 'existing', 'cache.db');
@@ -139,22 +139,110 @@ describe('hzl init command', () => {
139
139
  pathSource: 'config', // resolved from config, not default
140
140
  json: true,
141
141
  configPath,
142
- force: false
142
+ resetConfig: false
143
143
  });
144
144
  const savedConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
145
- // Without --force, existing dbPath is preserved
145
+ // Without --reset-config, existing dbPath is preserved
146
146
  expect(savedConfig.dbPath).toBe(existingDbPath);
147
147
  });
148
148
  });
149
149
  describe('createInitCommand', () => {
150
+ // Helper to safely extract option long names from Commander
151
+ function getOptionLongNames(cmd) {
152
+ return cmd.options
153
+ .map((o) => {
154
+ const opt = o;
155
+ return typeof opt.long === 'string' ? opt.long : undefined;
156
+ })
157
+ .filter((x) => x !== undefined);
158
+ }
150
159
  it('has sync options', () => {
151
160
  const cmd = createInitCommand();
152
- const opts = cmd.options.map((o) => o.long);
161
+ const opts = getOptionLongNames(cmd);
153
162
  expect(opts).toContain('--sync-url');
154
163
  expect(opts).toContain('--auth-token');
155
164
  expect(opts).toContain('--encryption-key');
156
165
  expect(opts).toContain('--local');
157
166
  });
167
+ it('has --reset-config option without short flag (non-destructive)', () => {
168
+ const cmd = createInitCommand();
169
+ const opts = getOptionLongNames(cmd);
170
+ expect(opts).toContain('--reset-config');
171
+ // Verify no -r short flag (could be confused with -r for recursive)
172
+ const resetConfigOpt = cmd.options.find((o) => {
173
+ const opt = o;
174
+ return opt.long === '--reset-config';
175
+ });
176
+ expect(resetConfigOpt?.short).toBeUndefined();
177
+ });
178
+ it('has --force and --yes options for destructive reset', () => {
179
+ const cmd = createInitCommand();
180
+ const opts = getOptionLongNames(cmd);
181
+ expect(opts).toContain('--force');
182
+ expect(opts).toContain('--yes');
183
+ });
184
+ });
185
+ describe('deleteExistingDatabases (--force helper)', () => {
186
+ it('deletes events.db and cache.db files', () => {
187
+ const eventsDbPath = path.join(testDir, 'events.db');
188
+ const cacheDbPath = path.join(testDir, 'cache.db');
189
+ // Create test files
190
+ fs.writeFileSync(eventsDbPath, 'test data');
191
+ fs.writeFileSync(cacheDbPath, 'test data');
192
+ expect(fs.existsSync(eventsDbPath)).toBe(true);
193
+ expect(fs.existsSync(cacheDbPath)).toBe(true);
194
+ deleteExistingDatabases(eventsDbPath, cacheDbPath);
195
+ expect(fs.existsSync(eventsDbPath)).toBe(false);
196
+ expect(fs.existsSync(cacheDbPath)).toBe(false);
197
+ });
198
+ it('deletes WAL, SHM, and journal files if they exist', () => {
199
+ const eventsDbPath = path.join(testDir, 'events.db');
200
+ const cacheDbPath = path.join(testDir, 'cache.db');
201
+ // Create test files including WAL/SHM/journal
202
+ fs.writeFileSync(eventsDbPath, 'test data');
203
+ fs.writeFileSync(eventsDbPath + '-wal', 'wal data');
204
+ fs.writeFileSync(eventsDbPath + '-shm', 'shm data');
205
+ fs.writeFileSync(eventsDbPath + '-journal', 'journal data');
206
+ fs.writeFileSync(cacheDbPath, 'test data');
207
+ fs.writeFileSync(cacheDbPath + '-wal', 'wal data');
208
+ deleteExistingDatabases(eventsDbPath, cacheDbPath);
209
+ expect(fs.existsSync(eventsDbPath)).toBe(false);
210
+ expect(fs.existsSync(eventsDbPath + '-wal')).toBe(false);
211
+ expect(fs.existsSync(eventsDbPath + '-shm')).toBe(false);
212
+ expect(fs.existsSync(eventsDbPath + '-journal')).toBe(false);
213
+ expect(fs.existsSync(cacheDbPath)).toBe(false);
214
+ expect(fs.existsSync(cacheDbPath + '-wal')).toBe(false);
215
+ });
216
+ it('handles missing files gracefully', () => {
217
+ const eventsDbPath = path.join(testDir, 'nonexistent-events.db');
218
+ const cacheDbPath = path.join(testDir, 'nonexistent-cache.db');
219
+ // Should not throw
220
+ expect(() => deleteExistingDatabases(eventsDbPath, cacheDbPath)).not.toThrow();
221
+ });
222
+ it('deletes auxiliary files before main database (safe order)', () => {
223
+ const eventsDbPath = path.join(testDir, 'events.db');
224
+ const cacheDbPath = path.join(testDir, 'cache.db');
225
+ // Track deletion order
226
+ const deletionOrder = [];
227
+ const originalUnlink = fs.unlinkSync;
228
+ vi.spyOn(fs, 'unlinkSync').mockImplementation((p) => {
229
+ deletionOrder.push(path.basename(String(p)));
230
+ return originalUnlink(p);
231
+ });
232
+ // Create test files
233
+ fs.writeFileSync(eventsDbPath, 'test data');
234
+ fs.writeFileSync(eventsDbPath + '-wal', 'wal data');
235
+ fs.writeFileSync(eventsDbPath + '-shm', 'shm data');
236
+ fs.writeFileSync(cacheDbPath, 'test data');
237
+ deleteExistingDatabases(eventsDbPath, cacheDbPath);
238
+ // Verify auxiliary files deleted before main database
239
+ const eventsDbIndex = deletionOrder.indexOf('events.db');
240
+ const walIndex = deletionOrder.indexOf('events.db-wal');
241
+ const shmIndex = deletionOrder.indexOf('events.db-shm');
242
+ expect(walIndex).toBeLessThan(eventsDbIndex);
243
+ expect(shmIndex).toBeLessThan(eventsDbIndex);
244
+ vi.restoreAllMocks();
245
+ });
158
246
  });
159
247
  });
160
248
  //# sourceMappingURL=init.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ export function createProgram() {
24
24
  const program = new Command();
25
25
  program
26
26
  .name('hzl')
27
- .description('A shared task ledger for OpenClaw and poly-agent workflows.')
27
+ .description('External task ledger for coding agents and OpenClaw.')
28
28
  .version(pkg.version)
29
29
  .option('--db <path>', 'Path to database file')
30
30
  .option('--json', 'Output in JSON format', false);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -6,8 +6,8 @@ export declare const GlobalOptionsSchema: z.ZodObject<{
6
6
  json: boolean;
7
7
  db?: string | undefined;
8
8
  }, {
9
- json?: boolean | undefined;
10
9
  db?: string | undefined;
10
+ json?: boolean | undefined;
11
11
  }>;
12
12
  export type GlobalOptions = z.infer<typeof GlobalOptionsSchema>;
13
13
  export interface Config {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hzl-cli",
3
- "version": "1.8.2",
4
- "description": "CLI for HZL - A shared task ledger for OpenClaw and poly-agent workflows.",
3
+ "version": "1.9.1",
4
+ "description": "CLI for HZL - External task ledger for coding agents and OpenClaw.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "hzl": "dist/cli.js"
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "libsql": "^0.5.0",
40
40
  "commander": "^14.0.0",
41
- "hzl-core": "^1.8.2",
41
+ "hzl-core": "^1.9.1",
42
42
  "hzl-web": "^1.7.6",
43
43
  "zod": "^3.23.8"
44
44
  },