hzl-cli 1.8.2 → 1.9.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.
Files changed (189) hide show
  1. package/README.md +19 -0
  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/types.d.ts +1 -1
  9. package/package.json +2 -2
  10. package/dist/commands/add-dep.d.ts +0 -15
  11. package/dist/commands/add-dep.d.ts.map +0 -1
  12. package/dist/commands/add-dep.js +0 -86
  13. package/dist/commands/add-dep.js.map +0 -1
  14. package/dist/commands/add-dep.test.d.ts +0 -2
  15. package/dist/commands/add-dep.test.d.ts.map +0 -1
  16. package/dist/commands/add-dep.test.js +0 -47
  17. package/dist/commands/add-dep.test.js.map +0 -1
  18. package/dist/commands/add.d.ts +0 -23
  19. package/dist/commands/add.d.ts.map +0 -1
  20. package/dist/commands/add.js +0 -65
  21. package/dist/commands/add.js.map +0 -1
  22. package/dist/commands/add.test.d.ts +0 -2
  23. package/dist/commands/add.test.d.ts.map +0 -1
  24. package/dist/commands/add.test.js +0 -60
  25. package/dist/commands/add.test.js.map +0 -1
  26. package/dist/commands/archive.d.ts +0 -16
  27. package/dist/commands/archive.d.ts.map +0 -1
  28. package/dist/commands/archive.js +0 -51
  29. package/dist/commands/archive.js.map +0 -1
  30. package/dist/commands/archive.test.d.ts +0 -2
  31. package/dist/commands/archive.test.d.ts.map +0 -1
  32. package/dist/commands/archive.test.js +0 -48
  33. package/dist/commands/archive.test.js.map +0 -1
  34. package/dist/commands/checkpoint.d.ts +0 -17
  35. package/dist/commands/checkpoint.d.ts.map +0 -1
  36. package/dist/commands/checkpoint.js +0 -64
  37. package/dist/commands/checkpoint.js.map +0 -1
  38. package/dist/commands/checkpoint.test.d.ts +0 -2
  39. package/dist/commands/checkpoint.test.d.ts.map +0 -1
  40. package/dist/commands/checkpoint.test.js +0 -47
  41. package/dist/commands/checkpoint.test.js.map +0 -1
  42. package/dist/commands/claim.d.ts +0 -20
  43. package/dist/commands/claim.d.ts.map +0 -1
  44. package/dist/commands/claim.js +0 -62
  45. package/dist/commands/claim.js.map +0 -1
  46. package/dist/commands/claim.test.d.ts +0 -2
  47. package/dist/commands/claim.test.d.ts.map +0 -1
  48. package/dist/commands/claim.test.js +0 -48
  49. package/dist/commands/claim.test.js.map +0 -1
  50. package/dist/commands/comment.d.ts +0 -16
  51. package/dist/commands/comment.d.ts.map +0 -1
  52. package/dist/commands/comment.js +0 -53
  53. package/dist/commands/comment.js.map +0 -1
  54. package/dist/commands/comment.test.d.ts +0 -2
  55. package/dist/commands/comment.test.d.ts.map +0 -1
  56. package/dist/commands/comment.test.js +0 -46
  57. package/dist/commands/comment.test.js.map +0 -1
  58. package/dist/commands/complete.d.ts +0 -15
  59. package/dist/commands/complete.d.ts.map +0 -1
  60. package/dist/commands/complete.js +0 -47
  61. package/dist/commands/complete.js.map +0 -1
  62. package/dist/commands/complete.test.d.ts +0 -2
  63. package/dist/commands/complete.test.d.ts.map +0 -1
  64. package/dist/commands/complete.test.js +0 -42
  65. package/dist/commands/complete.test.js.map +0 -1
  66. package/dist/commands/history.d.ts +0 -22
  67. package/dist/commands/history.d.ts.map +0 -1
  68. package/dist/commands/history.js +0 -70
  69. package/dist/commands/history.js.map +0 -1
  70. package/dist/commands/history.test.d.ts +0 -2
  71. package/dist/commands/history.test.d.ts.map +0 -1
  72. package/dist/commands/history.test.js +0 -41
  73. package/dist/commands/history.test.js.map +0 -1
  74. package/dist/commands/list.d.ts +0 -26
  75. package/dist/commands/list.d.ts.map +0 -1
  76. package/dist/commands/list.js +0 -85
  77. package/dist/commands/list.js.map +0 -1
  78. package/dist/commands/list.test.d.ts +0 -2
  79. package/dist/commands/list.test.d.ts.map +0 -1
  80. package/dist/commands/list.test.js +0 -55
  81. package/dist/commands/list.test.js.map +0 -1
  82. package/dist/commands/move.d.ts +0 -15
  83. package/dist/commands/move.d.ts.map +0 -1
  84. package/dist/commands/move.js +0 -62
  85. package/dist/commands/move.js.map +0 -1
  86. package/dist/commands/move.test.d.ts +0 -2
  87. package/dist/commands/move.test.d.ts.map +0 -1
  88. package/dist/commands/move.test.js +0 -55
  89. package/dist/commands/move.test.js.map +0 -1
  90. package/dist/commands/next.d.ts +0 -18
  91. package/dist/commands/next.d.ts.map +0 -1
  92. package/dist/commands/next.js +0 -64
  93. package/dist/commands/next.js.map +0 -1
  94. package/dist/commands/next.test.d.ts +0 -2
  95. package/dist/commands/next.test.d.ts.map +0 -1
  96. package/dist/commands/next.test.js +0 -52
  97. package/dist/commands/next.test.js.map +0 -1
  98. package/dist/commands/projects.d.ts +0 -16
  99. package/dist/commands/projects.d.ts.map +0 -1
  100. package/dist/commands/projects.js +0 -64
  101. package/dist/commands/projects.js.map +0 -1
  102. package/dist/commands/projects.test.d.ts +0 -2
  103. package/dist/commands/projects.test.d.ts.map +0 -1
  104. package/dist/commands/projects.test.js +0 -47
  105. package/dist/commands/projects.test.js.map +0 -1
  106. package/dist/commands/release.d.ts +0 -17
  107. package/dist/commands/release.d.ts.map +0 -1
  108. package/dist/commands/release.js +0 -52
  109. package/dist/commands/release.js.map +0 -1
  110. package/dist/commands/release.test.d.ts +0 -2
  111. package/dist/commands/release.test.d.ts.map +0 -1
  112. package/dist/commands/release.test.js +0 -47
  113. package/dist/commands/release.test.js.map +0 -1
  114. package/dist/commands/remove-dep.d.ts +0 -15
  115. package/dist/commands/remove-dep.d.ts.map +0 -1
  116. package/dist/commands/remove-dep.js +0 -55
  117. package/dist/commands/remove-dep.js.map +0 -1
  118. package/dist/commands/remove-dep.test.d.ts +0 -2
  119. package/dist/commands/remove-dep.test.d.ts.map +0 -1
  120. package/dist/commands/remove-dep.test.js +0 -47
  121. package/dist/commands/remove-dep.test.js.map +0 -1
  122. package/dist/commands/rename-project.d.ts +0 -16
  123. package/dist/commands/rename-project.d.ts.map +0 -1
  124. package/dist/commands/rename-project.js +0 -70
  125. package/dist/commands/rename-project.js.map +0 -1
  126. package/dist/commands/rename-project.test.d.ts +0 -2
  127. package/dist/commands/rename-project.test.d.ts.map +0 -1
  128. package/dist/commands/rename-project.test.js +0 -75
  129. package/dist/commands/rename-project.test.js.map +0 -1
  130. package/dist/commands/reopen.d.ts +0 -18
  131. package/dist/commands/reopen.d.ts.map +0 -1
  132. package/dist/commands/reopen.js +0 -56
  133. package/dist/commands/reopen.js.map +0 -1
  134. package/dist/commands/reopen.test.d.ts +0 -2
  135. package/dist/commands/reopen.test.d.ts.map +0 -1
  136. package/dist/commands/reopen.test.js +0 -48
  137. package/dist/commands/reopen.test.js.map +0 -1
  138. package/dist/commands/search.d.ts +0 -23
  139. package/dist/commands/search.d.ts.map +0 -1
  140. package/dist/commands/search.js +0 -89
  141. package/dist/commands/search.js.map +0 -1
  142. package/dist/commands/search.test.d.ts +0 -2
  143. package/dist/commands/search.test.d.ts.map +0 -1
  144. package/dist/commands/search.test.js +0 -41
  145. package/dist/commands/search.test.js.map +0 -1
  146. package/dist/commands/set-status.d.ts +0 -18
  147. package/dist/commands/set-status.d.ts.map +0 -1
  148. package/dist/commands/set-status.js +0 -60
  149. package/dist/commands/set-status.js.map +0 -1
  150. package/dist/commands/set-status.test.d.ts +0 -2
  151. package/dist/commands/set-status.test.d.ts.map +0 -1
  152. package/dist/commands/set-status.test.js +0 -45
  153. package/dist/commands/set-status.test.js.map +0 -1
  154. package/dist/commands/show.d.ts +0 -34
  155. package/dist/commands/show.d.ts.map +0 -1
  156. package/dist/commands/show.js +0 -96
  157. package/dist/commands/show.js.map +0 -1
  158. package/dist/commands/show.test.d.ts +0 -2
  159. package/dist/commands/show.test.d.ts.map +0 -1
  160. package/dist/commands/show.test.js +0 -50
  161. package/dist/commands/show.test.js.map +0 -1
  162. package/dist/commands/steal.d.ts +0 -19
  163. package/dist/commands/steal.d.ts.map +0 -1
  164. package/dist/commands/steal.js +0 -90
  165. package/dist/commands/steal.js.map +0 -1
  166. package/dist/commands/steal.test.d.ts +0 -2
  167. package/dist/commands/steal.test.d.ts.map +0 -1
  168. package/dist/commands/steal.test.js +0 -66
  169. package/dist/commands/steal.test.js.map +0 -1
  170. package/dist/commands/stuck.d.ts +0 -22
  171. package/dist/commands/stuck.d.ts.map +0 -1
  172. package/dist/commands/stuck.js +0 -91
  173. package/dist/commands/stuck.js.map +0 -1
  174. package/dist/commands/stuck.test.d.ts +0 -2
  175. package/dist/commands/stuck.test.d.ts.map +0 -1
  176. package/dist/commands/stuck.test.js +0 -51
  177. package/dist/commands/stuck.test.js.map +0 -1
  178. package/dist/commands/task.d.ts +0 -32
  179. package/dist/commands/task.d.ts.map +0 -1
  180. package/dist/commands/task.js +0 -72
  181. package/dist/commands/task.js.map +0 -1
  182. package/dist/commands/update.d.ts +0 -23
  183. package/dist/commands/update.d.ts.map +0 -1
  184. package/dist/commands/update.js +0 -105
  185. package/dist/commands/update.js.map +0 -1
  186. package/dist/commands/update.test.d.ts +0 -2
  187. package/dist/commands/update.test.d.ts.map +0 -1
  188. package/dist/commands/update.test.js +0 -63
  189. package/dist/commands/update.test.js.map +0 -1
package/README.md CHANGED
@@ -381,6 +381,7 @@ https://raw.githubusercontent.com/tmchow/hzl/main/docs/openclaw/tools-prompt.md
381
381
  ```bash
382
382
  # Setup
383
383
  hzl init # Initialize database (add --sync-url for cloud)
384
+ hzl init --reset-config # Reset config to default database location
384
385
 
385
386
  # Projects
386
387
  hzl project create <name> # Create a project
@@ -406,6 +407,10 @@ hzl sync # Sync with cloud (if configured)
406
407
  hzl status # Show database and sync state
407
408
  hzl doctor # Health checks
408
409
 
410
+ # ⚠️ DESTRUCTIVE - deletes all data
411
+ hzl init --force # Prompts for confirmation before deleting
412
+ hzl init --force --yes # Deletes WITHOUT confirmation (dangerous)
413
+
409
414
  # Web Dashboard
410
415
  hzl serve # Start dashboard (network accessible)
411
416
  hzl serve --port 8080 # Custom port
@@ -461,6 +466,20 @@ The server binds to `0.0.0.0` by default, making it accessible over the network
461
466
 
462
467
  ---
463
468
 
469
+ ## Packages
470
+
471
+ HZL is a monorepo with three packages:
472
+
473
+ | Package | Description | Install |
474
+ |---------|-------------|---------|
475
+ | [`hzl-cli`](https://www.npmjs.com/package/hzl-cli) | CLI for task management (`hzl` command) | `npm install -g hzl-cli` |
476
+ | [`hzl-core`](https://www.npmjs.com/package/hzl-core) | Core library for programmatic use | `npm install hzl-core` |
477
+ | [`hzl-web`](https://www.npmjs.com/package/hzl-web) | Web server and Kanban dashboard | `npm install hzl-web` |
478
+
479
+ 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.
480
+
481
+ ---
482
+
464
483
  ## License
465
484
 
466
485
  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/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,6 +1,6 @@
1
1
  {
2
2
  "name": "hzl-cli",
3
- "version": "1.8.2",
3
+ "version": "1.9.0",
4
4
  "description": "CLI for HZL - A shared task ledger for OpenClaw and poly-agent workflows.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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.0",
42
42
  "hzl-web": "^1.7.6",
43
43
  "zod": "^3.23.8"
44
44
  },
@@ -1,15 +0,0 @@
1
- import { Command } from 'commander';
2
- import { type Services } from '../db.js';
3
- export interface AddDepResult {
4
- task_id: string;
5
- depends_on_id: string;
6
- added: boolean;
7
- }
8
- export declare function runAddDep(options: {
9
- services: Services;
10
- taskId: string;
11
- dependsOnId: string;
12
- json: boolean;
13
- }): AddDepResult;
14
- export declare function createAddDepCommand(): Command;
15
- //# sourceMappingURL=add-dep.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-dep.d.ts","sourceRoot":"","sources":["../../src/commands/add-dep.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKhE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB;AA2BD,wBAAgB,SAAS,CAAC,OAAO,EAAE;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,YAAY,CAwCf;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAiB7C"}
@@ -1,86 +0,0 @@
1
- // packages/hzl-cli/src/commands/add-dep.ts
2
- import { Command } from 'commander';
3
- import { resolveDbPath } from '../config.js';
4
- import { initializeDb, closeDb } from '../db.js';
5
- import { handleError, CLIError, ExitCode } from '../errors.js';
6
- import { EventType } from 'hzl-core/events/types.js';
7
- /**
8
- * Check if adding taskId -> dependsOnId would create a cycle.
9
- * A cycle would occur if dependsOnId (or any of its dependencies) already depends on taskId.
10
- */
11
- function wouldCreateCycle(db, taskId, dependsOnId) {
12
- // Check if dependsOnId can reach taskId through its dependencies
13
- const visited = new Set();
14
- const queue = [dependsOnId];
15
- while (queue.length > 0) {
16
- const current = queue.shift();
17
- if (current === taskId)
18
- return true;
19
- if (visited.has(current))
20
- continue;
21
- visited.add(current);
22
- // Get dependencies of current task
23
- const deps = db.prepare('SELECT depends_on_id FROM task_dependencies WHERE task_id = ?').all(current);
24
- for (const dep of deps) {
25
- queue.push(dep.depends_on_id);
26
- }
27
- }
28
- return false;
29
- }
30
- export function runAddDep(options) {
31
- const { services, taskId, dependsOnId, json } = options;
32
- const { db, eventStore, projectionEngine } = services;
33
- // Check both tasks exist
34
- const task = services.taskService.getTaskById(taskId);
35
- if (!task) {
36
- throw new CLIError(`Task not found: ${taskId}`, ExitCode.NotFound);
37
- }
38
- const depTask = services.taskService.getTaskById(dependsOnId);
39
- if (!depTask) {
40
- throw new CLIError(`Dependency task not found: ${dependsOnId}`, ExitCode.NotFound);
41
- }
42
- // Check for cycles - would adding taskId -> dependsOnId create a cycle?
43
- if (wouldCreateCycle(db, taskId, dependsOnId)) {
44
- throw new CLIError(`Adding this dependency would create a cycle`, ExitCode.InvalidInput);
45
- }
46
- // Add the dependency via event
47
- const event = eventStore.append({
48
- task_id: taskId,
49
- type: EventType.DependencyAdded,
50
- data: { depends_on_id: dependsOnId },
51
- });
52
- projectionEngine.applyEvent(event);
53
- const result = {
54
- task_id: taskId,
55
- depends_on_id: dependsOnId,
56
- added: true,
57
- };
58
- if (json) {
59
- console.log(JSON.stringify(result));
60
- }
61
- else {
62
- console.log(`✓ Added dependency: ${taskId} → ${dependsOnId}`);
63
- }
64
- return result;
65
- }
66
- export function createAddDepCommand() {
67
- return new Command('add-dep')
68
- .description('Add a dependency between tasks')
69
- .argument('<taskId>', 'Task ID that will depend on the other')
70
- .argument('<dependsOnId>', 'Task ID that must be completed first')
71
- .action(function (taskId, dependsOnId) {
72
- const globalOpts = this.optsWithGlobals();
73
- const dbPath = resolveDbPath(globalOpts.db);
74
- const services = initializeDb(dbPath);
75
- try {
76
- runAddDep({ services, taskId, dependsOnId, json: globalOpts.json ?? false });
77
- }
78
- catch (e) {
79
- handleError(e, globalOpts.json);
80
- }
81
- finally {
82
- closeDb(services);
83
- }
84
- });
85
- }
86
- //# sourceMappingURL=add-dep.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-dep.js","sourceRoot":"","sources":["../../src/commands/add-dep.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=add-dep.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-dep.test.d.ts","sourceRoot":"","sources":["../../src/commands/add-dep.test.ts"],"names":[],"mappings":""}