hzl-cli 1.13.1 → 1.13.2

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 (182) hide show
  1. package/dist/types.d.ts +1 -1
  2. package/package.json +2 -2
  3. package/dist/commands/add-dep.d.ts +0 -15
  4. package/dist/commands/add-dep.d.ts.map +0 -1
  5. package/dist/commands/add-dep.js +0 -86
  6. package/dist/commands/add-dep.js.map +0 -1
  7. package/dist/commands/add-dep.test.d.ts +0 -2
  8. package/dist/commands/add-dep.test.d.ts.map +0 -1
  9. package/dist/commands/add-dep.test.js +0 -47
  10. package/dist/commands/add-dep.test.js.map +0 -1
  11. package/dist/commands/add.d.ts +0 -23
  12. package/dist/commands/add.d.ts.map +0 -1
  13. package/dist/commands/add.js +0 -65
  14. package/dist/commands/add.js.map +0 -1
  15. package/dist/commands/add.test.d.ts +0 -2
  16. package/dist/commands/add.test.d.ts.map +0 -1
  17. package/dist/commands/add.test.js +0 -60
  18. package/dist/commands/add.test.js.map +0 -1
  19. package/dist/commands/archive.d.ts +0 -16
  20. package/dist/commands/archive.d.ts.map +0 -1
  21. package/dist/commands/archive.js +0 -51
  22. package/dist/commands/archive.js.map +0 -1
  23. package/dist/commands/archive.test.d.ts +0 -2
  24. package/dist/commands/archive.test.d.ts.map +0 -1
  25. package/dist/commands/archive.test.js +0 -48
  26. package/dist/commands/archive.test.js.map +0 -1
  27. package/dist/commands/checkpoint.d.ts +0 -17
  28. package/dist/commands/checkpoint.d.ts.map +0 -1
  29. package/dist/commands/checkpoint.js +0 -64
  30. package/dist/commands/checkpoint.js.map +0 -1
  31. package/dist/commands/checkpoint.test.d.ts +0 -2
  32. package/dist/commands/checkpoint.test.d.ts.map +0 -1
  33. package/dist/commands/checkpoint.test.js +0 -47
  34. package/dist/commands/checkpoint.test.js.map +0 -1
  35. package/dist/commands/claim.d.ts +0 -20
  36. package/dist/commands/claim.d.ts.map +0 -1
  37. package/dist/commands/claim.js +0 -62
  38. package/dist/commands/claim.js.map +0 -1
  39. package/dist/commands/claim.test.d.ts +0 -2
  40. package/dist/commands/claim.test.d.ts.map +0 -1
  41. package/dist/commands/claim.test.js +0 -48
  42. package/dist/commands/claim.test.js.map +0 -1
  43. package/dist/commands/comment.d.ts +0 -16
  44. package/dist/commands/comment.d.ts.map +0 -1
  45. package/dist/commands/comment.js +0 -53
  46. package/dist/commands/comment.js.map +0 -1
  47. package/dist/commands/comment.test.d.ts +0 -2
  48. package/dist/commands/comment.test.d.ts.map +0 -1
  49. package/dist/commands/comment.test.js +0 -46
  50. package/dist/commands/comment.test.js.map +0 -1
  51. package/dist/commands/complete.d.ts +0 -15
  52. package/dist/commands/complete.d.ts.map +0 -1
  53. package/dist/commands/complete.js +0 -47
  54. package/dist/commands/complete.js.map +0 -1
  55. package/dist/commands/complete.test.d.ts +0 -2
  56. package/dist/commands/complete.test.d.ts.map +0 -1
  57. package/dist/commands/complete.test.js +0 -42
  58. package/dist/commands/complete.test.js.map +0 -1
  59. package/dist/commands/history.d.ts +0 -22
  60. package/dist/commands/history.d.ts.map +0 -1
  61. package/dist/commands/history.js +0 -70
  62. package/dist/commands/history.js.map +0 -1
  63. package/dist/commands/history.test.d.ts +0 -2
  64. package/dist/commands/history.test.d.ts.map +0 -1
  65. package/dist/commands/history.test.js +0 -41
  66. package/dist/commands/history.test.js.map +0 -1
  67. package/dist/commands/list.d.ts +0 -26
  68. package/dist/commands/list.d.ts.map +0 -1
  69. package/dist/commands/list.js +0 -85
  70. package/dist/commands/list.js.map +0 -1
  71. package/dist/commands/list.test.d.ts +0 -2
  72. package/dist/commands/list.test.d.ts.map +0 -1
  73. package/dist/commands/list.test.js +0 -55
  74. package/dist/commands/list.test.js.map +0 -1
  75. package/dist/commands/move.d.ts +0 -15
  76. package/dist/commands/move.d.ts.map +0 -1
  77. package/dist/commands/move.js +0 -62
  78. package/dist/commands/move.js.map +0 -1
  79. package/dist/commands/move.test.d.ts +0 -2
  80. package/dist/commands/move.test.d.ts.map +0 -1
  81. package/dist/commands/move.test.js +0 -55
  82. package/dist/commands/move.test.js.map +0 -1
  83. package/dist/commands/next.d.ts +0 -18
  84. package/dist/commands/next.d.ts.map +0 -1
  85. package/dist/commands/next.js +0 -64
  86. package/dist/commands/next.js.map +0 -1
  87. package/dist/commands/next.test.d.ts +0 -2
  88. package/dist/commands/next.test.d.ts.map +0 -1
  89. package/dist/commands/next.test.js +0 -52
  90. package/dist/commands/next.test.js.map +0 -1
  91. package/dist/commands/projects.d.ts +0 -16
  92. package/dist/commands/projects.d.ts.map +0 -1
  93. package/dist/commands/projects.js +0 -64
  94. package/dist/commands/projects.js.map +0 -1
  95. package/dist/commands/projects.test.d.ts +0 -2
  96. package/dist/commands/projects.test.d.ts.map +0 -1
  97. package/dist/commands/projects.test.js +0 -47
  98. package/dist/commands/projects.test.js.map +0 -1
  99. package/dist/commands/release.d.ts +0 -17
  100. package/dist/commands/release.d.ts.map +0 -1
  101. package/dist/commands/release.js +0 -52
  102. package/dist/commands/release.js.map +0 -1
  103. package/dist/commands/release.test.d.ts +0 -2
  104. package/dist/commands/release.test.d.ts.map +0 -1
  105. package/dist/commands/release.test.js +0 -47
  106. package/dist/commands/release.test.js.map +0 -1
  107. package/dist/commands/remove-dep.d.ts +0 -15
  108. package/dist/commands/remove-dep.d.ts.map +0 -1
  109. package/dist/commands/remove-dep.js +0 -55
  110. package/dist/commands/remove-dep.js.map +0 -1
  111. package/dist/commands/remove-dep.test.d.ts +0 -2
  112. package/dist/commands/remove-dep.test.d.ts.map +0 -1
  113. package/dist/commands/remove-dep.test.js +0 -47
  114. package/dist/commands/remove-dep.test.js.map +0 -1
  115. package/dist/commands/rename-project.d.ts +0 -16
  116. package/dist/commands/rename-project.d.ts.map +0 -1
  117. package/dist/commands/rename-project.js +0 -70
  118. package/dist/commands/rename-project.js.map +0 -1
  119. package/dist/commands/rename-project.test.d.ts +0 -2
  120. package/dist/commands/rename-project.test.d.ts.map +0 -1
  121. package/dist/commands/rename-project.test.js +0 -75
  122. package/dist/commands/rename-project.test.js.map +0 -1
  123. package/dist/commands/reopen.d.ts +0 -18
  124. package/dist/commands/reopen.d.ts.map +0 -1
  125. package/dist/commands/reopen.js +0 -56
  126. package/dist/commands/reopen.js.map +0 -1
  127. package/dist/commands/reopen.test.d.ts +0 -2
  128. package/dist/commands/reopen.test.d.ts.map +0 -1
  129. package/dist/commands/reopen.test.js +0 -48
  130. package/dist/commands/reopen.test.js.map +0 -1
  131. package/dist/commands/search.d.ts +0 -23
  132. package/dist/commands/search.d.ts.map +0 -1
  133. package/dist/commands/search.js +0 -89
  134. package/dist/commands/search.js.map +0 -1
  135. package/dist/commands/search.test.d.ts +0 -2
  136. package/dist/commands/search.test.d.ts.map +0 -1
  137. package/dist/commands/search.test.js +0 -41
  138. package/dist/commands/search.test.js.map +0 -1
  139. package/dist/commands/set-status.d.ts +0 -18
  140. package/dist/commands/set-status.d.ts.map +0 -1
  141. package/dist/commands/set-status.js +0 -60
  142. package/dist/commands/set-status.js.map +0 -1
  143. package/dist/commands/set-status.test.d.ts +0 -2
  144. package/dist/commands/set-status.test.d.ts.map +0 -1
  145. package/dist/commands/set-status.test.js +0 -45
  146. package/dist/commands/set-status.test.js.map +0 -1
  147. package/dist/commands/show.d.ts +0 -34
  148. package/dist/commands/show.d.ts.map +0 -1
  149. package/dist/commands/show.js +0 -96
  150. package/dist/commands/show.js.map +0 -1
  151. package/dist/commands/show.test.d.ts +0 -2
  152. package/dist/commands/show.test.d.ts.map +0 -1
  153. package/dist/commands/show.test.js +0 -50
  154. package/dist/commands/show.test.js.map +0 -1
  155. package/dist/commands/steal.d.ts +0 -19
  156. package/dist/commands/steal.d.ts.map +0 -1
  157. package/dist/commands/steal.js +0 -90
  158. package/dist/commands/steal.js.map +0 -1
  159. package/dist/commands/steal.test.d.ts +0 -2
  160. package/dist/commands/steal.test.d.ts.map +0 -1
  161. package/dist/commands/steal.test.js +0 -66
  162. package/dist/commands/steal.test.js.map +0 -1
  163. package/dist/commands/stuck.d.ts +0 -22
  164. package/dist/commands/stuck.d.ts.map +0 -1
  165. package/dist/commands/stuck.js +0 -91
  166. package/dist/commands/stuck.js.map +0 -1
  167. package/dist/commands/stuck.test.d.ts +0 -2
  168. package/dist/commands/stuck.test.d.ts.map +0 -1
  169. package/dist/commands/stuck.test.js +0 -51
  170. package/dist/commands/stuck.test.js.map +0 -1
  171. package/dist/commands/task.d.ts +0 -32
  172. package/dist/commands/task.d.ts.map +0 -1
  173. package/dist/commands/task.js +0 -72
  174. package/dist/commands/task.js.map +0 -1
  175. package/dist/commands/update.d.ts +0 -23
  176. package/dist/commands/update.d.ts.map +0 -1
  177. package/dist/commands/update.js +0 -105
  178. package/dist/commands/update.js.map +0 -1
  179. package/dist/commands/update.test.d.ts +0 -2
  180. package/dist/commands/update.test.d.ts.map +0 -1
  181. package/dist/commands/update.test.js +0 -63
  182. package/dist/commands/update.test.js.map +0 -1
@@ -1,47 +0,0 @@
1
- // packages/hzl-cli/src/commands/checkpoint.test.ts
2
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import os from 'os';
6
- import { runCheckpoint } from './checkpoint.js';
7
- import { initializeDb, closeDb } from '../db.js';
8
- describe('runCheckpoint', () => {
9
- let tempDir;
10
- let dbPath;
11
- let services;
12
- beforeEach(() => {
13
- tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hzl-checkpoint-test-'));
14
- dbPath = path.join(tempDir, 'test.db');
15
- services = initializeDb(dbPath);
16
- });
17
- afterEach(() => {
18
- closeDb(services);
19
- fs.rmSync(tempDir, { recursive: true, force: true });
20
- });
21
- it('adds a checkpoint to a task', () => {
22
- const task = services.taskService.createTask({ title: 'Test task', project: 'inbox' });
23
- const result = runCheckpoint({
24
- services,
25
- taskId: task.task_id,
26
- name: 'progress-50',
27
- data: { percent: 50 },
28
- json: false,
29
- });
30
- expect(result.task_id).toBe(task.task_id);
31
- expect(result.name).toBe('progress-50');
32
- });
33
- it('checkpoint shows in task checkpoints', () => {
34
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
35
- runCheckpoint({
36
- services,
37
- taskId: task.task_id,
38
- name: 'step-1',
39
- data: { step: 1 },
40
- json: false,
41
- });
42
- const checkpoints = services.taskService.getCheckpoints(task.task_id);
43
- expect(checkpoints).toHaveLength(1);
44
- expect(checkpoints[0].name).toBe('step-1');
45
- });
46
- });
47
- //# sourceMappingURL=checkpoint.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkpoint.test.js","sourceRoot":"","sources":["../../src/commands/checkpoint.test.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAEhE,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACzE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvF,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACrB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAElF,aAAa,CAAC;YACZ,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACjB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,20 +0,0 @@
1
- import { Command } from 'commander';
2
- import { type Services } from '../db.js';
3
- export interface ClaimResult {
4
- task_id: string;
5
- title: string;
6
- status: string;
7
- claimed_by_author: string | null;
8
- claimed_by_agent_id: string | null;
9
- lease_until: string | null;
10
- }
11
- export declare function runClaim(options: {
12
- services: Services;
13
- taskId: string;
14
- author?: string;
15
- agentId?: string;
16
- leaseMinutes?: number;
17
- json: boolean;
18
- }): ClaimResult;
19
- export declare function createClaimCommand(): Command;
20
- //# sourceMappingURL=claim.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,WAAW,CA8Bd;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C"}
@@ -1,62 +0,0 @@
1
- // packages/hzl-cli/src/commands/claim.ts
2
- import { Command } from 'commander';
3
- import { resolveDbPath } from '../config.js';
4
- import { initializeDb, closeDb } from '../db.js';
5
- import { handleError } from '../errors.js';
6
- export function runClaim(options) {
7
- const { services, taskId, author, agentId, leaseMinutes, json } = options;
8
- const leaseUntil = leaseMinutes ? new Date(Date.now() + leaseMinutes * 60000).toISOString() : undefined;
9
- const task = services.taskService.claimTask(taskId, {
10
- author,
11
- agent_id: agentId,
12
- lease_until: leaseUntil,
13
- });
14
- const result = {
15
- task_id: task.task_id,
16
- title: task.title,
17
- status: task.status,
18
- claimed_by_author: task.claimed_by_author,
19
- claimed_by_agent_id: task.claimed_by_agent_id,
20
- lease_until: task.lease_until,
21
- };
22
- if (json) {
23
- console.log(JSON.stringify(result));
24
- }
25
- else {
26
- console.log(`✓ Claimed task ${task.task_id}: ${task.title}`);
27
- if (task.lease_until) {
28
- console.log(` Lease until: ${task.lease_until}`);
29
- }
30
- }
31
- return result;
32
- }
33
- export function createClaimCommand() {
34
- return new Command('claim')
35
- .description('Claim a task')
36
- .argument('<taskId>', 'Task ID')
37
- .option('--author <name>', 'Author name')
38
- .option('--agent <id>', 'Agent ID')
39
- .option('-l, --lease <minutes>', 'Lease duration in minutes')
40
- .action(function (taskId, opts) {
41
- const globalOpts = this.optsWithGlobals();
42
- const dbPath = resolveDbPath(globalOpts.db);
43
- const services = initializeDb(dbPath);
44
- try {
45
- runClaim({
46
- services,
47
- taskId,
48
- author: opts.author,
49
- agentId: opts.agent,
50
- leaseMinutes: opts.lease ? parseInt(opts.lease, 10) : undefined,
51
- json: globalOpts.json ?? false,
52
- });
53
- }
54
- catch (e) {
55
- handleError(e, globalOpts.json);
56
- }
57
- finally {
58
- closeDb(services);
59
- }
60
- });
61
- }
62
- //# sourceMappingURL=claim.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=claim.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claim.test.d.ts","sourceRoot":"","sources":["../../src/commands/claim.test.ts"],"names":[],"mappings":""}
@@ -1,48 +0,0 @@
1
- // packages/hzl-cli/src/commands/claim.test.ts
2
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import os from 'os';
6
- import { runClaim } from './claim.js';
7
- import { initializeDb, closeDb } from '../db.js';
8
- import { TaskStatus } from 'hzl-core/events/types.js';
9
- describe('runClaim', () => {
10
- let tempDir;
11
- let dbPath;
12
- let services;
13
- beforeEach(() => {
14
- tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hzl-claim-test-'));
15
- dbPath = path.join(tempDir, 'test.db');
16
- services = initializeDb(dbPath);
17
- });
18
- afterEach(() => {
19
- closeDb(services);
20
- fs.rmSync(tempDir, { recursive: true, force: true });
21
- });
22
- it('claims a ready task', () => {
23
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
24
- services.taskService.setStatus(task.task_id, TaskStatus.Ready);
25
- const result = runClaim({
26
- services,
27
- taskId: task.task_id,
28
- author: 'test-agent',
29
- json: false,
30
- });
31
- expect(result.task_id).toBe(task.task_id);
32
- expect(result.status).toBe(TaskStatus.InProgress);
33
- expect(result.claimed_by_author).toBe('test-agent');
34
- });
35
- it('sets lease when specified', () => {
36
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
37
- services.taskService.setStatus(task.task_id, TaskStatus.Ready);
38
- const result = runClaim({
39
- services,
40
- taskId: task.task_id,
41
- author: 'test-agent',
42
- leaseMinutes: 30,
43
- json: false,
44
- });
45
- expect(result.lease_until).toBeDefined();
46
- });
47
- });
48
- //# sourceMappingURL=claim.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claim.test.js","sourceRoot":"","sources":["../../src/commands/claim.test.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACpE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,QAAQ,CAAC;YACtB,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,QAAQ,CAAC;YACtB,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,MAAM,EAAE,YAAY;YACpB,YAAY,EAAE,EAAE;YAChB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,16 +0,0 @@
1
- import { Command } from 'commander';
2
- import { type Services } from '../db.js';
3
- export interface CommentResult {
4
- task_id: string;
5
- text: string;
6
- author: string | undefined;
7
- }
8
- export declare function runComment(options: {
9
- services: Services;
10
- taskId: string;
11
- text: string;
12
- author?: string;
13
- json: boolean;
14
- }): CommentResult;
15
- export declare function createCommentCommand(): Command;
16
- //# sourceMappingURL=comment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../src/commands/comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,aAAa,CAuBhB;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAwB9C"}
@@ -1,53 +0,0 @@
1
- // packages/hzl-cli/src/commands/comment.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
- export function runComment(options) {
7
- const { services, taskId, text, author, json } = options;
8
- const task = services.taskService.getTaskById(taskId);
9
- if (!task) {
10
- throw new CLIError(`Task not found: ${taskId}`, ExitCode.NotFound);
11
- }
12
- services.taskService.addComment(taskId, text, { author });
13
- const result = {
14
- task_id: taskId,
15
- text,
16
- author,
17
- };
18
- if (json) {
19
- console.log(JSON.stringify(result));
20
- }
21
- else {
22
- console.log(`✓ Added comment to task ${taskId}`);
23
- }
24
- return result;
25
- }
26
- export function createCommentCommand() {
27
- return new Command('comment')
28
- .description('Add a comment to a task')
29
- .argument('<taskId>', 'Task ID')
30
- .argument('<text>', 'Comment text')
31
- .option('--author <name>', 'Author name')
32
- .action(function (taskId, text, opts) {
33
- const globalOpts = this.optsWithGlobals();
34
- const dbPath = resolveDbPath(globalOpts.db);
35
- const services = initializeDb(dbPath);
36
- try {
37
- runComment({
38
- services,
39
- taskId,
40
- text,
41
- author: opts.author,
42
- json: globalOpts.json ?? false,
43
- });
44
- }
45
- catch (e) {
46
- handleError(e, globalOpts.json);
47
- }
48
- finally {
49
- closeDb(services);
50
- }
51
- });
52
- }
53
- //# sourceMappingURL=comment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/commands/comment.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAS/D,MAAM,UAAU,UAAU,CAAC,OAM1B;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,QAAQ,CAAC,mBAAmB,MAAM,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAkB;QAC5B,OAAO,EAAE,MAAM;QACf,IAAI;QACJ,MAAM;KACP,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,yBAAyB,CAAC;SACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;SAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;SAClC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,UAAyB,MAAc,EAAE,IAAY,EAAE,IAAS;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAmB,CAAC;QAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,UAAU,CAAC;gBACT,QAAQ;gBACR,MAAM;gBACN,IAAI;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=comment.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.test.d.ts","sourceRoot":"","sources":["../../src/commands/comment.test.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- // packages/hzl-cli/src/commands/comment.test.ts
2
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import os from 'os';
6
- import { runComment } from './comment.js';
7
- import { initializeDb, closeDb } from '../db.js';
8
- describe('runComment', () => {
9
- let tempDir;
10
- let dbPath;
11
- let services;
12
- beforeEach(() => {
13
- tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hzl-comment-test-'));
14
- dbPath = path.join(tempDir, 'test.db');
15
- services = initializeDb(dbPath);
16
- });
17
- afterEach(() => {
18
- closeDb(services);
19
- fs.rmSync(tempDir, { recursive: true, force: true });
20
- });
21
- it('adds a comment to a task', () => {
22
- const task = services.taskService.createTask({ title: 'Test task', project: 'inbox' });
23
- const result = runComment({
24
- services,
25
- taskId: task.task_id,
26
- text: 'This is a comment',
27
- author: 'test-user',
28
- json: false,
29
- });
30
- expect(result.task_id).toBe(task.task_id);
31
- expect(result.text).toBe('This is a comment');
32
- });
33
- it('comment shows in task comments', () => {
34
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
35
- runComment({
36
- services,
37
- taskId: task.task_id,
38
- text: 'A comment',
39
- json: false,
40
- });
41
- const comments = services.taskService.getComments(task.task_id);
42
- expect(comments).toHaveLength(1);
43
- expect(comments[0].text).toBe('A comment');
44
- });
45
- });
46
- //# sourceMappingURL=comment.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.test.js","sourceRoot":"","sources":["../../src/commands/comment.test.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAEhE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvF,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAElF,UAAU,CAAC;YACT,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,15 +0,0 @@
1
- import { Command } from 'commander';
2
- import { type Services } from '../db.js';
3
- export interface CompleteResult {
4
- task_id: string;
5
- title: string;
6
- status: string;
7
- }
8
- export declare function runComplete(options: {
9
- services: Services;
10
- taskId: string;
11
- author?: string;
12
- json: boolean;
13
- }): CompleteResult;
14
- export declare function createCompleteCommand(): Command;
15
- //# sourceMappingURL=complete.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,cAAc,CAkBjB;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAsB/C"}
@@ -1,47 +0,0 @@
1
- // packages/hzl-cli/src/commands/complete.ts
2
- import { Command } from 'commander';
3
- import { resolveDbPath } from '../config.js';
4
- import { initializeDb, closeDb } from '../db.js';
5
- import { handleError } from '../errors.js';
6
- export function runComplete(options) {
7
- const { services, taskId, author, json } = options;
8
- const task = services.taskService.completeTask(taskId, { author });
9
- const result = {
10
- task_id: task.task_id,
11
- title: task.title,
12
- status: task.status,
13
- };
14
- if (json) {
15
- console.log(JSON.stringify(result));
16
- }
17
- else {
18
- console.log(`✓ Completed task ${task.task_id}: ${task.title}`);
19
- }
20
- return result;
21
- }
22
- export function createCompleteCommand() {
23
- return new Command('complete')
24
- .description('Mark a task as done')
25
- .argument('<taskId>', 'Task ID')
26
- .option('--author <name>', 'Author name')
27
- .action(function (taskId, opts) {
28
- const globalOpts = this.optsWithGlobals();
29
- const dbPath = resolveDbPath(globalOpts.db);
30
- const services = initializeDb(dbPath);
31
- try {
32
- runComplete({
33
- services,
34
- taskId,
35
- author: opts.author,
36
- json: globalOpts.json ?? false,
37
- });
38
- }
39
- catch (e) {
40
- handleError(e, globalOpts.json);
41
- }
42
- finally {
43
- closeDb(services);
44
- }
45
- });
46
- }
47
- //# sourceMappingURL=complete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAS3C,MAAM,UAAU,WAAW,CAAC,OAK3B;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAmB;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;SAC/B,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,UAAyB,MAAc,EAAE,IAAS;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAmB,CAAC;QAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,WAAW,CAAC;gBACV,QAAQ;gBACR,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=complete.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"complete.test.d.ts","sourceRoot":"","sources":["../../src/commands/complete.test.ts"],"names":[],"mappings":""}
@@ -1,42 +0,0 @@
1
- // packages/hzl-cli/src/commands/complete.test.ts
2
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import os from 'os';
6
- import { runComplete } from './complete.js';
7
- import { initializeDb, closeDb } from '../db.js';
8
- import { TaskStatus } from 'hzl-core/events/types.js';
9
- describe('runComplete', () => {
10
- let tempDir;
11
- let dbPath;
12
- let services;
13
- beforeEach(() => {
14
- tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hzl-complete-test-'));
15
- dbPath = path.join(tempDir, 'test.db');
16
- services = initializeDb(dbPath);
17
- });
18
- afterEach(() => {
19
- closeDb(services);
20
- fs.rmSync(tempDir, { recursive: true, force: true });
21
- });
22
- it('completes an in-progress task', () => {
23
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
24
- services.taskService.setStatus(task.task_id, TaskStatus.Ready);
25
- services.taskService.claimTask(task.task_id);
26
- const result = runComplete({
27
- services,
28
- taskId: task.task_id,
29
- json: false,
30
- });
31
- expect(result.status).toBe(TaskStatus.Done);
32
- });
33
- it('sets status to done', () => {
34
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
35
- services.taskService.setStatus(task.task_id, TaskStatus.Ready);
36
- services.taskService.claimTask(task.task_id);
37
- runComplete({ services, taskId: task.task_id, json: false });
38
- const updated = services.taskService.getTaskById(task.task_id);
39
- expect(updated?.status).toBe(TaskStatus.Done);
40
- });
41
- });
42
- //# sourceMappingURL=complete.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"complete.test.js","sourceRoot":"","sources":["../../src/commands/complete.test.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACvE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,22 +0,0 @@
1
- import { Command } from 'commander';
2
- import { type Services } from '../db.js';
3
- export interface HistoryEvent {
4
- rowid: number;
5
- type: string;
6
- timestamp: string;
7
- author?: string;
8
- agent_id?: string;
9
- data: Record<string, unknown>;
10
- }
11
- export interface HistoryResult {
12
- task_id: string;
13
- events: HistoryEvent[];
14
- }
15
- export declare function runHistory(options: {
16
- services: Services;
17
- taskId: string;
18
- limit?: number;
19
- json: boolean;
20
- }): HistoryResult;
21
- export declare function createHistoryCommand(): Command;
22
- //# sourceMappingURL=history.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAwCxH;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAsB9C"}
@@ -1,70 +0,0 @@
1
- // packages/hzl-cli/src/commands/history.ts
2
- import { Command } from 'commander';
3
- import { resolveDbPath } from '../config.js';
4
- import { initializeDb, closeDb } from '../db.js';
5
- import { handleError } from '../errors.js';
6
- export function runHistory(options) {
7
- const { services, taskId, limit = 100, json } = options;
8
- const db = services.db;
9
- // Get events for this task from the events table
10
- const events = db.prepare(`
11
- SELECT rowid, type, timestamp, author, agent_id, data
12
- FROM events
13
- WHERE task_id = ?
14
- ORDER BY rowid ASC
15
- LIMIT ?
16
- `).all(taskId, limit);
17
- const result = {
18
- task_id: taskId,
19
- events: events.map(e => ({
20
- rowid: e.rowid,
21
- type: e.type,
22
- timestamp: e.timestamp,
23
- author: e.author,
24
- agent_id: e.agent_id,
25
- data: JSON.parse(e.data),
26
- })),
27
- };
28
- if (json) {
29
- console.log(JSON.stringify(result, null, 2));
30
- }
31
- else {
32
- if (result.events.length === 0) {
33
- console.log(`No events found for task: ${taskId}`);
34
- }
35
- else {
36
- console.log(`History for task ${taskId}:`);
37
- for (const event of result.events) {
38
- const actor = event.author || event.agent_id || 'system';
39
- console.log(` [${event.timestamp}] ${event.type} by ${actor}`);
40
- }
41
- }
42
- }
43
- return result;
44
- }
45
- export function createHistoryCommand() {
46
- return new Command('history')
47
- .description('Show full event history for a task')
48
- .argument('<taskId>', 'Task ID')
49
- .option('-l, --limit <n>', 'Limit number of events', '100')
50
- .action(function (taskId, opts) {
51
- const globalOpts = this.optsWithGlobals();
52
- const dbPath = resolveDbPath(globalOpts.db);
53
- const services = initializeDb(dbPath);
54
- try {
55
- runHistory({
56
- services,
57
- taskId,
58
- limit: parseInt(opts.limit, 10),
59
- json: globalOpts.json ?? false,
60
- });
61
- }
62
- catch (e) {
63
- handleError(e, globalOpts.json);
64
- }
65
- finally {
66
- closeDb(services);
67
- }
68
- });
69
- }
70
- //# sourceMappingURL=history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=history.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.test.d.ts","sourceRoot":"","sources":["../../src/commands/history.test.ts"],"names":[],"mappings":""}
@@ -1,41 +0,0 @@
1
- // packages/hzl-cli/src/commands/history.test.ts
2
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import os from 'os';
6
- import { runHistory } from './history.js';
7
- import { initializeDb, closeDb } from '../db.js';
8
- import { TaskStatus } from 'hzl-core/events/types.js';
9
- describe('runHistory', () => {
10
- let tempDir;
11
- let dbPath;
12
- let services;
13
- beforeEach(() => {
14
- tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hzl-history-test-'));
15
- dbPath = path.join(tempDir, 'test.db');
16
- services = initializeDb(dbPath);
17
- });
18
- afterEach(() => {
19
- closeDb(services);
20
- fs.rmSync(tempDir, { recursive: true, force: true });
21
- });
22
- it('returns empty list for non-existent task', () => {
23
- const result = runHistory({ services, taskId: 'nonexistent', json: false });
24
- expect(result.events).toHaveLength(0);
25
- });
26
- it('returns task creation event', () => {
27
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
28
- const result = runHistory({ services, taskId: task.task_id, json: false });
29
- expect(result.events.length).toBeGreaterThanOrEqual(1);
30
- expect(result.events[0].type).toBe('task_created');
31
- });
32
- it('includes all status change events', () => {
33
- const task = services.taskService.createTask({ title: 'Test', project: 'inbox' });
34
- services.taskService.setStatus(task.task_id, TaskStatus.Ready);
35
- services.taskService.setStatus(task.task_id, TaskStatus.InProgress);
36
- const result = runHistory({ services, taskId: task.task_id, json: false });
37
- // Should have at least: task_created, status_changed (ready), status_changed (in_progress)
38
- expect(result.events.length).toBeGreaterThanOrEqual(3);
39
- });
40
- });
41
- //# sourceMappingURL=history.test.js.map