agkan 1.0.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 (208) hide show
  1. package/README.ja.md +1127 -0
  2. package/README.md +1140 -0
  3. package/bin/agkan +2 -0
  4. package/dist/cli/commands/block/add.d.ts +6 -0
  5. package/dist/cli/commands/block/add.d.ts.map +1 -0
  6. package/dist/cli/commands/block/add.js +135 -0
  7. package/dist/cli/commands/block/add.js.map +1 -0
  8. package/dist/cli/commands/block/list.d.ts +6 -0
  9. package/dist/cli/commands/block/list.d.ts.map +1 -0
  10. package/dist/cli/commands/block/list.js +120 -0
  11. package/dist/cli/commands/block/list.js.map +1 -0
  12. package/dist/cli/commands/block/remove.d.ts +6 -0
  13. package/dist/cli/commands/block/remove.d.ts.map +1 -0
  14. package/dist/cli/commands/block/remove.js +117 -0
  15. package/dist/cli/commands/block/remove.js.map +1 -0
  16. package/dist/cli/commands/meta/delete.d.ts +6 -0
  17. package/dist/cli/commands/meta/delete.d.ts.map +1 -0
  18. package/dist/cli/commands/meta/delete.js +67 -0
  19. package/dist/cli/commands/meta/delete.js.map +1 -0
  20. package/dist/cli/commands/meta/get.d.ts +6 -0
  21. package/dist/cli/commands/meta/get.d.ts.map +1 -0
  22. package/dist/cli/commands/meta/get.js +71 -0
  23. package/dist/cli/commands/meta/get.js.map +1 -0
  24. package/dist/cli/commands/meta/list.d.ts +6 -0
  25. package/dist/cli/commands/meta/list.d.ts.map +1 -0
  26. package/dist/cli/commands/meta/list.js +69 -0
  27. package/dist/cli/commands/meta/list.js.map +1 -0
  28. package/dist/cli/commands/meta/set.d.ts +6 -0
  29. package/dist/cli/commands/meta/set.d.ts.map +1 -0
  30. package/dist/cli/commands/meta/set.js +85 -0
  31. package/dist/cli/commands/meta/set.js.map +1 -0
  32. package/dist/cli/commands/tag/add.d.ts +6 -0
  33. package/dist/cli/commands/tag/add.d.ts.map +1 -0
  34. package/dist/cli/commands/tag/add.js +99 -0
  35. package/dist/cli/commands/tag/add.js.map +1 -0
  36. package/dist/cli/commands/tag/attach.d.ts +6 -0
  37. package/dist/cli/commands/tag/attach.d.ts.map +1 -0
  38. package/dist/cli/commands/tag/attach.js +119 -0
  39. package/dist/cli/commands/tag/attach.js.map +1 -0
  40. package/dist/cli/commands/tag/delete.d.ts +6 -0
  41. package/dist/cli/commands/tag/delete.d.ts.map +1 -0
  42. package/dist/cli/commands/tag/delete.js +93 -0
  43. package/dist/cli/commands/tag/delete.js.map +1 -0
  44. package/dist/cli/commands/tag/detach.d.ts +6 -0
  45. package/dist/cli/commands/tag/detach.d.ts.map +1 -0
  46. package/dist/cli/commands/tag/detach.js +118 -0
  47. package/dist/cli/commands/tag/detach.js.map +1 -0
  48. package/dist/cli/commands/tag/list.d.ts +6 -0
  49. package/dist/cli/commands/tag/list.d.ts.map +1 -0
  50. package/dist/cli/commands/tag/list.js +80 -0
  51. package/dist/cli/commands/tag/list.js.map +1 -0
  52. package/dist/cli/commands/tag/show.d.ts +6 -0
  53. package/dist/cli/commands/tag/show.d.ts.map +1 -0
  54. package/dist/cli/commands/tag/show.js +88 -0
  55. package/dist/cli/commands/tag/show.js.map +1 -0
  56. package/dist/cli/commands/task/add-helpers.d.ts +17 -0
  57. package/dist/cli/commands/task/add-helpers.d.ts.map +1 -0
  58. package/dist/cli/commands/task/add-helpers.js +122 -0
  59. package/dist/cli/commands/task/add-helpers.js.map +1 -0
  60. package/dist/cli/commands/task/add.d.ts +6 -0
  61. package/dist/cli/commands/task/add.d.ts.map +1 -0
  62. package/dist/cli/commands/task/add.js +140 -0
  63. package/dist/cli/commands/task/add.js.map +1 -0
  64. package/dist/cli/commands/task/count.d.ts +6 -0
  65. package/dist/cli/commands/task/count.d.ts.map +1 -0
  66. package/dist/cli/commands/task/count.js +97 -0
  67. package/dist/cli/commands/task/count.js.map +1 -0
  68. package/dist/cli/commands/task/delete.d.ts +6 -0
  69. package/dist/cli/commands/task/delete.d.ts.map +1 -0
  70. package/dist/cli/commands/task/delete.js +59 -0
  71. package/dist/cli/commands/task/delete.js.map +1 -0
  72. package/dist/cli/commands/task/find.d.ts +7 -0
  73. package/dist/cli/commands/task/find.d.ts.map +1 -0
  74. package/dist/cli/commands/task/find.js +118 -0
  75. package/dist/cli/commands/task/find.js.map +1 -0
  76. package/dist/cli/commands/task/get.d.ts +6 -0
  77. package/dist/cli/commands/task/get.d.ts.map +1 -0
  78. package/dist/cli/commands/task/get.js +196 -0
  79. package/dist/cli/commands/task/get.js.map +1 -0
  80. package/dist/cli/commands/task/list.d.ts +6 -0
  81. package/dist/cli/commands/task/list.d.ts.map +1 -0
  82. package/dist/cli/commands/task/list.js +301 -0
  83. package/dist/cli/commands/task/list.js.map +1 -0
  84. package/dist/cli/commands/task/update-parent.d.ts +6 -0
  85. package/dist/cli/commands/task/update-parent.d.ts.map +1 -0
  86. package/dist/cli/commands/task/update-parent.js +123 -0
  87. package/dist/cli/commands/task/update-parent.js.map +1 -0
  88. package/dist/cli/commands/task/update.d.ts +6 -0
  89. package/dist/cli/commands/task/update.d.ts.map +1 -0
  90. package/dist/cli/commands/task/update.js +96 -0
  91. package/dist/cli/commands/task/update.js.map +1 -0
  92. package/dist/cli/index.d.ts +3 -0
  93. package/dist/cli/index.d.ts.map +1 -0
  94. package/dist/cli/index.js +68 -0
  95. package/dist/cli/index.js.map +1 -0
  96. package/dist/cli/utils/array-utils.d.ts +15 -0
  97. package/dist/cli/utils/array-utils.d.ts.map +1 -0
  98. package/dist/cli/utils/array-utils.js +20 -0
  99. package/dist/cli/utils/array-utils.js.map +1 -0
  100. package/dist/cli/utils/error-handler.d.ts +35 -0
  101. package/dist/cli/utils/error-handler.d.ts.map +1 -0
  102. package/dist/cli/utils/error-handler.js +84 -0
  103. package/dist/cli/utils/error-handler.js.map +1 -0
  104. package/dist/cli/utils/output-formatter.d.ts +34 -0
  105. package/dist/cli/utils/output-formatter.d.ts.map +1 -0
  106. package/dist/cli/utils/output-formatter.js +44 -0
  107. package/dist/cli/utils/output-formatter.js.map +1 -0
  108. package/dist/cli/utils/response-formatter.d.ts +19 -0
  109. package/dist/cli/utils/response-formatter.d.ts.map +1 -0
  110. package/dist/cli/utils/response-formatter.js +43 -0
  111. package/dist/cli/utils/response-formatter.js.map +1 -0
  112. package/dist/cli/utils/validators.d.ts +23 -0
  113. package/dist/cli/utils/validators.d.ts.map +1 -0
  114. package/dist/cli/utils/validators.js +47 -0
  115. package/dist/cli/utils/validators.js.map +1 -0
  116. package/dist/db/config.d.ts +27 -0
  117. package/dist/db/config.d.ts.map +1 -0
  118. package/dist/db/config.js +116 -0
  119. package/dist/db/config.js.map +1 -0
  120. package/dist/db/connection.d.ts +24 -0
  121. package/dist/db/connection.d.ts.map +1 -0
  122. package/dist/db/connection.js +62 -0
  123. package/dist/db/connection.js.map +1 -0
  124. package/dist/db/reset.d.ts +8 -0
  125. package/dist/db/reset.d.ts.map +1 -0
  126. package/dist/db/reset.js +33 -0
  127. package/dist/db/reset.js.map +1 -0
  128. package/dist/db/schema.d.ts +6 -0
  129. package/dist/db/schema.d.ts.map +1 -0
  130. package/dist/db/schema.js +134 -0
  131. package/dist/db/schema.js.map +1 -0
  132. package/dist/models/Attachment.d.ts +25 -0
  133. package/dist/models/Attachment.d.ts.map +1 -0
  134. package/dist/models/Attachment.js +7 -0
  135. package/dist/models/Attachment.js.map +1 -0
  136. package/dist/models/Tag.d.ts +24 -0
  137. package/dist/models/Tag.d.ts.map +1 -0
  138. package/dist/models/Tag.js +3 -0
  139. package/dist/models/Tag.js.map +1 -0
  140. package/dist/models/Task.d.ts +55 -0
  141. package/dist/models/Task.d.ts.map +1 -0
  142. package/dist/models/Task.js +7 -0
  143. package/dist/models/Task.js.map +1 -0
  144. package/dist/models/TaskBlock.d.ts +11 -0
  145. package/dist/models/TaskBlock.d.ts.map +1 -0
  146. package/dist/models/TaskBlock.js +3 -0
  147. package/dist/models/TaskBlock.js.map +1 -0
  148. package/dist/models/TaskMetadata.d.ts +30 -0
  149. package/dist/models/TaskMetadata.d.ts.map +1 -0
  150. package/dist/models/TaskMetadata.js +3 -0
  151. package/dist/models/TaskMetadata.js.map +1 -0
  152. package/dist/models/TaskTag.d.ts +11 -0
  153. package/dist/models/TaskTag.d.ts.map +1 -0
  154. package/dist/models/TaskTag.js +3 -0
  155. package/dist/models/TaskTag.js.map +1 -0
  156. package/dist/models/index.d.ts +10 -0
  157. package/dist/models/index.d.ts.map +1 -0
  158. package/dist/models/index.js +7 -0
  159. package/dist/models/index.js.map +1 -0
  160. package/dist/services/AttachmentService.d.ts +62 -0
  161. package/dist/services/AttachmentService.d.ts.map +1 -0
  162. package/dist/services/AttachmentService.js +95 -0
  163. package/dist/services/AttachmentService.js.map +1 -0
  164. package/dist/services/FileService.d.ts +31 -0
  165. package/dist/services/FileService.d.ts.map +1 -0
  166. package/dist/services/FileService.js +77 -0
  167. package/dist/services/FileService.js.map +1 -0
  168. package/dist/services/MetadataService.d.ts +49 -0
  169. package/dist/services/MetadataService.d.ts.map +1 -0
  170. package/dist/services/MetadataService.js +126 -0
  171. package/dist/services/MetadataService.js.map +1 -0
  172. package/dist/services/TagService.d.ts +49 -0
  173. package/dist/services/TagService.d.ts.map +1 -0
  174. package/dist/services/TagService.js +127 -0
  175. package/dist/services/TagService.js.map +1 -0
  176. package/dist/services/TaskBlockService.d.ts +49 -0
  177. package/dist/services/TaskBlockService.d.ts.map +1 -0
  178. package/dist/services/TaskBlockService.js +118 -0
  179. package/dist/services/TaskBlockService.js.map +1 -0
  180. package/dist/services/TaskService.d.ts +89 -0
  181. package/dist/services/TaskService.d.ts.map +1 -0
  182. package/dist/services/TaskService.js +285 -0
  183. package/dist/services/TaskService.js.map +1 -0
  184. package/dist/services/TaskTagService.d.ts +66 -0
  185. package/dist/services/TaskTagService.d.ts.map +1 -0
  186. package/dist/services/TaskTagService.js +171 -0
  187. package/dist/services/TaskTagService.js.map +1 -0
  188. package/dist/services/index.d.ts +11 -0
  189. package/dist/services/index.d.ts.map +1 -0
  190. package/dist/services/index.js +20 -0
  191. package/dist/services/index.js.map +1 -0
  192. package/dist/utils/cycle-detector.d.ts +14 -0
  193. package/dist/utils/cycle-detector.d.ts.map +1 -0
  194. package/dist/utils/cycle-detector.js +32 -0
  195. package/dist/utils/cycle-detector.js.map +1 -0
  196. package/dist/utils/format.d.ts +13 -0
  197. package/dist/utils/format.d.ts.map +1 -0
  198. package/dist/utils/format.js +29 -0
  199. package/dist/utils/format.js.map +1 -0
  200. package/dist/utils/input-validators.d.ts +32 -0
  201. package/dist/utils/input-validators.d.ts.map +1 -0
  202. package/dist/utils/input-validators.js +108 -0
  203. package/dist/utils/input-validators.js.map +1 -0
  204. package/dist/utils/security.d.ts +11 -0
  205. package/dist/utils/security.d.ts.map +1 -0
  206. package/dist/utils/security.js +29 -0
  207. package/dist/utils/security.js.map +1 -0
  208. package/package.json +70 -0
package/bin/agkan ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('../dist/cli/index.js');
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Task block add command handler
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function setupBlockAddCommand(program: Command): void;
6
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/block/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+H3D"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Task block add command handler
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setupBlockAddCommand = setupBlockAddCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const services_1 = require("../../../services");
12
+ const error_handler_1 = require("../../utils/error-handler");
13
+ const output_formatter_1 = require("../../utils/output-formatter");
14
+ function setupBlockAddCommand(program) {
15
+ const taskCommand = program.commands.find((cmd) => cmd.name() === 'task');
16
+ if (!taskCommand) {
17
+ throw new Error('Task command not found');
18
+ }
19
+ let blockCommand = taskCommand.commands.find((cmd) => cmd.name() === 'block');
20
+ if (!blockCommand) {
21
+ blockCommand = taskCommand.command('block').description('Task blocking relationship commands');
22
+ }
23
+ blockCommand
24
+ .command('add')
25
+ .argument('<blocker-id>', 'Blocker task ID (this task blocks the other)')
26
+ .argument('<blocked-id>', 'Blocked task ID (this task is blocked)')
27
+ .option('--json', 'Output in JSON format')
28
+ .description('Add a blocking relationship between tasks')
29
+ .action(async (blockerId, blockedId, options) => {
30
+ const formatter = (0, output_formatter_1.createFormatter)(options);
31
+ try {
32
+ const taskService = new services_1.TaskService();
33
+ const taskBlockService = new services_1.TaskBlockService();
34
+ // Validate IDs
35
+ const blockerTaskId = (0, error_handler_1.validateNumberInput)(blockerId);
36
+ const blockedTaskId = (0, error_handler_1.validateNumberInput)(blockedId);
37
+ if (blockerTaskId === null) {
38
+ formatter.error('Blocker task ID must be a number', () => {
39
+ console.log(chalk_1.default.red('\nError: Blocker task ID must be a number\n'));
40
+ });
41
+ process.exit(1);
42
+ }
43
+ if (blockedTaskId === null) {
44
+ formatter.error('Blocked task ID must be a number', () => {
45
+ console.log(chalk_1.default.red('\nError: Blocked task ID must be a number\n'));
46
+ });
47
+ process.exit(1);
48
+ }
49
+ // Check if IDs are the same
50
+ if (blockerTaskId === blockedTaskId) {
51
+ formatter.error('A task cannot block itself', () => {
52
+ console.log(chalk_1.default.red('\nError: A task cannot block itself\n'));
53
+ });
54
+ process.exit(1);
55
+ }
56
+ // Check if tasks exist
57
+ const blockerTask = taskService.getTask(blockerTaskId);
58
+ if (!blockerTask) {
59
+ formatter.error(`Blocker task with ID ${blockerId} not found`, () => {
60
+ console.log(chalk_1.default.red(`\nError: Blocker task with ID ${blockerId} not found\n`));
61
+ });
62
+ process.exit(1);
63
+ }
64
+ const blockedTask = taskService.getTask(blockedTaskId);
65
+ if (!blockedTask) {
66
+ formatter.error(`Blocked task with ID ${blockedId} not found`, () => {
67
+ console.log(chalk_1.default.red(`\nError: Blocked task with ID ${blockedId} not found\n`));
68
+ });
69
+ process.exit(1);
70
+ }
71
+ // Add blocking relationship
72
+ try {
73
+ taskBlockService.addBlock({
74
+ blocker_task_id: blockerTaskId,
75
+ blocked_task_id: blockedTaskId,
76
+ });
77
+ }
78
+ catch (error) {
79
+ if (error instanceof Error) {
80
+ if (error.message.includes('cycle') || error.message.includes('circular')) {
81
+ formatter.error('This would create a circular blocking relationship', () => {
82
+ console.log(chalk_1.default.red('\n✗ Error: This would create a circular blocking relationship\n'));
83
+ });
84
+ }
85
+ else if (error.message.includes('already exists') || error.message.includes('UNIQUE constraint')) {
86
+ formatter.error('This blocking relationship already exists', () => {
87
+ console.log(chalk_1.default.red('\n✗ Error: This blocking relationship already exists\n'));
88
+ });
89
+ }
90
+ else {
91
+ formatter.error(error.message, () => {
92
+ console.log(chalk_1.default.red(`\n✗ Error: ${error.message}\n`));
93
+ });
94
+ }
95
+ }
96
+ else {
97
+ formatter.error('An unknown error occurred', () => {
98
+ console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
99
+ });
100
+ }
101
+ process.exit(1);
102
+ }
103
+ formatter.output(() => ({
104
+ success: true,
105
+ blocker: {
106
+ id: blockerTask.id,
107
+ title: blockerTask.title,
108
+ status: blockerTask.status,
109
+ },
110
+ blocked: {
111
+ id: blockedTask.id,
112
+ title: blockedTask.title,
113
+ status: blockedTask.status,
114
+ },
115
+ }), () => {
116
+ console.log(chalk_1.default.green('\n✓ Blocking relationship added successfully\n'));
117
+ console.log(`${chalk_1.default.bold('Blocker:')} ${chalk_1.default.cyan(`[${blockerTask.id}]`)} ${blockerTask.title}`);
118
+ console.log(`${chalk_1.default.bold('Blocked:')} ${chalk_1.default.cyan(`[${blockedTask.id}]`)} ${blockedTask.title}`);
119
+ console.log();
120
+ });
121
+ }
122
+ catch (error) {
123
+ formatter.error(error instanceof Error ? error.message : 'An unknown error occurred', () => {
124
+ if (error instanceof Error) {
125
+ console.log(chalk_1.default.red(`\n✗ Error: ${error.message}\n`));
126
+ }
127
+ else {
128
+ console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
129
+ }
130
+ });
131
+ process.exit(1);
132
+ }
133
+ });
134
+ }
135
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/cli/commands/block/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Task block list command handler
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function setupBlockListCommand(program: Command): void;
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/block/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsH5D"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * Task block list command handler
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setupBlockListCommand = setupBlockListCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const services_1 = require("../../../services");
12
+ const error_handler_1 = require("../../utils/error-handler");
13
+ const format_1 = require("../../../utils/format");
14
+ const output_formatter_1 = require("../../utils/output-formatter");
15
+ const array_utils_1 = require("../../utils/array-utils");
16
+ function setupBlockListCommand(program) {
17
+ const taskCommand = program.commands.find((cmd) => cmd.name() === 'task');
18
+ if (!taskCommand) {
19
+ throw new Error('Task command not found');
20
+ }
21
+ let blockCommand = taskCommand.commands.find((cmd) => cmd.name() === 'block');
22
+ if (!blockCommand) {
23
+ blockCommand = taskCommand.command('block').description('Task blocking relationship commands');
24
+ }
25
+ blockCommand
26
+ .command('list')
27
+ .argument('<id>', 'Task ID')
28
+ .option('--json', 'Output in JSON format')
29
+ .description('List all blocking relationships for a task')
30
+ .action(async (id, options) => {
31
+ const formatter = (0, output_formatter_1.createFormatter)(options);
32
+ try {
33
+ const taskService = new services_1.TaskService();
34
+ const taskBlockService = new services_1.TaskBlockService();
35
+ // Validate ID
36
+ const taskId = (0, error_handler_1.validateNumberInput)(id);
37
+ if (taskId === null) {
38
+ formatter.error('Task ID must be a number', () => {
39
+ console.log(chalk_1.default.red('\nError: Task ID must be a number\n'));
40
+ });
41
+ process.exit(1);
42
+ }
43
+ // Check if task exists
44
+ const task = taskService.getTask(taskId);
45
+ if (!task) {
46
+ formatter.error(`Task with ID ${id} not found`, () => {
47
+ console.log(chalk_1.default.red(`\nError: Task with ID ${id} not found\n`));
48
+ });
49
+ process.exit(1);
50
+ }
51
+ // Blocked By (tasks blocking this task)
52
+ const blockerIds = taskBlockService.getBlockerTaskIds(taskId);
53
+ const blockerTasks = blockerIds.map((id) => taskService.getTask(id)).filter(array_utils_1.filterNonNull);
54
+ // Blocking (tasks being blocked by this task)
55
+ const blockedIds = taskBlockService.getBlockedTaskIds(taskId);
56
+ const blockedTasks = blockedIds.map((id) => taskService.getTask(id)).filter(array_utils_1.filterNonNull);
57
+ formatter.output(() => ({
58
+ task: {
59
+ id: task.id,
60
+ title: task.title,
61
+ status: task.status,
62
+ },
63
+ blockedBy: blockerTasks.map((t) => ({
64
+ id: t.id,
65
+ title: t.title,
66
+ status: t.status,
67
+ })),
68
+ blocking: blockedTasks.map((t) => ({
69
+ id: t.id,
70
+ title: t.title,
71
+ status: t.status,
72
+ })),
73
+ }), () => {
74
+ // Standard output
75
+ const statusColor = (0, format_1.getStatusColor)(task.status);
76
+ console.log(chalk_1.default.bold(`\nBlocking Relationships for Task #${task.id}`));
77
+ console.log(chalk_1.default.bold('═'.repeat(80)));
78
+ console.log(`${chalk_1.default.bold('Title:')} ${task.title}`);
79
+ console.log(`${chalk_1.default.bold('Status:')} ${chalk_1.default[statusColor](task.status)}`);
80
+ console.log();
81
+ if (blockerTasks.length > 0) {
82
+ console.log(chalk_1.default.bold.red(`Blocked By: ${blockerTasks.length} task(s)`));
83
+ blockerTasks.forEach((blocker) => {
84
+ const blockerStatusColor = (0, format_1.getStatusColor)(blocker.status);
85
+ console.log(` ${chalk_1.default.red('•')} ${chalk_1.default.cyan(`[${blocker.id}]`)} ${blocker.title} ` +
86
+ `${chalk_1.default[blockerStatusColor](`(${blocker.status})`)}`);
87
+ });
88
+ }
89
+ else {
90
+ console.log(chalk_1.default.bold.red('Blocked By:') + chalk_1.default.gray(' (none)'));
91
+ }
92
+ console.log();
93
+ if (blockedTasks.length > 0) {
94
+ console.log(chalk_1.default.bold.yellow(`Blocking: ${blockedTasks.length} task(s)`));
95
+ blockedTasks.forEach((blocked) => {
96
+ const blockedStatusColor = (0, format_1.getStatusColor)(blocked.status);
97
+ console.log(` ${chalk_1.default.yellow('•')} ${chalk_1.default.cyan(`[${blocked.id}]`)} ${blocked.title} ` +
98
+ `${chalk_1.default[blockedStatusColor](`(${blocked.status})`)}`);
99
+ });
100
+ }
101
+ else {
102
+ console.log(chalk_1.default.bold.yellow('Blocking:') + chalk_1.default.gray(' (none)'));
103
+ }
104
+ console.log();
105
+ });
106
+ }
107
+ catch (error) {
108
+ formatter.error(error instanceof Error ? error.message : 'An unknown error occurred', () => {
109
+ if (error instanceof Error) {
110
+ console.log(chalk_1.default.red(`\n✗ Error: ${error.message}\n`));
111
+ }
112
+ else {
113
+ console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
114
+ }
115
+ });
116
+ process.exit(1);
117
+ }
118
+ });
119
+ }
120
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/block/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Task block remove command handler
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function setupBlockRemoveCommand(program: Command): void;
6
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/block/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8G9D"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * Task block remove command handler
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setupBlockRemoveCommand = setupBlockRemoveCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const services_1 = require("../../../services");
12
+ const error_handler_1 = require("../../utils/error-handler");
13
+ const output_formatter_1 = require("../../utils/output-formatter");
14
+ function setupBlockRemoveCommand(program) {
15
+ const taskCommand = program.commands.find((cmd) => cmd.name() === 'task');
16
+ if (!taskCommand) {
17
+ throw new Error('Task command not found');
18
+ }
19
+ let blockCommand = taskCommand.commands.find((cmd) => cmd.name() === 'block');
20
+ if (!blockCommand) {
21
+ blockCommand = taskCommand.command('block').description('Task blocking relationship commands');
22
+ }
23
+ blockCommand
24
+ .command('remove')
25
+ .argument('<blocker-id>', 'Blocker task ID')
26
+ .argument('<blocked-id>', 'Blocked task ID')
27
+ .option('--json', 'Output in JSON format')
28
+ .description('Remove a blocking relationship between tasks')
29
+ .action(async (blockerId, blockedId, options) => {
30
+ const formatter = (0, output_formatter_1.createFormatter)(options);
31
+ try {
32
+ const taskService = new services_1.TaskService();
33
+ const taskBlockService = new services_1.TaskBlockService();
34
+ // Validate IDs
35
+ const blockerTaskId = (0, error_handler_1.validateNumberInput)(blockerId);
36
+ const blockedTaskId = (0, error_handler_1.validateNumberInput)(blockedId);
37
+ if (blockerTaskId === null) {
38
+ formatter.error('Blocker task ID must be a number', () => {
39
+ console.log(chalk_1.default.red('\nError: Blocker task ID must be a number\n'));
40
+ });
41
+ process.exit(1);
42
+ }
43
+ if (blockedTaskId === null) {
44
+ formatter.error('Blocked task ID must be a number', () => {
45
+ console.log(chalk_1.default.red('\nError: Blocked task ID must be a number\n'));
46
+ });
47
+ process.exit(1);
48
+ }
49
+ // Check if tasks exist
50
+ const blockerTask = taskService.getTask(blockerTaskId);
51
+ if (!blockerTask) {
52
+ formatter.error(`Blocker task with ID ${blockerId} not found`, () => {
53
+ console.log(chalk_1.default.red(`\nError: Blocker task with ID ${blockerId} not found\n`));
54
+ });
55
+ process.exit(1);
56
+ }
57
+ const blockedTask = taskService.getTask(blockedTaskId);
58
+ if (!blockedTask) {
59
+ formatter.error(`Blocked task with ID ${blockedId} not found`, () => {
60
+ console.log(chalk_1.default.red(`\nError: Blocked task with ID ${blockedId} not found\n`));
61
+ });
62
+ process.exit(1);
63
+ }
64
+ // Remove blocking relationship
65
+ try {
66
+ const result = taskBlockService.removeBlock(blockerTaskId, blockedTaskId);
67
+ if (!result) {
68
+ formatter.error('Blocking relationship does not exist', () => {
69
+ console.log(chalk_1.default.red('\n✗ Error: Blocking relationship does not exist\n'));
70
+ });
71
+ process.exit(1);
72
+ }
73
+ }
74
+ catch (error) {
75
+ formatter.error(error instanceof Error ? error.message : 'An unknown error occurred', () => {
76
+ if (error instanceof Error) {
77
+ console.log(chalk_1.default.red(`\n✗ Error: ${error.message}\n`));
78
+ }
79
+ else {
80
+ console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
81
+ }
82
+ });
83
+ process.exit(1);
84
+ }
85
+ formatter.output(() => ({
86
+ success: true,
87
+ blocker: {
88
+ id: blockerTask.id,
89
+ title: blockerTask.title,
90
+ status: blockerTask.status,
91
+ },
92
+ blocked: {
93
+ id: blockedTask.id,
94
+ title: blockedTask.title,
95
+ status: blockedTask.status,
96
+ },
97
+ }), () => {
98
+ console.log(chalk_1.default.green('\n✓ Blocking relationship removed successfully\n'));
99
+ console.log(`${chalk_1.default.bold('Blocker:')} ${chalk_1.default.cyan(`[${blockerTask.id}]`)} ${blockerTask.title}`);
100
+ console.log(`${chalk_1.default.bold('Blocked:')} ${chalk_1.default.cyan(`[${blockedTask.id}]`)} ${blockedTask.title}`);
101
+ console.log();
102
+ });
103
+ }
104
+ catch (error) {
105
+ formatter.error(error instanceof Error ? error.message : 'An unknown error occurred', () => {
106
+ if (error instanceof Error) {
107
+ console.log(chalk_1.default.red(`\n✗ Error: ${error.message}\n`));
108
+ }
109
+ else {
110
+ console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
111
+ }
112
+ });
113
+ process.exit(1);
114
+ }
115
+ });
116
+ }
117
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/cli/commands/block/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Meta delete command handler
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function setupMetaDeleteCommand(program: Command): void;
6
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/meta/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6D7D"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Meta delete command handler
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setupMetaDeleteCommand = setupMetaDeleteCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const services_1 = require("../../../services");
12
+ const error_handler_1 = require("../../utils/error-handler");
13
+ const output_formatter_1 = require("../../utils/output-formatter");
14
+ function setupMetaDeleteCommand(program) {
15
+ // Find or create task command
16
+ let taskCommand = program.commands.find((cmd) => cmd.name() === 'task');
17
+ if (!taskCommand) {
18
+ taskCommand = program.command('task').description('Task management commands');
19
+ }
20
+ // Find or create meta command group
21
+ let metaCommand = taskCommand.commands.find((cmd) => cmd.name() === 'meta');
22
+ if (!metaCommand) {
23
+ metaCommand = taskCommand.command('meta').description('Task metadata commands');
24
+ }
25
+ metaCommand
26
+ .command('delete')
27
+ .argument('<task-id>', 'Task ID')
28
+ .argument('<key>', 'Metadata key')
29
+ .description('Delete metadata for a task')
30
+ .option('--json', 'Output in JSON format')
31
+ .action(async (taskId, key, options) => {
32
+ const formatter = (0, output_formatter_1.createFormatter)(options);
33
+ try {
34
+ const taskService = new services_1.TaskService();
35
+ const metadataService = new services_1.MetadataService();
36
+ // Validate task ID
37
+ const parsedTaskId = (0, error_handler_1.validateIdInput)(taskId, 'Task', options);
38
+ // Check if task exists
39
+ const task = taskService.getTask(parsedTaskId);
40
+ if (!task) {
41
+ formatter.error(`Task with ID ${taskId} not found`, () => {
42
+ console.log(chalk_1.default.red(`\nError: Task with ID ${taskId} not found\n`));
43
+ });
44
+ process.exit(1);
45
+ }
46
+ // Delete metadata
47
+ const deleted = metadataService.deleteMetadata(parsedTaskId, key);
48
+ if (!deleted) {
49
+ formatter.error(`Metadata with key "${key}" not found`, () => {
50
+ console.log(chalk_1.default.red(`\nError: Metadata with key "${key}" not found\n`));
51
+ });
52
+ process.exit(1);
53
+ }
54
+ formatter.output(() => ({ success: true, message: 'Metadata deleted' }), () => {
55
+ console.log(chalk_1.default.green(`\n✓ Metadata deleted successfully\n`));
56
+ });
57
+ }
58
+ catch (error) {
59
+ const message = error instanceof Error ? error.message : 'Unknown error';
60
+ formatter.error(message, () => {
61
+ console.log(chalk_1.default.red(`\nError: ${message}\n`));
62
+ });
63
+ process.exit(1);
64
+ }
65
+ });
66
+ }
67
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/cli/commands/meta/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Meta get command handler
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function setupMetaGetCommand(program: Command): void;
6
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/meta/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE1D"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Meta get command handler
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setupMetaGetCommand = setupMetaGetCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const services_1 = require("../../../services");
12
+ const error_handler_1 = require("../../utils/error-handler");
13
+ const output_formatter_1 = require("../../utils/output-formatter");
14
+ function setupMetaGetCommand(program) {
15
+ // Find or create task command
16
+ let taskCommand = program.commands.find((cmd) => cmd.name() === 'task');
17
+ if (!taskCommand) {
18
+ taskCommand = program.command('task').description('Task management commands');
19
+ }
20
+ // Find or create meta command group
21
+ let metaCommand = taskCommand.commands.find((cmd) => cmd.name() === 'meta');
22
+ if (!metaCommand) {
23
+ metaCommand = taskCommand.command('meta').description('Task metadata commands');
24
+ }
25
+ metaCommand
26
+ .command('get')
27
+ .argument('<task-id>', 'Task ID')
28
+ .argument('<key>', 'Metadata key')
29
+ .description('Get metadata for a task')
30
+ .option('--json', 'Output in JSON format')
31
+ .action(async (taskId, key, options) => {
32
+ const formatter = (0, output_formatter_1.createFormatter)(options);
33
+ try {
34
+ const taskService = new services_1.TaskService();
35
+ const metadataService = new services_1.MetadataService();
36
+ // Validate task ID
37
+ const parsedTaskId = (0, error_handler_1.validateIdInput)(taskId, 'Task', options);
38
+ // Check if task exists
39
+ const task = taskService.getTask(parsedTaskId);
40
+ if (!task) {
41
+ formatter.error(`Task with ID ${taskId} not found`, () => {
42
+ console.log(chalk_1.default.red(`\nError: Task with ID ${taskId} not found\n`));
43
+ });
44
+ process.exit(1);
45
+ }
46
+ // Get metadata
47
+ const metadata = metadataService.getMetadataByKey(parsedTaskId, key);
48
+ if (!metadata) {
49
+ formatter.error(`Metadata with key "${key}" not found`, () => {
50
+ console.log(chalk_1.default.red(`\nError: Metadata with key "${key}" not found\n`));
51
+ });
52
+ process.exit(1);
53
+ }
54
+ formatter.output(() => ({ success: true, data: metadata }), () => {
55
+ console.log(chalk_1.default.green(`\n✓ Metadata retrieved\n`));
56
+ console.log(`Key: ${metadata.key}`);
57
+ console.log(`Value: ${metadata.value}`);
58
+ console.log(`Created: ${metadata.created_at}`);
59
+ console.log(`Updated: ${metadata.updated_at}\n`);
60
+ });
61
+ }
62
+ catch (error) {
63
+ const message = error instanceof Error ? error.message : 'Unknown error';
64
+ formatter.error(message, () => {
65
+ console.log(chalk_1.default.red(`\nError: ${message}\n`));
66
+ });
67
+ process.exit(1);
68
+ }
69
+ });
70
+ }
71
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/cli/commands/meta/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Meta list command handler
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function setupMetaListCommand(program: Command): void;
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/meta/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6D3D"}