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.
Files changed (179) hide show
  1. package/README.ja.md +13 -13
  2. package/README.md +13 -13
  3. package/dist/board/boardFavicon.d.ts +2 -0
  4. package/dist/board/boardFavicon.d.ts.map +1 -0
  5. package/dist/board/boardFavicon.js +5 -0
  6. package/dist/board/boardFavicon.js.map +1 -0
  7. package/dist/board/boardRenderer.d.ts +22 -6
  8. package/dist/board/boardRenderer.d.ts.map +1 -1
  9. package/dist/board/boardRenderer.js +40 -24
  10. package/dist/board/boardRenderer.js.map +1 -1
  11. package/dist/board/boardRoutes.d.ts +2 -2
  12. package/dist/board/boardRoutes.d.ts.map +1 -1
  13. package/dist/board/boardRoutes.js +18 -3
  14. package/dist/board/boardRoutes.js.map +1 -1
  15. package/dist/board/boardStyles.d.ts +1 -1
  16. package/dist/board/boardStyles.d.ts.map +1 -1
  17. package/dist/board/boardStyles.js +14 -6
  18. package/dist/board/boardStyles.js.map +1 -1
  19. package/dist/board/client/board.js +369 -13
  20. package/dist/board/server.d.ts +2 -2
  21. package/dist/board/server.d.ts.map +1 -1
  22. package/dist/board/server.js +5 -5
  23. package/dist/board/server.js.map +1 -1
  24. package/dist/cli/commands/agent-guide.d.ts.map +1 -1
  25. package/dist/cli/commands/agent-guide.js +6 -0
  26. package/dist/cli/commands/agent-guide.js.map +1 -1
  27. package/dist/cli/commands/board.d.ts.map +1 -1
  28. package/dist/cli/commands/board.js +202 -15
  29. package/dist/cli/commands/board.js.map +1 -1
  30. package/dist/cli/commands/ps.d.ts +7 -0
  31. package/dist/cli/commands/ps.d.ts.map +1 -0
  32. package/dist/cli/commands/ps.js +83 -0
  33. package/dist/cli/commands/ps.js.map +1 -0
  34. package/dist/cli/commands/task/add.js +1 -1
  35. package/dist/cli/commands/task/add.js.map +1 -1
  36. package/dist/cli/commands/task/copy.d.ts +6 -0
  37. package/dist/cli/commands/task/copy.d.ts.map +1 -0
  38. package/dist/cli/commands/task/copy.js +118 -0
  39. package/dist/cli/commands/task/copy.js.map +1 -0
  40. package/dist/cli/commands/task/list.d.ts.map +1 -1
  41. package/dist/cli/commands/task/list.js +37 -17
  42. package/dist/cli/commands/task/list.js.map +1 -1
  43. package/dist/cli/index.js +2 -0
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/cli/utils/board-daemon.d.ts +7 -0
  46. package/dist/cli/utils/board-daemon.d.ts.map +1 -0
  47. package/dist/cli/utils/board-daemon.js +77 -0
  48. package/dist/cli/utils/board-daemon.js.map +1 -0
  49. package/dist/db/adapters/sqlite-storage-backend.d.ts +26 -0
  50. package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -0
  51. package/dist/db/adapters/sqlite-storage-backend.js +447 -0
  52. package/dist/db/adapters/sqlite-storage-backend.js.map +1 -0
  53. package/dist/db/connection.d.ts +14 -0
  54. package/dist/db/connection.d.ts.map +1 -1
  55. package/dist/db/connection.js +28 -2
  56. package/dist/db/connection.js.map +1 -1
  57. package/dist/db/migrations/20260328000000_initial_schema.d.ts +3 -0
  58. package/dist/db/migrations/20260328000000_initial_schema.d.ts.map +1 -0
  59. package/dist/db/migrations/20260328000000_initial_schema.js +218 -0
  60. package/dist/db/migrations/20260328000000_initial_schema.js.map +1 -0
  61. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts +3 -0
  62. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts.map +1 -0
  63. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js +7 -0
  64. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js.map +1 -0
  65. package/dist/db/migrations/index.d.ts +4 -0
  66. package/dist/db/migrations/index.d.ts.map +1 -0
  67. package/dist/db/migrations/index.js +18 -0
  68. package/dist/db/migrations/index.js.map +1 -0
  69. package/dist/db/migrations/types.d.ts +17 -0
  70. package/dist/db/migrations/types.d.ts.map +1 -0
  71. package/dist/{board/client → db/migrations}/types.js +0 -1
  72. package/dist/db/migrations/types.js.map +1 -0
  73. package/dist/db/reset.d.ts.map +1 -1
  74. package/dist/db/reset.js +8 -3
  75. package/dist/db/reset.js.map +1 -1
  76. package/dist/db/schema.d.ts +4 -4
  77. package/dist/db/schema.d.ts.map +1 -1
  78. package/dist/db/schema.js +22 -207
  79. package/dist/db/schema.js.map +1 -1
  80. package/dist/db/types/repository.d.ts +192 -0
  81. package/dist/db/types/repository.d.ts.map +1 -0
  82. package/dist/db/types/repository.js +15 -0
  83. package/dist/db/types/repository.js.map +1 -0
  84. package/dist/models/Attachment.d.ts +25 -0
  85. package/dist/models/Attachment.d.ts.map +1 -0
  86. package/dist/models/Attachment.js +7 -0
  87. package/dist/models/Attachment.js.map +1 -0
  88. package/dist/services/AttachmentService.d.ts +62 -0
  89. package/dist/services/AttachmentService.d.ts.map +1 -0
  90. package/dist/services/AttachmentService.js +95 -0
  91. package/dist/services/AttachmentService.js.map +1 -0
  92. package/dist/services/ClaudeProcessService.d.ts +100 -0
  93. package/dist/services/ClaudeProcessService.d.ts.map +1 -0
  94. package/dist/services/ClaudeProcessService.js +278 -0
  95. package/dist/services/ClaudeProcessService.js.map +1 -0
  96. package/dist/services/CommentService.d.ts +3 -3
  97. package/dist/services/CommentService.d.ts.map +1 -1
  98. package/dist/services/CommentService.js +10 -70
  99. package/dist/services/CommentService.js.map +1 -1
  100. package/dist/services/ExportImportService.d.ts +3 -3
  101. package/dist/services/ExportImportService.d.ts.map +1 -1
  102. package/dist/services/ExportImportService.js +12 -16
  103. package/dist/services/ExportImportService.js.map +1 -1
  104. package/dist/services/MetadataService.d.ts +3 -3
  105. package/dist/services/MetadataService.d.ts.map +1 -1
  106. package/dist/services/MetadataService.js +9 -69
  107. package/dist/services/MetadataService.js.map +1 -1
  108. package/dist/services/TagService.d.ts +3 -3
  109. package/dist/services/TagService.d.ts.map +1 -1
  110. package/dist/services/TagService.js +9 -35
  111. package/dist/services/TagService.js.map +1 -1
  112. package/dist/services/TaskBlockService.d.ts +3 -3
  113. package/dist/services/TaskBlockService.d.ts.map +1 -1
  114. package/dist/services/TaskBlockService.js +9 -36
  115. package/dist/services/TaskBlockService.js.map +1 -1
  116. package/dist/services/TaskService.d.ts +3 -23
  117. package/dist/services/TaskService.d.ts.map +1 -1
  118. package/dist/services/TaskService.js +34 -186
  119. package/dist/services/TaskService.js.map +1 -1
  120. package/dist/services/TaskTagService.d.ts +3 -3
  121. package/dist/services/TaskTagService.d.ts.map +1 -1
  122. package/dist/services/TaskTagService.js +19 -83
  123. package/dist/services/TaskTagService.js.map +1 -1
  124. package/dist/utils/logger.d.ts +7 -0
  125. package/dist/utils/logger.d.ts.map +1 -0
  126. package/dist/utils/logger.js +18 -0
  127. package/dist/utils/logger.js.map +1 -0
  128. package/package.json +12 -5
  129. package/dist/board/boardScript.d.ts +0 -2
  130. package/dist/board/boardScript.d.ts.map +0 -1
  131. package/dist/board/boardScript.js +0 -1202
  132. package/dist/board/boardScript.js.map +0 -1
  133. package/dist/board/client/addTaskModal.d.ts +0 -2
  134. package/dist/board/client/addTaskModal.d.ts.map +0 -1
  135. package/dist/board/client/addTaskModal.js +0 -64
  136. package/dist/board/client/addTaskModal.js.map +0 -1
  137. package/dist/board/client/autoScroll.d.ts +0 -4
  138. package/dist/board/client/autoScroll.d.ts.map +0 -1
  139. package/dist/board/client/autoScroll.js +0 -59
  140. package/dist/board/client/autoScroll.js.map +0 -1
  141. package/dist/board/client/boardPolling.d.ts +0 -15
  142. package/dist/board/client/boardPolling.d.ts.map +0 -1
  143. package/dist/board/client/boardPolling.js +0 -144
  144. package/dist/board/client/boardPolling.js.map +0 -1
  145. package/dist/board/client/burgerMenu.d.ts +0 -2
  146. package/dist/board/client/burgerMenu.d.ts.map +0 -1
  147. package/dist/board/client/burgerMenu.js +0 -80
  148. package/dist/board/client/burgerMenu.js.map +0 -1
  149. package/dist/board/client/contextMenu.d.ts +0 -2
  150. package/dist/board/client/contextMenu.d.ts.map +0 -1
  151. package/dist/board/client/contextMenu.js +0 -52
  152. package/dist/board/client/contextMenu.js.map +0 -1
  153. package/dist/board/client/detailPanel.d.ts +0 -8
  154. package/dist/board/client/detailPanel.d.ts.map +0 -1
  155. package/dist/board/client/detailPanel.js +0 -565
  156. package/dist/board/client/detailPanel.js.map +0 -1
  157. package/dist/board/client/dragDrop.d.ts +0 -6
  158. package/dist/board/client/dragDrop.d.ts.map +0 -1
  159. package/dist/board/client/dragDrop.js +0 -82
  160. package/dist/board/client/dragDrop.js.map +0 -1
  161. package/dist/board/client/filters.d.ts +0 -6
  162. package/dist/board/client/filters.d.ts.map +0 -1
  163. package/dist/board/client/filters.js +0 -167
  164. package/dist/board/client/filters.js.map +0 -1
  165. package/dist/board/client/main.d.ts +0 -2
  166. package/dist/board/client/main.d.ts.map +0 -1
  167. package/dist/board/client/main.js +0 -20
  168. package/dist/board/client/main.js.map +0 -1
  169. package/dist/board/client/tags.d.ts +0 -6
  170. package/dist/board/client/tags.d.ts.map +0 -1
  171. package/dist/board/client/tags.js +0 -198
  172. package/dist/board/client/tags.js.map +0 -1
  173. package/dist/board/client/types.d.ts +0 -48
  174. package/dist/board/client/types.d.ts.map +0 -1
  175. package/dist/board/client/types.js.map +0 -1
  176. package/dist/board/client/utils.d.ts +0 -4
  177. package/dist/board/client/utils.d.ts.map +0 -1
  178. package/dist/board/client/utils.js +0 -44
  179. 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
- db;
11
- constructor(db) {
12
- this.db = db || (0, connection_1.getDatabase)();
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
- if (existing) {
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
- const db = this.db;
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
- const db = this.db;
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
- const db = this.db;
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
- const db = this.db;
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
- const db = this.db;
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":"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"}
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 { StorageProvider } from '../db/types/storage';
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 db;
9
- constructor(db?: StorageProvider);
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,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAkB;gBAEhB,EAAE,CAAC,EAAE,eAAe;IAGhC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG;IA4BrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAS9B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAStC;;;OAGG;IACH,QAAQ,IAAI,GAAG,EAAE;IASjB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG,IAAI;IAyCxD;;;;OAIG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAQ/B"}
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
- db;
12
- constructor(db) {
13
- this.db = db || (0, connection_1.getDatabase)();
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
- const stmt = db.prepare(`
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
- const db = this.db;
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
- const db = this.db;
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
- const db = this.db;
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
- const stmt = db.prepare(`
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
- const db = this.db;
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":"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"}
1
+ {"version":3,"file":"TagService.js","sourceRoot":"","sources":["../../src/services/TagService.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AACrD,gEAA6D;AAG7D;;;GAGG;AACH,MAAa,UAAU;IACb,OAAO,CAAiB;IAEhC,YAAY,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAA,8BAAiB,GAAE,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAqB;QAC7B,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,IAAA,mCAAgB,EAAC,KAAK,CAAC,CAAC;QACjD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,EAAU,EAAE,KAAqB;QACzC,yBAAyB;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iCAAiC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;CACF;AAtGD,gCAsGC"}
@@ -1,14 +1,14 @@
1
1
  import { TaskBlock, CreateTaskBlockInput } from '../models';
2
2
  import { TaskService } from './TaskService';
3
- import { StorageProvider } from '../db/types/storage';
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 db;
9
+ private backend;
10
10
  private taskService;
11
- constructor(db?: StorageProvider, taskService?: TaskService);
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,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,WAAW,CAAc;gBAErB,EAAE,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,WAAW;IAK3D;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS;IAuChD;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAa1D;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAY9C;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAY9C;;;;OAIG;IACH,YAAY,IAAI,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAO3E;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;CAiB9B"}
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
- db;
11
+ backend;
12
12
  taskService;
13
- constructor(db, taskService) {
14
- this.db = db || (0, connection_1.getDatabase)();
15
- this.taskService = taskService || new TaskService_1.TaskService(this.db);
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
- const stmt = db.prepare(`
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
- const db = this.db;
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
- const db = this.db;
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
- const db = this.db;
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
- const db = this.db;
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":"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"}
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 { StorageProvider } from '../db/types/storage';
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 db;
13
- constructor(db?: StorageProvider);
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,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,4EAA6E,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAQ7D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAkB;gBAEhB,EAAE,CAAC,EAAE,eAAe;IAIhC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAuCxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAShC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8CxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;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;IAST;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IA8B3D;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAc/B;;;OAGG;IACH,oBAAoB,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;IA8BlD;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,EAAuB,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,EAAE;IAuBlH;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE;IAuB1F;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAMvC;;;;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"}
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"}