hzl-cli 0.1.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 (281) hide show
  1. package/dist/__tests__/integration/cli-integration.test.d.ts +2 -0
  2. package/dist/__tests__/integration/cli-integration.test.d.ts.map +1 -0
  3. package/dist/__tests__/integration/cli-integration.test.js +295 -0
  4. package/dist/__tests__/integration/cli-integration.test.js.map +1 -0
  5. package/dist/__tests__/integration/helpers.d.ts +14 -0
  6. package/dist/__tests__/integration/helpers.d.ts.map +1 -0
  7. package/dist/__tests__/integration/helpers.js +44 -0
  8. package/dist/__tests__/integration/helpers.js.map +1 -0
  9. package/dist/cli.d.ts +3 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +8 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/commands/add-dep.d.ts +15 -0
  14. package/dist/commands/add-dep.d.ts.map +1 -0
  15. package/dist/commands/add-dep.js +86 -0
  16. package/dist/commands/add-dep.js.map +1 -0
  17. package/dist/commands/add-dep.test.d.ts +2 -0
  18. package/dist/commands/add-dep.test.d.ts.map +1 -0
  19. package/dist/commands/add-dep.test.js +47 -0
  20. package/dist/commands/add-dep.test.js.map +1 -0
  21. package/dist/commands/add.d.ts +23 -0
  22. package/dist/commands/add.d.ts.map +1 -0
  23. package/dist/commands/add.js +65 -0
  24. package/dist/commands/add.js.map +1 -0
  25. package/dist/commands/add.test.d.ts +2 -0
  26. package/dist/commands/add.test.d.ts.map +1 -0
  27. package/dist/commands/add.test.js +60 -0
  28. package/dist/commands/add.test.js.map +1 -0
  29. package/dist/commands/archive.d.ts +16 -0
  30. package/dist/commands/archive.d.ts.map +1 -0
  31. package/dist/commands/archive.js +51 -0
  32. package/dist/commands/archive.js.map +1 -0
  33. package/dist/commands/archive.test.d.ts +2 -0
  34. package/dist/commands/archive.test.d.ts.map +1 -0
  35. package/dist/commands/archive.test.js +48 -0
  36. package/dist/commands/archive.test.js.map +1 -0
  37. package/dist/commands/checkpoint.d.ts +17 -0
  38. package/dist/commands/checkpoint.d.ts.map +1 -0
  39. package/dist/commands/checkpoint.js +64 -0
  40. package/dist/commands/checkpoint.js.map +1 -0
  41. package/dist/commands/checkpoint.test.d.ts +2 -0
  42. package/dist/commands/checkpoint.test.d.ts.map +1 -0
  43. package/dist/commands/checkpoint.test.js +47 -0
  44. package/dist/commands/checkpoint.test.js.map +1 -0
  45. package/dist/commands/claim.d.ts +20 -0
  46. package/dist/commands/claim.d.ts.map +1 -0
  47. package/dist/commands/claim.js +62 -0
  48. package/dist/commands/claim.js.map +1 -0
  49. package/dist/commands/claim.test.d.ts +2 -0
  50. package/dist/commands/claim.test.d.ts.map +1 -0
  51. package/dist/commands/claim.test.js +48 -0
  52. package/dist/commands/claim.test.js.map +1 -0
  53. package/dist/commands/comment.d.ts +16 -0
  54. package/dist/commands/comment.d.ts.map +1 -0
  55. package/dist/commands/comment.js +53 -0
  56. package/dist/commands/comment.js.map +1 -0
  57. package/dist/commands/comment.test.d.ts +2 -0
  58. package/dist/commands/comment.test.d.ts.map +1 -0
  59. package/dist/commands/comment.test.js +46 -0
  60. package/dist/commands/comment.test.js.map +1 -0
  61. package/dist/commands/complete.d.ts +15 -0
  62. package/dist/commands/complete.d.ts.map +1 -0
  63. package/dist/commands/complete.js +47 -0
  64. package/dist/commands/complete.js.map +1 -0
  65. package/dist/commands/complete.test.d.ts +2 -0
  66. package/dist/commands/complete.test.d.ts.map +1 -0
  67. package/dist/commands/complete.test.js +42 -0
  68. package/dist/commands/complete.test.js.map +1 -0
  69. package/dist/commands/export-events.d.ts +14 -0
  70. package/dist/commands/export-events.d.ts.map +1 -0
  71. package/dist/commands/export-events.js +64 -0
  72. package/dist/commands/export-events.js.map +1 -0
  73. package/dist/commands/export-events.test.d.ts +2 -0
  74. package/dist/commands/export-events.test.d.ts.map +1 -0
  75. package/dist/commands/export-events.test.js +36 -0
  76. package/dist/commands/export-events.test.js.map +1 -0
  77. package/dist/commands/history.d.ts +22 -0
  78. package/dist/commands/history.d.ts.map +1 -0
  79. package/dist/commands/history.js +70 -0
  80. package/dist/commands/history.js.map +1 -0
  81. package/dist/commands/history.test.d.ts +2 -0
  82. package/dist/commands/history.test.d.ts.map +1 -0
  83. package/dist/commands/history.test.js +41 -0
  84. package/dist/commands/history.test.js.map +1 -0
  85. package/dist/commands/init.d.ts +15 -0
  86. package/dist/commands/init.d.ts.map +1 -0
  87. package/dist/commands/init.js +43 -0
  88. package/dist/commands/init.js.map +1 -0
  89. package/dist/commands/init.test.d.ts +2 -0
  90. package/dist/commands/init.test.d.ts.map +1 -0
  91. package/dist/commands/init.test.js +39 -0
  92. package/dist/commands/init.test.js.map +1 -0
  93. package/dist/commands/list.d.ts +26 -0
  94. package/dist/commands/list.d.ts.map +1 -0
  95. package/dist/commands/list.js +85 -0
  96. package/dist/commands/list.js.map +1 -0
  97. package/dist/commands/list.test.d.ts +2 -0
  98. package/dist/commands/list.test.d.ts.map +1 -0
  99. package/dist/commands/list.test.js +55 -0
  100. package/dist/commands/list.test.js.map +1 -0
  101. package/dist/commands/move.d.ts +15 -0
  102. package/dist/commands/move.d.ts.map +1 -0
  103. package/dist/commands/move.js +62 -0
  104. package/dist/commands/move.js.map +1 -0
  105. package/dist/commands/move.test.d.ts +2 -0
  106. package/dist/commands/move.test.d.ts.map +1 -0
  107. package/dist/commands/move.test.js +55 -0
  108. package/dist/commands/move.test.js.map +1 -0
  109. package/dist/commands/next.d.ts +18 -0
  110. package/dist/commands/next.d.ts.map +1 -0
  111. package/dist/commands/next.js +64 -0
  112. package/dist/commands/next.js.map +1 -0
  113. package/dist/commands/next.test.d.ts +2 -0
  114. package/dist/commands/next.test.d.ts.map +1 -0
  115. package/dist/commands/next.test.js +52 -0
  116. package/dist/commands/next.test.js.map +1 -0
  117. package/dist/commands/projects.d.ts +16 -0
  118. package/dist/commands/projects.d.ts.map +1 -0
  119. package/dist/commands/projects.js +64 -0
  120. package/dist/commands/projects.js.map +1 -0
  121. package/dist/commands/projects.test.d.ts +2 -0
  122. package/dist/commands/projects.test.d.ts.map +1 -0
  123. package/dist/commands/projects.test.js +47 -0
  124. package/dist/commands/projects.test.js.map +1 -0
  125. package/dist/commands/release.d.ts +17 -0
  126. package/dist/commands/release.d.ts.map +1 -0
  127. package/dist/commands/release.js +52 -0
  128. package/dist/commands/release.js.map +1 -0
  129. package/dist/commands/release.test.d.ts +2 -0
  130. package/dist/commands/release.test.d.ts.map +1 -0
  131. package/dist/commands/release.test.js +47 -0
  132. package/dist/commands/release.test.js.map +1 -0
  133. package/dist/commands/remove-dep.d.ts +15 -0
  134. package/dist/commands/remove-dep.d.ts.map +1 -0
  135. package/dist/commands/remove-dep.js +55 -0
  136. package/dist/commands/remove-dep.js.map +1 -0
  137. package/dist/commands/remove-dep.test.d.ts +2 -0
  138. package/dist/commands/remove-dep.test.d.ts.map +1 -0
  139. package/dist/commands/remove-dep.test.js +47 -0
  140. package/dist/commands/remove-dep.test.js.map +1 -0
  141. package/dist/commands/rename-project.d.ts +16 -0
  142. package/dist/commands/rename-project.d.ts.map +1 -0
  143. package/dist/commands/rename-project.js +70 -0
  144. package/dist/commands/rename-project.js.map +1 -0
  145. package/dist/commands/rename-project.test.d.ts +2 -0
  146. package/dist/commands/rename-project.test.d.ts.map +1 -0
  147. package/dist/commands/rename-project.test.js +75 -0
  148. package/dist/commands/rename-project.test.js.map +1 -0
  149. package/dist/commands/reopen.d.ts +18 -0
  150. package/dist/commands/reopen.d.ts.map +1 -0
  151. package/dist/commands/reopen.js +56 -0
  152. package/dist/commands/reopen.js.map +1 -0
  153. package/dist/commands/reopen.test.d.ts +2 -0
  154. package/dist/commands/reopen.test.d.ts.map +1 -0
  155. package/dist/commands/reopen.test.js +48 -0
  156. package/dist/commands/reopen.test.js.map +1 -0
  157. package/dist/commands/sample-project.d.ts +21 -0
  158. package/dist/commands/sample-project.d.ts.map +1 -0
  159. package/dist/commands/sample-project.js +168 -0
  160. package/dist/commands/sample-project.js.map +1 -0
  161. package/dist/commands/sample-project.test.d.ts +2 -0
  162. package/dist/commands/sample-project.test.d.ts.map +1 -0
  163. package/dist/commands/sample-project.test.js +96 -0
  164. package/dist/commands/sample-project.test.js.map +1 -0
  165. package/dist/commands/search.d.ts +23 -0
  166. package/dist/commands/search.d.ts.map +1 -0
  167. package/dist/commands/search.js +89 -0
  168. package/dist/commands/search.js.map +1 -0
  169. package/dist/commands/search.test.d.ts +2 -0
  170. package/dist/commands/search.test.d.ts.map +1 -0
  171. package/dist/commands/search.test.js +41 -0
  172. package/dist/commands/search.test.js.map +1 -0
  173. package/dist/commands/set-status.d.ts +18 -0
  174. package/dist/commands/set-status.d.ts.map +1 -0
  175. package/dist/commands/set-status.js +60 -0
  176. package/dist/commands/set-status.js.map +1 -0
  177. package/dist/commands/set-status.test.d.ts +2 -0
  178. package/dist/commands/set-status.test.d.ts.map +1 -0
  179. package/dist/commands/set-status.test.js +45 -0
  180. package/dist/commands/set-status.test.js.map +1 -0
  181. package/dist/commands/show.d.ts +34 -0
  182. package/dist/commands/show.d.ts.map +1 -0
  183. package/dist/commands/show.js +96 -0
  184. package/dist/commands/show.js.map +1 -0
  185. package/dist/commands/show.test.d.ts +2 -0
  186. package/dist/commands/show.test.d.ts.map +1 -0
  187. package/dist/commands/show.test.js +50 -0
  188. package/dist/commands/show.test.js.map +1 -0
  189. package/dist/commands/stats.d.ts +15 -0
  190. package/dist/commands/stats.d.ts.map +1 -0
  191. package/dist/commands/stats.js +84 -0
  192. package/dist/commands/stats.js.map +1 -0
  193. package/dist/commands/stats.test.d.ts +2 -0
  194. package/dist/commands/stats.test.d.ts.map +1 -0
  195. package/dist/commands/stats.test.js +43 -0
  196. package/dist/commands/stats.test.js.map +1 -0
  197. package/dist/commands/steal.d.ts +19 -0
  198. package/dist/commands/steal.d.ts.map +1 -0
  199. package/dist/commands/steal.js +90 -0
  200. package/dist/commands/steal.js.map +1 -0
  201. package/dist/commands/steal.test.d.ts +2 -0
  202. package/dist/commands/steal.test.d.ts.map +1 -0
  203. package/dist/commands/steal.test.js +66 -0
  204. package/dist/commands/steal.test.js.map +1 -0
  205. package/dist/commands/stuck.d.ts +22 -0
  206. package/dist/commands/stuck.d.ts.map +1 -0
  207. package/dist/commands/stuck.js +91 -0
  208. package/dist/commands/stuck.js.map +1 -0
  209. package/dist/commands/stuck.test.d.ts +2 -0
  210. package/dist/commands/stuck.test.d.ts.map +1 -0
  211. package/dist/commands/stuck.test.js +51 -0
  212. package/dist/commands/stuck.test.js.map +1 -0
  213. package/dist/commands/task.d.ts +32 -0
  214. package/dist/commands/task.d.ts.map +1 -0
  215. package/dist/commands/task.js +72 -0
  216. package/dist/commands/task.js.map +1 -0
  217. package/dist/commands/update.d.ts +23 -0
  218. package/dist/commands/update.d.ts.map +1 -0
  219. package/dist/commands/update.js +105 -0
  220. package/dist/commands/update.js.map +1 -0
  221. package/dist/commands/update.test.d.ts +2 -0
  222. package/dist/commands/update.test.d.ts.map +1 -0
  223. package/dist/commands/update.test.js +63 -0
  224. package/dist/commands/update.test.js.map +1 -0
  225. package/dist/commands/validate.d.ts +9 -0
  226. package/dist/commands/validate.d.ts.map +1 -0
  227. package/dist/commands/validate.js +60 -0
  228. package/dist/commands/validate.js.map +1 -0
  229. package/dist/commands/validate.test.d.ts +2 -0
  230. package/dist/commands/validate.test.d.ts.map +1 -0
  231. package/dist/commands/validate.test.js +39 -0
  232. package/dist/commands/validate.test.js.map +1 -0
  233. package/dist/commands/which-db.d.ts +12 -0
  234. package/dist/commands/which-db.d.ts.map +1 -0
  235. package/dist/commands/which-db.js +55 -0
  236. package/dist/commands/which-db.js.map +1 -0
  237. package/dist/commands/which-db.test.d.ts +2 -0
  238. package/dist/commands/which-db.test.d.ts.map +1 -0
  239. package/dist/commands/which-db.test.js +38 -0
  240. package/dist/commands/which-db.test.js.map +1 -0
  241. package/dist/config.d.ts +7 -0
  242. package/dist/config.d.ts.map +1 -0
  243. package/dist/config.js +58 -0
  244. package/dist/config.js.map +1 -0
  245. package/dist/config.test.d.ts +2 -0
  246. package/dist/config.test.d.ts.map +1 -0
  247. package/dist/config.test.js +38 -0
  248. package/dist/config.test.js.map +1 -0
  249. package/dist/db.d.ts +17 -0
  250. package/dist/db.d.ts.map +1 -0
  251. package/dist/db.js +35 -0
  252. package/dist/db.js.map +1 -0
  253. package/dist/errors.d.ts +15 -0
  254. package/dist/errors.d.ts.map +1 -0
  255. package/dist/errors.js +39 -0
  256. package/dist/errors.js.map +1 -0
  257. package/dist/errors.test.d.ts +2 -0
  258. package/dist/errors.test.d.ts.map +1 -0
  259. package/dist/errors.test.js +15 -0
  260. package/dist/errors.test.js.map +1 -0
  261. package/dist/index.d.ts +12 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +267 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/index.test.d.ts +2 -0
  266. package/dist/index.test.d.ts.map +1 -0
  267. package/dist/index.test.js +30 -0
  268. package/dist/index.test.js.map +1 -0
  269. package/dist/output.d.ts +13 -0
  270. package/dist/output.d.ts.map +1 -0
  271. package/dist/output.js +56 -0
  272. package/dist/output.js.map +1 -0
  273. package/dist/types.d.ts +23 -0
  274. package/dist/types.d.ts.map +1 -0
  275. package/dist/types.js +7 -0
  276. package/dist/types.js.map +1 -0
  277. package/dist/types.test.d.ts +2 -0
  278. package/dist/types.test.d.ts.map +1 -0
  279. package/dist/types.test.js +23 -0
  280. package/dist/types.test.js.map +1 -0
  281. package/package.json +51 -0
package/dist/index.js ADDED
@@ -0,0 +1,267 @@
1
+ import { Command } from 'commander';
2
+ import { resolveDbPath } from './config.js';
3
+ import { initializeDb, closeDb } from './db.js';
4
+ import { createFormatter } from './output.js';
5
+ import { handleError } from './errors.js';
6
+ import * as taskCommands from './commands/task.js';
7
+ import { createInitCommand } from './commands/init.js';
8
+ import { createWhichDbCommand } from './commands/which-db.js';
9
+ import { createProjectsCommand } from './commands/projects.js';
10
+ import { createRenameProjectCommand } from './commands/rename-project.js';
11
+ import { createAddCommand } from './commands/add.js';
12
+ import { createListCommand } from './commands/list.js';
13
+ import { createNextCommand } from './commands/next.js';
14
+ import { createShowCommand } from './commands/show.js';
15
+ import { createHistoryCommand } from './commands/history.js';
16
+ import { createUpdateCommand } from './commands/update.js';
17
+ import { createMoveCommand } from './commands/move.js';
18
+ import { createClaimCommand } from './commands/claim.js';
19
+ import { createCompleteCommand } from './commands/complete.js';
20
+ import { createReleaseCommand } from './commands/release.js';
21
+ import { createArchiveCommand } from './commands/archive.js';
22
+ import { createReopenCommand } from './commands/reopen.js';
23
+ import { createSetStatusCommand } from './commands/set-status.js';
24
+ import { createStealCommand } from './commands/steal.js';
25
+ import { createStuckCommand } from './commands/stuck.js';
26
+ import { createAddDepCommand } from './commands/add-dep.js';
27
+ import { createRemoveDepCommand } from './commands/remove-dep.js';
28
+ import { createCommentCommand } from './commands/comment.js';
29
+ import { createCheckpointCommand } from './commands/checkpoint.js';
30
+ import { createValidateCommand } from './commands/validate.js';
31
+ import { createSearchCommand } from './commands/search.js';
32
+ import { createStatsCommand } from './commands/stats.js';
33
+ import { createExportEventsCommand } from './commands/export-events.js';
34
+ import { createSampleProjectCommand } from './commands/sample-project.js';
35
+ export function createProgram() {
36
+ const program = new Command();
37
+ program
38
+ .name('hzl')
39
+ .description('HZL - Hierarchical task coordination for AI agent swarms')
40
+ .version('0.1.0')
41
+ .option('--db <path>', 'Path to database file')
42
+ .option('--json', 'Output in JSON format', false);
43
+ function withDb(fn) {
44
+ const opts = program.opts();
45
+ const dbPath = resolveDbPath(opts.db);
46
+ const services = initializeDb(dbPath);
47
+ try {
48
+ return fn(services);
49
+ }
50
+ finally {
51
+ closeDb(services);
52
+ }
53
+ }
54
+ program.addCommand(createInitCommand());
55
+ program.addCommand(createWhichDbCommand());
56
+ program.addCommand(createProjectsCommand());
57
+ program.addCommand(createRenameProjectCommand());
58
+ program.addCommand(createAddCommand());
59
+ program.addCommand(createListCommand());
60
+ program.addCommand(createNextCommand());
61
+ program.addCommand(createShowCommand());
62
+ program.addCommand(createHistoryCommand());
63
+ program.addCommand(createUpdateCommand());
64
+ program.addCommand(createMoveCommand());
65
+ program.addCommand(createClaimCommand());
66
+ program.addCommand(createCompleteCommand());
67
+ program.addCommand(createReleaseCommand());
68
+ program.addCommand(createArchiveCommand());
69
+ program.addCommand(createReopenCommand());
70
+ program.addCommand(createSetStatusCommand());
71
+ program.addCommand(createStealCommand());
72
+ program.addCommand(createStuckCommand());
73
+ program.addCommand(createAddDepCommand());
74
+ program.addCommand(createRemoveDepCommand());
75
+ program.addCommand(createCommentCommand());
76
+ program.addCommand(createCheckpointCommand());
77
+ program.addCommand(createValidateCommand());
78
+ program.addCommand(createSearchCommand());
79
+ program.addCommand(createStatsCommand());
80
+ program.addCommand(createExportEventsCommand());
81
+ program.addCommand(createSampleProjectCommand());
82
+ const task = program.command('task').description('Task management commands');
83
+ task
84
+ .command('create')
85
+ .description('Create a new task')
86
+ .argument('<title>', 'Task title')
87
+ .option('-p, --project <project>', 'Project name', 'inbox')
88
+ .option('-d, --description <desc>', 'Task description')
89
+ .option('-t, --tags <tags>', 'Comma-separated tags')
90
+ .option('--priority <n>', 'Priority (0-3)', '0')
91
+ .option('--depends-on <ids>', 'Comma-separated task IDs this depends on')
92
+ .option('--author <name>', 'Author name')
93
+ .action((title, opts) => {
94
+ try {
95
+ withDb((services) => {
96
+ const out = createFormatter(program.opts().json);
97
+ taskCommands.createTask(services, {
98
+ title,
99
+ project: opts.project,
100
+ description: opts.description,
101
+ tags: opts.tags?.split(','),
102
+ priority: parseInt(opts.priority, 10),
103
+ depends_on: opts.dependsOn?.split(','),
104
+ }, opts.author, out);
105
+ });
106
+ }
107
+ catch (e) {
108
+ handleError(e, program.opts().json);
109
+ }
110
+ });
111
+ task
112
+ .command('claim <taskId>')
113
+ .description('Claim a task')
114
+ .option('--author <name>', 'Author name')
115
+ .option('--lease <minutes>', 'Lease duration in minutes')
116
+ .action((taskId, opts) => {
117
+ try {
118
+ withDb((services) => {
119
+ const out = createFormatter(program.opts().json);
120
+ taskCommands.claimTask(services, taskId, opts.author, opts.lease ? parseInt(opts.lease, 10) : undefined, out);
121
+ });
122
+ }
123
+ catch (e) {
124
+ handleError(e, program.opts().json);
125
+ }
126
+ });
127
+ task
128
+ .command('claim-next')
129
+ .description('Claim the next available task')
130
+ .option('-p, --project <project>', 'Filter by project')
131
+ .option('-t, --tags <tags>', 'Comma-separated required tags')
132
+ .option('--author <name>', 'Author name')
133
+ .option('--lease <minutes>', 'Lease duration in minutes')
134
+ .action((opts) => {
135
+ try {
136
+ withDb((services) => {
137
+ const out = createFormatter(program.opts().json);
138
+ taskCommands.claimNext(services, {
139
+ project: opts.project,
140
+ tags: opts.tags?.split(','),
141
+ author: opts.author,
142
+ leaseMinutes: opts.lease ? parseInt(opts.lease, 10) : undefined,
143
+ }, out);
144
+ });
145
+ }
146
+ catch (e) {
147
+ handleError(e, program.opts().json);
148
+ }
149
+ });
150
+ task
151
+ .command('complete <taskId>')
152
+ .description('Complete a task')
153
+ .option('--author <name>', 'Author name')
154
+ .action((taskId, opts) => {
155
+ try {
156
+ withDb((services) => {
157
+ const out = createFormatter(program.opts().json);
158
+ taskCommands.completeTask(services, taskId, opts.author, out);
159
+ });
160
+ }
161
+ catch (e) {
162
+ handleError(e, program.opts().json);
163
+ }
164
+ });
165
+ task
166
+ .command('release <taskId>')
167
+ .description('Release a claimed task')
168
+ .option('--reason <reason>', 'Release reason')
169
+ .option('--author <name>', 'Author name')
170
+ .action((taskId, opts) => {
171
+ try {
172
+ withDb((services) => {
173
+ const out = createFormatter(program.opts().json);
174
+ taskCommands.releaseTask(services, taskId, opts.reason, opts.author, out);
175
+ });
176
+ }
177
+ catch (e) {
178
+ handleError(e, program.opts().json);
179
+ }
180
+ });
181
+ task
182
+ .command('get <taskId>')
183
+ .description('Get task details')
184
+ .action((taskId) => {
185
+ try {
186
+ withDb((services) => {
187
+ const out = createFormatter(program.opts().json);
188
+ taskCommands.getTask(services, taskId, out);
189
+ });
190
+ }
191
+ catch (e) {
192
+ handleError(e, program.opts().json);
193
+ }
194
+ });
195
+ task
196
+ .command('list')
197
+ .description('List tasks')
198
+ .option('-p, --project <project>', 'Filter by project')
199
+ .option('-s, --status <status>', 'Filter by status')
200
+ .option('-l, --limit <n>', 'Limit results', '50')
201
+ .action((opts) => {
202
+ try {
203
+ withDb((services) => {
204
+ const out = createFormatter(program.opts().json);
205
+ taskCommands.listTasks(services, {
206
+ project: opts.project,
207
+ status: opts.status,
208
+ limit: parseInt(opts.limit, 10),
209
+ }, out);
210
+ });
211
+ }
212
+ catch (e) {
213
+ handleError(e, program.opts().json);
214
+ }
215
+ });
216
+ task
217
+ .command('comment <taskId> <text>')
218
+ .description('Add a comment to a task')
219
+ .option('--author <name>', 'Author name')
220
+ .action((taskId, text, opts) => {
221
+ try {
222
+ withDb((services) => {
223
+ const out = createFormatter(program.opts().json);
224
+ taskCommands.addComment(services, taskId, text, opts.author, out);
225
+ });
226
+ }
227
+ catch (e) {
228
+ handleError(e, program.opts().json);
229
+ }
230
+ });
231
+ task
232
+ .command('checkpoint <taskId> <name>')
233
+ .description('Add a checkpoint to a task')
234
+ .option('--data <json>', 'Checkpoint data as JSON')
235
+ .option('--author <name>', 'Author name')
236
+ .action((taskId, name, opts) => {
237
+ try {
238
+ withDb((services) => {
239
+ const out = createFormatter(program.opts().json);
240
+ const data = opts.data ? JSON.parse(opts.data) : undefined;
241
+ taskCommands.addCheckpoint(services, taskId, name, data, opts.author, out);
242
+ });
243
+ }
244
+ catch (e) {
245
+ handleError(e, program.opts().json);
246
+ }
247
+ });
248
+ return program;
249
+ }
250
+ export async function run(argv = process.argv) {
251
+ const program = createProgram();
252
+ try {
253
+ await program.parseAsync(argv);
254
+ }
255
+ catch (error) {
256
+ handleError(error);
257
+ }
258
+ }
259
+ export * from './types.js';
260
+ export * from './config.js';
261
+ export * from './errors.js';
262
+ export * from './output.js';
263
+ export * from './db.js';
264
+ export * from './commands/task.js';
265
+ export * from './commands/search.js';
266
+ export * from './commands/validate.js';
267
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,KAAK,CAAC;SACX,WAAW,CAAC,0DAA0D,CAAC;SACvE,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAC9C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAEpD,SAAS,MAAM,CAAI,EAA6B;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAE7E,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mBAAmB,CAAC;SAChC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;SACjC,MAAM,CAAC,yBAAyB,EAAE,cAAc,EAAE,OAAO,CAAC;SAC1D,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,0CAA0C,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAChC,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;oBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACrC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC;iBACvC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAChH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,yBAAyB,EAAE,mBAAmB,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;oBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;iBAChE,EAAE,GAAG,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;SAC7C,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,YAAY,CAAC;SACzB,MAAM,CAAC,yBAAyB,EAAE,mBAAmB,CAAC;SACtD,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;SACnD,MAAM,CAAC,iBAAiB,EAAE,eAAe,EAAE,IAAI,CAAC;SAChD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAgC;oBAC7C,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;iBAChC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3D,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI;IACrD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import * as hzlCli from './index.js';
3
+ describe('hzl-cli public API', () => {
4
+ it('exports createProgram', () => {
5
+ expect(hzlCli.createProgram).toBeDefined();
6
+ expect(typeof hzlCli.createProgram).toBe('function');
7
+ });
8
+ it('exports run', () => {
9
+ expect(hzlCli.run).toBeDefined();
10
+ expect(typeof hzlCli.run).toBe('function');
11
+ });
12
+ it('exports CLIError', () => {
13
+ expect(hzlCli.CLIError).toBeDefined();
14
+ });
15
+ it('exports ExitCode', () => {
16
+ expect(hzlCli.ExitCode).toBeDefined();
17
+ expect(hzlCli.ExitCode.Success).toBe(0);
18
+ });
19
+ it('exports config utilities', () => {
20
+ expect(hzlCli.resolveDbPath).toBeDefined();
21
+ expect(hzlCli.loadConfig).toBeDefined();
22
+ });
23
+ it('exports output utilities', () => {
24
+ expect(hzlCli.formatOutput).toBeDefined();
25
+ expect(hzlCli.printSuccess).toBeDefined();
26
+ expect(hzlCli.printError).toBeDefined();
27
+ expect(hzlCli.printTable).toBeDefined();
28
+ });
29
+ });
30
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AAErC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface OutputFormatter {
2
+ table(data: Record<string, unknown>[], columns?: string[]): void;
3
+ json(data: unknown): void;
4
+ text(message: string): void;
5
+ success(message: string): void;
6
+ error(message: string): void;
7
+ }
8
+ export declare function createFormatter(jsonMode: boolean): OutputFormatter;
9
+ export declare function formatOutput(jsonMode: boolean, data: unknown): void;
10
+ export declare function printSuccess(message: string, jsonMode?: boolean): void;
11
+ export declare function printError(message: string, jsonMode?: boolean): void;
12
+ export declare function printTable(data: Record<string, unknown>[], columns?: string[], jsonMode?: boolean): void;
13
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,CAsClE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,IAAI,CAEpE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,IAAI,CAElE;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,QAAQ,UAAQ,GACf,IAAI,CAEN"}
package/dist/output.js ADDED
@@ -0,0 +1,56 @@
1
+ export function createFormatter(jsonMode) {
2
+ return {
3
+ table(data, columns) {
4
+ if (jsonMode) {
5
+ console.log(JSON.stringify(data));
6
+ }
7
+ else {
8
+ if (data.length === 0) {
9
+ console.log('No results');
10
+ return;
11
+ }
12
+ const cols = columns ?? Object.keys(data[0]);
13
+ console.log(cols.join('\t'));
14
+ for (const row of data) {
15
+ console.log(cols.map(c => String(row[c] ?? '')).join('\t'));
16
+ }
17
+ }
18
+ },
19
+ json(data) {
20
+ console.log(JSON.stringify(data, null, jsonMode ? 0 : 2));
21
+ },
22
+ text(message) {
23
+ if (!jsonMode)
24
+ console.log(message);
25
+ },
26
+ success(message) {
27
+ if (jsonMode) {
28
+ console.log(JSON.stringify({ success: true, message }));
29
+ }
30
+ else {
31
+ console.log(`✓ ${message}`);
32
+ }
33
+ },
34
+ error(message) {
35
+ if (jsonMode) {
36
+ console.log(JSON.stringify({ success: false, error: message }));
37
+ }
38
+ else {
39
+ console.error(`✗ ${message}`);
40
+ }
41
+ },
42
+ };
43
+ }
44
+ export function formatOutput(jsonMode, data) {
45
+ createFormatter(jsonMode).json(data);
46
+ }
47
+ export function printSuccess(message, jsonMode = false) {
48
+ createFormatter(jsonMode).success(message);
49
+ }
50
+ export function printError(message, jsonMode = false) {
51
+ createFormatter(jsonMode).error(message);
52
+ }
53
+ export function printTable(data, columns, jsonMode = false) {
54
+ createFormatter(jsonMode).table(data, columns);
55
+ }
56
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,OAAO;QACL,KAAK,CAAC,IAA+B,EAAE,OAAkB;YACvD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAa;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,OAAe;YAClB,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,OAAe;YACrB,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAe;YACnB,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAiB,EAAE,IAAa;IAC3D,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,QAAQ,GAAG,KAAK;IAC5D,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,QAAQ,GAAG,KAAK;IAC1D,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAA+B,EAC/B,OAAkB,EAClB,QAAQ,GAAG,KAAK;IAEhB,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const GlobalOptionsSchema: z.ZodObject<{
3
+ db: z.ZodOptional<z.ZodString>;
4
+ json: z.ZodDefault<z.ZodBoolean>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ json: boolean;
7
+ db?: string | undefined;
8
+ }, {
9
+ db?: string | undefined;
10
+ json?: boolean | undefined;
11
+ }>;
12
+ export type GlobalOptions = z.infer<typeof GlobalOptionsSchema>;
13
+ export interface Config {
14
+ dbPath?: string;
15
+ defaultProject?: string;
16
+ defaultAuthor?: string;
17
+ leaseMinutes?: number;
18
+ }
19
+ export interface CommandContext {
20
+ dbPath: string;
21
+ json: boolean;
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf"}
package/dist/types.js ADDED
@@ -0,0 +1,7 @@
1
+ // packages/hzl-cli/src/types.ts
2
+ import { z } from 'zod';
3
+ export const GlobalOptionsSchema = z.object({
4
+ db: z.string().optional(),
5
+ json: z.boolean().default(false),
6
+ });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACjC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../src/types.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ // packages/hzl-cli/src/types.test.ts
2
+ import { describe, it, expect } from 'vitest';
3
+ import { GlobalOptionsSchema } from './types.js';
4
+ describe('GlobalOptions', () => {
5
+ it('validates valid options with db path', () => {
6
+ const options = { db: '/path/to/db.sqlite', json: false };
7
+ const result = GlobalOptionsSchema.safeParse(options);
8
+ expect(result.success).toBe(true);
9
+ });
10
+ it('sets default values correctly', () => {
11
+ const options = {};
12
+ const result = GlobalOptionsSchema.parse(options);
13
+ expect(result.json).toBe(false);
14
+ expect(result.db).toBeUndefined();
15
+ });
16
+ });
17
+ describe('Config type', () => {
18
+ it('has correct shape', () => {
19
+ const config = { dbPath: '/path/to/db', defaultProject: 'inbox' };
20
+ expect(config.dbPath).toBe('/path/to/db');
21
+ });
22
+ });
23
+ //# sourceMappingURL=types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../src/types.test.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAmC,MAAM,YAAY,CAAC;AAElF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAW,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "hzl-cli",
3
+ "version": "0.1.0",
4
+ "description": "CLI for HZL - Task coordination for AI agent swarms",
5
+ "type": "module",
6
+ "bin": {
7
+ "hzl": "dist/cli.js"
8
+ },
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "README.md"
20
+ ],
21
+ "keywords": [
22
+ "cli",
23
+ "task-management",
24
+ "ai-agents",
25
+ "event-sourcing",
26
+ "sqlite"
27
+ ],
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/tmchow/hzl.git",
31
+ "directory": "packages/hzl-cli"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc -b",
35
+ "test": "vitest run",
36
+ "test:watch": "vitest"
37
+ },
38
+ "dependencies": {
39
+ "hzl-core": "*",
40
+ "commander": "^12.0.0",
41
+ "zod": "^3.22.4",
42
+ "better-sqlite3": "^11.8.1"
43
+ },
44
+ "devDependencies": {
45
+ "@vitest/coverage-v8": "^1.6.0",
46
+ "vitest": "^1.6.0",
47
+ "@types/better-sqlite3": "^7.6.10",
48
+ "@types/node": "^20.10.0",
49
+ "typescript": "^5.3.0"
50
+ }
51
+ }