agkan 2.14.3 → 2.15.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.
- package/README.ja.md +13 -13
- package/README.md +13 -13
- package/dist/board/boardFavicon.d.ts +2 -0
- package/dist/board/boardFavicon.d.ts.map +1 -0
- package/dist/board/boardFavicon.js +5 -0
- package/dist/board/boardFavicon.js.map +1 -0
- package/dist/board/boardRenderer.d.ts +22 -6
- package/dist/board/boardRenderer.d.ts.map +1 -1
- package/dist/board/boardRenderer.js +40 -24
- package/dist/board/boardRenderer.js.map +1 -1
- package/dist/board/boardRoutes.d.ts +2 -2
- package/dist/board/boardRoutes.d.ts.map +1 -1
- package/dist/board/boardRoutes.js +18 -3
- package/dist/board/boardRoutes.js.map +1 -1
- package/dist/board/boardStyles.d.ts +1 -1
- package/dist/board/boardStyles.d.ts.map +1 -1
- package/dist/board/boardStyles.js +14 -6
- package/dist/board/boardStyles.js.map +1 -1
- package/dist/board/client/board.js +369 -13
- package/dist/board/server.d.ts +2 -2
- package/dist/board/server.d.ts.map +1 -1
- package/dist/board/server.js +5 -5
- package/dist/board/server.js.map +1 -1
- package/dist/cli/commands/agent-guide.d.ts.map +1 -1
- package/dist/cli/commands/agent-guide.js +6 -0
- package/dist/cli/commands/agent-guide.js.map +1 -1
- package/dist/cli/commands/board.d.ts.map +1 -1
- package/dist/cli/commands/board.js +202 -15
- package/dist/cli/commands/board.js.map +1 -1
- package/dist/cli/commands/ps.d.ts +7 -0
- package/dist/cli/commands/ps.d.ts.map +1 -0
- package/dist/cli/commands/ps.js +83 -0
- package/dist/cli/commands/ps.js.map +1 -0
- package/dist/cli/commands/task/add.js +1 -1
- package/dist/cli/commands/task/add.js.map +1 -1
- package/dist/cli/commands/task/copy.d.ts +6 -0
- package/dist/cli/commands/task/copy.d.ts.map +1 -0
- package/dist/cli/commands/task/copy.js +118 -0
- package/dist/cli/commands/task/copy.js.map +1 -0
- package/dist/cli/commands/task/list.d.ts.map +1 -1
- package/dist/cli/commands/task/list.js +37 -17
- package/dist/cli/commands/task/list.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/board-daemon.d.ts +7 -0
- package/dist/cli/utils/board-daemon.d.ts.map +1 -0
- package/dist/cli/utils/board-daemon.js +77 -0
- package/dist/cli/utils/board-daemon.js.map +1 -0
- package/dist/db/adapters/sqlite-storage-backend.d.ts +26 -0
- package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -0
- package/dist/db/adapters/sqlite-storage-backend.js +447 -0
- package/dist/db/adapters/sqlite-storage-backend.js.map +1 -0
- package/dist/db/connection.d.ts +14 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +28 -2
- package/dist/db/connection.js.map +1 -1
- package/dist/db/migrations/20260328000000_initial_schema.d.ts +3 -0
- package/dist/db/migrations/20260328000000_initial_schema.d.ts.map +1 -0
- package/dist/db/migrations/20260328000000_initial_schema.js +218 -0
- package/dist/db/migrations/20260328000000_initial_schema.js.map +1 -0
- package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts +3 -0
- package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts.map +1 -0
- package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js +7 -0
- package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js.map +1 -0
- package/dist/db/migrations/index.d.ts +4 -0
- package/dist/db/migrations/index.d.ts.map +1 -0
- package/dist/db/migrations/index.js +18 -0
- package/dist/db/migrations/index.js.map +1 -0
- package/dist/db/migrations/types.d.ts +17 -0
- package/dist/db/migrations/types.d.ts.map +1 -0
- package/dist/{board/client → db/migrations}/types.js +0 -1
- package/dist/db/migrations/types.js.map +1 -0
- package/dist/db/reset.d.ts.map +1 -1
- package/dist/db/reset.js +8 -3
- package/dist/db/reset.js.map +1 -1
- package/dist/db/schema.d.ts +4 -4
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +22 -207
- package/dist/db/schema.js.map +1 -1
- package/dist/db/types/repository.d.ts +192 -0
- package/dist/db/types/repository.d.ts.map +1 -0
- package/dist/db/types/repository.js +15 -0
- package/dist/db/types/repository.js.map +1 -0
- package/dist/models/Attachment.d.ts +25 -0
- package/dist/models/Attachment.d.ts.map +1 -0
- package/dist/models/Attachment.js +7 -0
- package/dist/models/Attachment.js.map +1 -0
- package/dist/services/AttachmentService.d.ts +62 -0
- package/dist/services/AttachmentService.d.ts.map +1 -0
- package/dist/services/AttachmentService.js +95 -0
- package/dist/services/AttachmentService.js.map +1 -0
- package/dist/services/ClaudeProcessService.d.ts +100 -0
- package/dist/services/ClaudeProcessService.d.ts.map +1 -0
- package/dist/services/ClaudeProcessService.js +278 -0
- package/dist/services/ClaudeProcessService.js.map +1 -0
- package/dist/services/CommentService.d.ts +3 -3
- package/dist/services/CommentService.d.ts.map +1 -1
- package/dist/services/CommentService.js +10 -70
- package/dist/services/CommentService.js.map +1 -1
- package/dist/services/ExportImportService.d.ts +3 -3
- package/dist/services/ExportImportService.d.ts.map +1 -1
- package/dist/services/ExportImportService.js +12 -16
- package/dist/services/ExportImportService.js.map +1 -1
- package/dist/services/MetadataService.d.ts +3 -3
- package/dist/services/MetadataService.d.ts.map +1 -1
- package/dist/services/MetadataService.js +9 -69
- package/dist/services/MetadataService.js.map +1 -1
- package/dist/services/TagService.d.ts +3 -3
- package/dist/services/TagService.d.ts.map +1 -1
- package/dist/services/TagService.js +9 -35
- package/dist/services/TagService.js.map +1 -1
- package/dist/services/TaskBlockService.d.ts +3 -3
- package/dist/services/TaskBlockService.d.ts.map +1 -1
- package/dist/services/TaskBlockService.js +9 -36
- package/dist/services/TaskBlockService.js.map +1 -1
- package/dist/services/TaskService.d.ts +3 -23
- package/dist/services/TaskService.d.ts.map +1 -1
- package/dist/services/TaskService.js +34 -186
- package/dist/services/TaskService.js.map +1 -1
- package/dist/services/TaskTagService.d.ts +3 -3
- package/dist/services/TaskTagService.d.ts.map +1 -1
- package/dist/services/TaskTagService.js +19 -83
- package/dist/services/TaskTagService.js.map +1 -1
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +18 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +12 -5
- package/dist/board/boardScript.d.ts +0 -2
- package/dist/board/boardScript.d.ts.map +0 -1
- package/dist/board/boardScript.js +0 -1202
- package/dist/board/boardScript.js.map +0 -1
- package/dist/board/client/addTaskModal.d.ts +0 -2
- package/dist/board/client/addTaskModal.d.ts.map +0 -1
- package/dist/board/client/addTaskModal.js +0 -64
- package/dist/board/client/addTaskModal.js.map +0 -1
- package/dist/board/client/autoScroll.d.ts +0 -4
- package/dist/board/client/autoScroll.d.ts.map +0 -1
- package/dist/board/client/autoScroll.js +0 -59
- package/dist/board/client/autoScroll.js.map +0 -1
- package/dist/board/client/boardPolling.d.ts +0 -15
- package/dist/board/client/boardPolling.d.ts.map +0 -1
- package/dist/board/client/boardPolling.js +0 -144
- package/dist/board/client/boardPolling.js.map +0 -1
- package/dist/board/client/burgerMenu.d.ts +0 -2
- package/dist/board/client/burgerMenu.d.ts.map +0 -1
- package/dist/board/client/burgerMenu.js +0 -80
- package/dist/board/client/burgerMenu.js.map +0 -1
- package/dist/board/client/contextMenu.d.ts +0 -2
- package/dist/board/client/contextMenu.d.ts.map +0 -1
- package/dist/board/client/contextMenu.js +0 -52
- package/dist/board/client/contextMenu.js.map +0 -1
- package/dist/board/client/detailPanel.d.ts +0 -8
- package/dist/board/client/detailPanel.d.ts.map +0 -1
- package/dist/board/client/detailPanel.js +0 -565
- package/dist/board/client/detailPanel.js.map +0 -1
- package/dist/board/client/dragDrop.d.ts +0 -6
- package/dist/board/client/dragDrop.d.ts.map +0 -1
- package/dist/board/client/dragDrop.js +0 -82
- package/dist/board/client/dragDrop.js.map +0 -1
- package/dist/board/client/filters.d.ts +0 -6
- package/dist/board/client/filters.d.ts.map +0 -1
- package/dist/board/client/filters.js +0 -167
- package/dist/board/client/filters.js.map +0 -1
- package/dist/board/client/main.d.ts +0 -2
- package/dist/board/client/main.d.ts.map +0 -1
- package/dist/board/client/main.js +0 -20
- package/dist/board/client/main.js.map +0 -1
- package/dist/board/client/tags.d.ts +0 -6
- package/dist/board/client/tags.d.ts.map +0 -1
- package/dist/board/client/tags.js +0 -198
- package/dist/board/client/tags.js.map +0 -1
- package/dist/board/client/types.d.ts +0 -48
- package/dist/board/client/types.d.ts.map +0 -1
- package/dist/board/client/types.js.map +0 -1
- package/dist/board/client/utils.d.ts +0 -4
- package/dist/board/client/utils.d.ts.map +0 -1
- package/dist/board/client/utils.js +0 -44
- package/dist/board/client/utils.js.map +0 -1
|
@@ -7,9 +7,9 @@ const connection_1 = require("../db/connection");
|
|
|
7
7
|
* Manages creation, retrieval, update, and deletion of task metadata
|
|
8
8
|
*/
|
|
9
9
|
class MetadataService {
|
|
10
|
-
|
|
11
|
-
constructor(
|
|
12
|
-
this.
|
|
10
|
+
backend;
|
|
11
|
+
constructor(backend) {
|
|
12
|
+
this.backend = backend ?? (0, connection_1.getStorageBackend)();
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Set metadata for a task (create or update)
|
|
@@ -17,29 +17,8 @@ class MetadataService {
|
|
|
17
17
|
* @returns Metadata object
|
|
18
18
|
*/
|
|
19
19
|
setMetadata(input) {
|
|
20
|
-
const db = this.db;
|
|
21
|
-
// Check if metadata already exists
|
|
22
|
-
const existing = this.getMetadataByKey(input.task_id, input.key);
|
|
23
20
|
const now = new Date().toISOString();
|
|
24
|
-
|
|
25
|
-
// Update existing metadata
|
|
26
|
-
const stmt = db.prepare(`
|
|
27
|
-
UPDATE task_metadata
|
|
28
|
-
SET value = ?, updated_at = ?
|
|
29
|
-
WHERE task_id = ? AND key = ?
|
|
30
|
-
`);
|
|
31
|
-
stmt.run(input.value, now, input.task_id, input.key);
|
|
32
|
-
return this.getMetadataByKey(input.task_id, input.key);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
// Create new metadata
|
|
36
|
-
const stmt = db.prepare(`
|
|
37
|
-
INSERT INTO task_metadata (task_id, key, value, created_at, updated_at)
|
|
38
|
-
VALUES (?, ?, ?, ?, ?)
|
|
39
|
-
`);
|
|
40
|
-
stmt.run(input.task_id, input.key, input.value, now, now);
|
|
41
|
-
return this.getMetadataByKey(input.task_id, input.key);
|
|
42
|
-
}
|
|
21
|
+
return this.backend.metadata.set({ ...input, created_at: now, updated_at: now });
|
|
43
22
|
}
|
|
44
23
|
/**
|
|
45
24
|
* Get metadata by task ID and key
|
|
@@ -48,13 +27,7 @@ class MetadataService {
|
|
|
48
27
|
* @returns Metadata object or null if not found
|
|
49
28
|
*/
|
|
50
29
|
getMetadataByKey(taskId, key) {
|
|
51
|
-
|
|
52
|
-
const stmt = db.prepare(`
|
|
53
|
-
SELECT * FROM task_metadata
|
|
54
|
-
WHERE task_id = ? AND key = ?
|
|
55
|
-
`);
|
|
56
|
-
const result = stmt.get(taskId, key);
|
|
57
|
-
return result ? result : null;
|
|
30
|
+
return this.backend.metadata.findByKey(taskId, key);
|
|
58
31
|
}
|
|
59
32
|
/**
|
|
60
33
|
* List metadata for a task
|
|
@@ -62,14 +35,7 @@ class MetadataService {
|
|
|
62
35
|
* @returns Array of metadata objects
|
|
63
36
|
*/
|
|
64
37
|
listMetadata(taskId) {
|
|
65
|
-
|
|
66
|
-
const stmt = db.prepare(`
|
|
67
|
-
SELECT * FROM task_metadata
|
|
68
|
-
WHERE task_id = ?
|
|
69
|
-
ORDER BY created_at DESC
|
|
70
|
-
`);
|
|
71
|
-
const results = stmt.all(taskId);
|
|
72
|
-
return results;
|
|
38
|
+
return this.backend.metadata.findByTaskId(taskId);
|
|
73
39
|
}
|
|
74
40
|
/**
|
|
75
41
|
* Delete metadata by task ID and key
|
|
@@ -78,13 +44,7 @@ class MetadataService {
|
|
|
78
44
|
* @returns True if deletion succeeded, false if metadata not found
|
|
79
45
|
*/
|
|
80
46
|
deleteMetadata(taskId, key) {
|
|
81
|
-
|
|
82
|
-
const stmt = db.prepare(`
|
|
83
|
-
DELETE FROM task_metadata
|
|
84
|
-
WHERE task_id = ? AND key = ?
|
|
85
|
-
`);
|
|
86
|
-
const result = stmt.run(taskId, key);
|
|
87
|
-
return result.changes > 0;
|
|
47
|
+
return this.backend.metadata.delete(taskId, key);
|
|
88
48
|
}
|
|
89
49
|
/**
|
|
90
50
|
* Get all metadata for multiple tasks at once
|
|
@@ -92,21 +52,7 @@ class MetadataService {
|
|
|
92
52
|
* @returns Map<task_id, TaskMetadata[]>
|
|
93
53
|
*/
|
|
94
54
|
getAllTasksMetadata() {
|
|
95
|
-
|
|
96
|
-
const stmt = db.prepare(`
|
|
97
|
-
SELECT * FROM task_metadata
|
|
98
|
-
ORDER BY task_id, created_at DESC
|
|
99
|
-
`);
|
|
100
|
-
const results = stmt.all();
|
|
101
|
-
const metadataMap = new Map();
|
|
102
|
-
for (const row of results) {
|
|
103
|
-
const taskId = row.task_id;
|
|
104
|
-
if (!metadataMap.has(taskId)) {
|
|
105
|
-
metadataMap.set(taskId, []);
|
|
106
|
-
}
|
|
107
|
-
metadataMap.get(taskId).push(row);
|
|
108
|
-
}
|
|
109
|
-
return metadataMap;
|
|
55
|
+
return this.backend.metadata.findAllGroupedByTaskId();
|
|
110
56
|
}
|
|
111
57
|
/**
|
|
112
58
|
* Delete all metadata for a task
|
|
@@ -114,13 +60,7 @@ class MetadataService {
|
|
|
114
60
|
* @returns Number of deleted metadata entries
|
|
115
61
|
*/
|
|
116
62
|
deleteAllMetadata(taskId) {
|
|
117
|
-
|
|
118
|
-
const stmt = db.prepare(`
|
|
119
|
-
DELETE FROM task_metadata
|
|
120
|
-
WHERE task_id = ?
|
|
121
|
-
`);
|
|
122
|
-
const result = stmt.run(taskId);
|
|
123
|
-
return result.changes;
|
|
63
|
+
return this.backend.metadata.deleteAllForTask(taskId);
|
|
124
64
|
}
|
|
125
65
|
}
|
|
126
66
|
exports.MetadataService = MetadataService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataService.js","sourceRoot":"","sources":["../../src/services/MetadataService.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"MetadataService.js","sourceRoot":"","sources":["../../src/services/MetadataService.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AAGrD;;;GAGG;AACH,MAAa,eAAe;IAClB,OAAO,CAAiB;IAEhC,YAAY,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAA,8BAAiB,GAAE,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAA8B;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,MAAc,EAAE,GAAW;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAc,EAAE,GAAW;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;CACF;AA/DD,0CA+DC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Tag, CreateTagInput, UpdateTagInput } from '../models';
|
|
2
|
-
import {
|
|
2
|
+
import { StorageBackend } from '../db/types/repository';
|
|
3
3
|
/**
|
|
4
4
|
* Tag Service
|
|
5
5
|
* Manages creation, retrieval, update, and deletion of tags
|
|
6
6
|
*/
|
|
7
7
|
export declare class TagService {
|
|
8
|
-
private
|
|
9
|
-
constructor(
|
|
8
|
+
private backend;
|
|
9
|
+
constructor(backend?: StorageBackend);
|
|
10
10
|
/**
|
|
11
11
|
* Create a new tag
|
|
12
12
|
* @param input - Tag creation input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagService.d.ts","sourceRoot":"","sources":["../../src/services/TagService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TagService.d.ts","sourceRoot":"","sources":["../../src/services/TagService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,cAAc;IAIpC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG;IAiBrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAI9B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAItC;;;OAGG;IACH,QAAQ,IAAI,GAAG,EAAE;IAIjB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG,IAAI;IA+BxD;;;;OAIG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAG/B"}
|
|
@@ -8,9 +8,9 @@ const input_validators_1 = require("../utils/input-validators");
|
|
|
8
8
|
* Manages creation, retrieval, update, and deletion of tags
|
|
9
9
|
*/
|
|
10
10
|
class TagService {
|
|
11
|
-
|
|
12
|
-
constructor(
|
|
13
|
-
this.
|
|
11
|
+
backend;
|
|
12
|
+
constructor(backend) {
|
|
13
|
+
this.backend = backend ?? (0, connection_1.getStorageBackend)();
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Create a new tag
|
|
@@ -19,7 +19,6 @@ class TagService {
|
|
|
19
19
|
* @throws Error if tag name already exists
|
|
20
20
|
*/
|
|
21
21
|
createTag(input) {
|
|
22
|
-
const db = this.db;
|
|
23
22
|
// Validate input fields
|
|
24
23
|
const validationErrors = (0, input_validators_1.validateTagInput)(input);
|
|
25
24
|
if (validationErrors.length > 0) {
|
|
@@ -31,13 +30,7 @@ class TagService {
|
|
|
31
30
|
throw new Error(`Tag with name "${input.name}" already exists`);
|
|
32
31
|
}
|
|
33
32
|
const now = new Date().toISOString();
|
|
34
|
-
|
|
35
|
-
INSERT INTO tags (name, created_at)
|
|
36
|
-
VALUES (?, ?)
|
|
37
|
-
`);
|
|
38
|
-
const result = stmt.run(input.name, now);
|
|
39
|
-
const getStmt = db.prepare('SELECT * FROM tags WHERE id = ?');
|
|
40
|
-
return getStmt.get(result.lastInsertRowid);
|
|
33
|
+
return this.backend.tags.create({ name: input.name, created_at: now });
|
|
41
34
|
}
|
|
42
35
|
/**
|
|
43
36
|
* Get tag by ID
|
|
@@ -45,10 +38,7 @@ class TagService {
|
|
|
45
38
|
* @returns Tag object or null if not found
|
|
46
39
|
*/
|
|
47
40
|
getTag(id) {
|
|
48
|
-
|
|
49
|
-
const stmt = db.prepare('SELECT * FROM tags WHERE id = ?');
|
|
50
|
-
const result = stmt.get(id);
|
|
51
|
-
return result ? result : null;
|
|
41
|
+
return this.backend.tags.findById(id);
|
|
52
42
|
}
|
|
53
43
|
/**
|
|
54
44
|
* Get tag by name
|
|
@@ -56,20 +46,14 @@ class TagService {
|
|
|
56
46
|
* @returns Tag object or null if not found
|
|
57
47
|
*/
|
|
58
48
|
getTagByName(name) {
|
|
59
|
-
|
|
60
|
-
const stmt = db.prepare('SELECT * FROM tags WHERE name = ?');
|
|
61
|
-
const result = stmt.get(name);
|
|
62
|
-
return result ? result : null;
|
|
49
|
+
return this.backend.tags.findByName(name);
|
|
63
50
|
}
|
|
64
51
|
/**
|
|
65
52
|
* List all tags
|
|
66
53
|
* @returns Array of tags sorted by creation date in descending order
|
|
67
54
|
*/
|
|
68
55
|
listTags() {
|
|
69
|
-
|
|
70
|
-
const stmt = db.prepare('SELECT * FROM tags ORDER BY created_at DESC, id DESC');
|
|
71
|
-
const results = stmt.all();
|
|
72
|
-
return results;
|
|
56
|
+
return this.backend.tags.findAll();
|
|
73
57
|
}
|
|
74
58
|
/**
|
|
75
59
|
* Update tag
|
|
@@ -79,7 +63,6 @@ class TagService {
|
|
|
79
63
|
* @throws Error if tag name already exists
|
|
80
64
|
*/
|
|
81
65
|
updateTag(id, input) {
|
|
82
|
-
const db = this.db;
|
|
83
66
|
// Verify that tag exists
|
|
84
67
|
const existingTag = this.getTag(id);
|
|
85
68
|
if (!existingTag) {
|
|
@@ -104,13 +87,7 @@ class TagService {
|
|
|
104
87
|
throw new Error(`Tag with name "${input.name}" already exists`);
|
|
105
88
|
}
|
|
106
89
|
}
|
|
107
|
-
|
|
108
|
-
UPDATE tags
|
|
109
|
-
SET name = COALESCE(?, name)
|
|
110
|
-
WHERE id = ?
|
|
111
|
-
`);
|
|
112
|
-
stmt.run(input.name ?? null, id);
|
|
113
|
-
return this.getTag(id);
|
|
90
|
+
return this.backend.tags.update(id, input);
|
|
114
91
|
}
|
|
115
92
|
/**
|
|
116
93
|
* Delete tag
|
|
@@ -118,10 +95,7 @@ class TagService {
|
|
|
118
95
|
* @returns True if deletion succeeded, false if tag not found
|
|
119
96
|
*/
|
|
120
97
|
deleteTag(id) {
|
|
121
|
-
|
|
122
|
-
const stmt = db.prepare('DELETE FROM tags WHERE id = ?');
|
|
123
|
-
const result = stmt.run(id);
|
|
124
|
-
return result.changes > 0;
|
|
98
|
+
return this.backend.tags.delete(id);
|
|
125
99
|
}
|
|
126
100
|
}
|
|
127
101
|
exports.TagService = TagService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagService.js","sourceRoot":"","sources":["../../src/services/TagService.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"TagService.js","sourceRoot":"","sources":["../../src/services/TagService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { TaskBlock, CreateTaskBlockInput } from '../models';
|
|
2
2
|
import { TaskService } from './TaskService';
|
|
3
|
-
import {
|
|
3
|
+
import { StorageBackend } from '../db/types/repository';
|
|
4
4
|
/**
|
|
5
5
|
* Task Block Service
|
|
6
6
|
* Manages blocking relationships between tasks
|
|
7
7
|
*/
|
|
8
8
|
export declare class TaskBlockService {
|
|
9
|
-
private
|
|
9
|
+
private backend;
|
|
10
10
|
private taskService;
|
|
11
|
-
constructor(
|
|
11
|
+
constructor(backend?: StorageBackend, taskService?: TaskService);
|
|
12
12
|
/**
|
|
13
13
|
* Add a blocking relationship between tasks
|
|
14
14
|
* @param input - Creation input for the blocking relationship
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskBlockService.d.ts","sourceRoot":"","sources":["../../src/services/TaskBlockService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TaskBlockService.d.ts","sourceRoot":"","sources":["../../src/services/TaskBlockService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,WAAW;IAK/D;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS;IA4BhD;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAI1D;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAI9C;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAI9C;;;;OAIG;IACH,YAAY,IAAI,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAI3E;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;CAiB9B"}
|
|
@@ -8,11 +8,11 @@ const TaskService_1 = require("./TaskService");
|
|
|
8
8
|
* Manages blocking relationships between tasks
|
|
9
9
|
*/
|
|
10
10
|
class TaskBlockService {
|
|
11
|
-
|
|
11
|
+
backend;
|
|
12
12
|
taskService;
|
|
13
|
-
constructor(
|
|
14
|
-
this.
|
|
15
|
-
this.taskService = taskService
|
|
13
|
+
constructor(backend, taskService) {
|
|
14
|
+
this.backend = backend ?? (0, connection_1.getStorageBackend)();
|
|
15
|
+
this.taskService = taskService ?? new TaskService_1.TaskService(this.backend);
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Add a blocking relationship between tasks
|
|
@@ -21,7 +21,6 @@ class TaskBlockService {
|
|
|
21
21
|
* @throws Error if tasks do not exist, self-reference is detected, or circular reference would be created
|
|
22
22
|
*/
|
|
23
23
|
addBlock(input) {
|
|
24
|
-
const db = this.db;
|
|
25
24
|
// Check for self-reference: prevent a task from blocking itself
|
|
26
25
|
if (input.blocker_task_id === input.blocked_task_id) {
|
|
27
26
|
throw new Error('Task cannot block itself');
|
|
@@ -40,13 +39,7 @@ class TaskBlockService {
|
|
|
40
39
|
throw new Error(`Cannot create block relationship: would create circular dependency between tasks ${input.blocker_task_id} and ${input.blocked_task_id}`);
|
|
41
40
|
}
|
|
42
41
|
const now = new Date().toISOString();
|
|
43
|
-
|
|
44
|
-
INSERT INTO task_blocks (blocker_task_id, blocked_task_id, created_at)
|
|
45
|
-
VALUES (?, ?, ?)
|
|
46
|
-
`);
|
|
47
|
-
const result = stmt.run(input.blocker_task_id, input.blocked_task_id, now);
|
|
48
|
-
const getStmt = db.prepare('SELECT * FROM task_blocks WHERE id = ?');
|
|
49
|
-
return getStmt.get(result.lastInsertRowid);
|
|
42
|
+
return this.backend.blocks.create({ ...input, created_at: now });
|
|
50
43
|
}
|
|
51
44
|
/**
|
|
52
45
|
* Remove a blocking relationship between tasks
|
|
@@ -55,13 +48,7 @@ class TaskBlockService {
|
|
|
55
48
|
* @returns True if removal was successful, false if relationship was not found
|
|
56
49
|
*/
|
|
57
50
|
removeBlock(blockerId, blockedId) {
|
|
58
|
-
|
|
59
|
-
const stmt = db.prepare(`
|
|
60
|
-
DELETE FROM task_blocks
|
|
61
|
-
WHERE blocker_task_id = ? AND blocked_task_id = ?
|
|
62
|
-
`);
|
|
63
|
-
const result = stmt.run(blockerId, blockedId);
|
|
64
|
-
return result.changes > 0;
|
|
51
|
+
return this.backend.blocks.delete(blockerId, blockedId);
|
|
65
52
|
}
|
|
66
53
|
/**
|
|
67
54
|
* Get IDs of tasks blocked by the specified task
|
|
@@ -70,13 +57,7 @@ class TaskBlockService {
|
|
|
70
57
|
* @returns Array of IDs for tasks blocked by this task
|
|
71
58
|
*/
|
|
72
59
|
getBlockedTaskIds(blockerId) {
|
|
73
|
-
|
|
74
|
-
const stmt = db.prepare(`
|
|
75
|
-
SELECT blocked_task_id FROM task_blocks
|
|
76
|
-
WHERE blocker_task_id = ?
|
|
77
|
-
`);
|
|
78
|
-
const results = stmt.all(blockerId);
|
|
79
|
-
return results.map((row) => row.blocked_task_id);
|
|
60
|
+
return this.backend.blocks.findBlockedTaskIds(blockerId);
|
|
80
61
|
}
|
|
81
62
|
/**
|
|
82
63
|
* Get IDs of tasks blocking the specified task
|
|
@@ -85,13 +66,7 @@ class TaskBlockService {
|
|
|
85
66
|
* @returns Array of IDs for blocking tasks
|
|
86
67
|
*/
|
|
87
68
|
getBlockerTaskIds(blockedId) {
|
|
88
|
-
|
|
89
|
-
const stmt = db.prepare(`
|
|
90
|
-
SELECT blocker_task_id FROM task_blocks
|
|
91
|
-
WHERE blocked_task_id = ?
|
|
92
|
-
`);
|
|
93
|
-
const results = stmt.all(blockedId);
|
|
94
|
-
return results.map((row) => row.blocker_task_id);
|
|
69
|
+
return this.backend.blocks.findBlockerTaskIds(blockedId);
|
|
95
70
|
}
|
|
96
71
|
/**
|
|
97
72
|
* Get all blocking relationships
|
|
@@ -99,9 +74,7 @@ class TaskBlockService {
|
|
|
99
74
|
* @returns Array of all blocking relationships
|
|
100
75
|
*/
|
|
101
76
|
getAllBlocks() {
|
|
102
|
-
|
|
103
|
-
const stmt = db.prepare('SELECT blocker_task_id, blocked_task_id FROM task_blocks');
|
|
104
|
-
return stmt.all();
|
|
77
|
+
return this.backend.blocks.findAll();
|
|
105
78
|
}
|
|
106
79
|
/**
|
|
107
80
|
* Check for circular references in blocking relationships (private method)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskBlockService.js","sourceRoot":"","sources":["../../src/services/TaskBlockService.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"TaskBlockService.js","sourceRoot":"","sources":["../../src/services/TaskBlockService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Task, CreateTaskInput, UpdateTaskInput, TaskStatus } from '../models';
|
|
2
|
-
import {
|
|
2
|
+
import { StorageBackend } from '../db/types/repository';
|
|
3
3
|
/** Allowed sort fields for task listing */
|
|
4
4
|
export declare const ALLOWED_SORT_FIELDS: readonly ["id", "title", "status", "created_at", "updated_at", "priority"];
|
|
5
5
|
export type SortField = (typeof ALLOWED_SORT_FIELDS)[number];
|
|
@@ -9,8 +9,8 @@ export type SortOrder = 'asc' | 'desc';
|
|
|
9
9
|
* Provides CRUD operations for tasks
|
|
10
10
|
*/
|
|
11
11
|
export declare class TaskService {
|
|
12
|
-
private
|
|
13
|
-
constructor(
|
|
12
|
+
private backend;
|
|
13
|
+
constructor(backend?: StorageBackend);
|
|
14
14
|
/**
|
|
15
15
|
* Create a new task
|
|
16
16
|
* @param input - Task creation input
|
|
@@ -23,19 +23,6 @@ export declare class TaskService {
|
|
|
23
23
|
* @returns Task, or null if not found
|
|
24
24
|
*/
|
|
25
25
|
getTask(id: number): Task | null;
|
|
26
|
-
/**
|
|
27
|
-
* Build the base SELECT query and initial params for listTasks.
|
|
28
|
-
* Uses a JOIN when tag IDs are specified.
|
|
29
|
-
*/
|
|
30
|
-
private buildListBaseQuery;
|
|
31
|
-
/**
|
|
32
|
-
* Append filter conditions (status, author, assignees, priority) to query and params.
|
|
33
|
-
*/
|
|
34
|
-
private applyListFilters;
|
|
35
|
-
/**
|
|
36
|
-
* Append ORDER BY clause to query for listTasks.
|
|
37
|
-
*/
|
|
38
|
-
private applyListOrder;
|
|
39
26
|
/**
|
|
40
27
|
* Get task list
|
|
41
28
|
* @param filters - Filter criteria (status, author, tagIds)
|
|
@@ -51,13 +38,6 @@ export declare class TaskService {
|
|
|
51
38
|
priority?: string | string[];
|
|
52
39
|
search?: string;
|
|
53
40
|
}, sort?: SortField, order?: SortOrder): Task[];
|
|
54
|
-
/**
|
|
55
|
-
* Build dynamic UPDATE query for task fields
|
|
56
|
-
* @param input - Update content
|
|
57
|
-
* @param id - Task ID (appended as last param for WHERE clause)
|
|
58
|
-
* @returns Object with sql string and params array
|
|
59
|
-
*/
|
|
60
|
-
private buildUpdateQuery;
|
|
61
41
|
/**
|
|
62
42
|
* Update task
|
|
63
43
|
* @param id - Task ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,4EAA6E,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,cAAc;IAIpC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA0BxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhC;;;;;;OAMG;IACH,SAAS,CACP,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EACD,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,SAAS,GAChB,IAAI,EAAE;IAkBT;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IA4B3D;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQ/B;;;OAGG;IACH,oBAAoB,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;IAIlD;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,EAAuB,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,EAAE;IAclH;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE;IAiB1F;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAIvC;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ1C;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAwB5C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAuBzC"}
|