obsidian-accomplishments-mcp 0.1.9 → 0.1.11

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 (269) hide show
  1. package/README.md +154 -182
  2. package/dist/index.js +207 -38
  3. package/dist/index.js.map +1 -1
  4. package/dist/integration.test.d.ts +8 -0
  5. package/dist/integration.test.d.ts.map +1 -0
  6. package/dist/integration.test.js +979 -0
  7. package/dist/integration.test.js.map +1 -0
  8. package/dist/models/types.d.ts +1 -2
  9. package/dist/models/types.d.ts.map +1 -1
  10. package/dist/models/types.js.map +1 -1
  11. package/dist/models/v2-types.d.ts +460 -0
  12. package/dist/models/v2-types.d.ts.map +1 -0
  13. package/dist/models/v2-types.js +137 -0
  14. package/dist/models/v2-types.js.map +1 -0
  15. package/dist/models/v2-types.test.d.ts +5 -0
  16. package/dist/models/v2-types.test.d.ts.map +1 -0
  17. package/dist/models/v2-types.test.js +133 -0
  18. package/dist/models/v2-types.test.js.map +1 -0
  19. package/dist/parsers/canvas-parser.d.ts +1 -1
  20. package/dist/parsers/canvas-parser.d.ts.map +1 -1
  21. package/dist/parsers/canvas-parser.js +1 -1
  22. package/dist/parsers/canvas-parser.js.map +1 -1
  23. package/dist/parsers/markdown-parser.js +9 -9
  24. package/dist/parsers/markdown-parser.js.map +1 -1
  25. package/dist/services/v2/archive-manager.d.ts +96 -0
  26. package/dist/services/v2/archive-manager.d.ts.map +1 -0
  27. package/dist/services/v2/archive-manager.js +281 -0
  28. package/dist/services/v2/archive-manager.js.map +1 -0
  29. package/dist/services/v2/canvas-manager.d.ts +155 -0
  30. package/dist/services/v2/canvas-manager.d.ts.map +1 -0
  31. package/dist/services/v2/canvas-manager.js +540 -0
  32. package/dist/services/v2/canvas-manager.js.map +1 -0
  33. package/dist/services/v2/canvas-manager.test.d.ts +5 -0
  34. package/dist/services/v2/canvas-manager.test.d.ts.map +1 -0
  35. package/dist/services/v2/canvas-manager.test.js +327 -0
  36. package/dist/services/v2/canvas-manager.test.js.map +1 -0
  37. package/dist/services/v2/cascade-manager.d.ts +54 -0
  38. package/dist/services/v2/cascade-manager.d.ts.map +1 -0
  39. package/dist/services/v2/cascade-manager.js +220 -0
  40. package/dist/services/v2/cascade-manager.js.map +1 -0
  41. package/dist/services/v2/cycle-detector.d.ts +76 -0
  42. package/dist/services/v2/cycle-detector.d.ts.map +1 -0
  43. package/dist/services/v2/cycle-detector.js +183 -0
  44. package/dist/services/v2/cycle-detector.js.map +1 -0
  45. package/dist/services/v2/cycle-detector.test.d.ts +7 -0
  46. package/dist/services/v2/cycle-detector.test.d.ts.map +1 -0
  47. package/dist/services/v2/cycle-detector.test.js +125 -0
  48. package/dist/services/v2/cycle-detector.test.js.map +1 -0
  49. package/dist/services/v2/entity-parser.d.ts +54 -0
  50. package/dist/services/v2/entity-parser.d.ts.map +1 -0
  51. package/dist/services/v2/entity-parser.js +418 -0
  52. package/dist/services/v2/entity-parser.js.map +1 -0
  53. package/dist/services/v2/entity-parser.test.d.ts +5 -0
  54. package/dist/services/v2/entity-parser.test.d.ts.map +1 -0
  55. package/dist/services/v2/entity-parser.test.js +637 -0
  56. package/dist/services/v2/entity-parser.test.js.map +1 -0
  57. package/dist/services/v2/entity-serializer.d.ts +94 -0
  58. package/dist/services/v2/entity-serializer.d.ts.map +1 -0
  59. package/dist/services/v2/entity-serializer.js +583 -0
  60. package/dist/services/v2/entity-serializer.js.map +1 -0
  61. package/dist/services/v2/entity-serializer.test.d.ts +5 -0
  62. package/dist/services/v2/entity-serializer.test.d.ts.map +1 -0
  63. package/dist/services/v2/entity-serializer.test.js +241 -0
  64. package/dist/services/v2/entity-serializer.test.js.map +1 -0
  65. package/dist/services/v2/entity-validator.d.ts +65 -0
  66. package/dist/services/v2/entity-validator.d.ts.map +1 -0
  67. package/dist/services/v2/entity-validator.js +573 -0
  68. package/dist/services/v2/entity-validator.js.map +1 -0
  69. package/dist/services/v2/entity-validator.test.d.ts +5 -0
  70. package/dist/services/v2/entity-validator.test.d.ts.map +1 -0
  71. package/dist/services/v2/entity-validator.test.js +519 -0
  72. package/dist/services/v2/entity-validator.test.js.map +1 -0
  73. package/dist/services/v2/file-manager.d.ts +73 -0
  74. package/dist/services/v2/file-manager.d.ts.map +1 -0
  75. package/dist/services/v2/file-manager.js +310 -0
  76. package/dist/services/v2/file-manager.js.map +1 -0
  77. package/dist/services/v2/file-manager.test.d.ts +5 -0
  78. package/dist/services/v2/file-manager.test.d.ts.map +1 -0
  79. package/dist/services/v2/file-manager.test.js +339 -0
  80. package/dist/services/v2/file-manager.test.js.map +1 -0
  81. package/dist/services/v2/index-manager.d.ts +68 -0
  82. package/dist/services/v2/index-manager.d.ts.map +1 -0
  83. package/dist/services/v2/index-manager.js +228 -0
  84. package/dist/services/v2/index-manager.js.map +1 -0
  85. package/dist/services/v2/index-manager.test.d.ts +5 -0
  86. package/dist/services/v2/index-manager.test.d.ts.map +1 -0
  87. package/dist/services/v2/index-manager.test.js +386 -0
  88. package/dist/services/v2/index-manager.test.js.map +1 -0
  89. package/dist/services/v2/index-service.d.ts +82 -0
  90. package/dist/services/v2/index-service.d.ts.map +1 -0
  91. package/dist/services/v2/index-service.js +274 -0
  92. package/dist/services/v2/index-service.js.map +1 -0
  93. package/dist/services/v2/index-service.test.d.ts +5 -0
  94. package/dist/services/v2/index-service.test.d.ts.map +1 -0
  95. package/dist/services/v2/index-service.test.js +117 -0
  96. package/dist/services/v2/index-service.test.js.map +1 -0
  97. package/dist/services/v2/lifecycle-manager.d.ts +59 -0
  98. package/dist/services/v2/lifecycle-manager.d.ts.map +1 -0
  99. package/dist/services/v2/lifecycle-manager.js +310 -0
  100. package/dist/services/v2/lifecycle-manager.js.map +1 -0
  101. package/dist/services/v2/lifecycle-manager.test.d.ts +5 -0
  102. package/dist/services/v2/lifecycle-manager.test.d.ts.map +1 -0
  103. package/dist/services/v2/lifecycle-manager.test.js +141 -0
  104. package/dist/services/v2/lifecycle-manager.test.js.map +1 -0
  105. package/dist/services/v2/path-resolver.d.ts +64 -0
  106. package/dist/services/v2/path-resolver.d.ts.map +1 -0
  107. package/dist/services/v2/path-resolver.js +174 -0
  108. package/dist/services/v2/path-resolver.js.map +1 -0
  109. package/dist/services/v2/progress-computer.d.ts +46 -0
  110. package/dist/services/v2/progress-computer.d.ts.map +1 -0
  111. package/dist/services/v2/progress-computer.js +200 -0
  112. package/dist/services/v2/progress-computer.js.map +1 -0
  113. package/dist/services/v2/search-service.d.ts +68 -0
  114. package/dist/services/v2/search-service.d.ts.map +1 -0
  115. package/dist/services/v2/search-service.js +194 -0
  116. package/dist/services/v2/search-service.js.map +1 -0
  117. package/dist/services/v2/transitive-dependency-remover.d.ts +54 -0
  118. package/dist/services/v2/transitive-dependency-remover.d.ts.map +1 -0
  119. package/dist/services/v2/transitive-dependency-remover.js +156 -0
  120. package/dist/services/v2/transitive-dependency-remover.js.map +1 -0
  121. package/dist/services/v2/transitive-dependency-remover.test.d.ts +7 -0
  122. package/dist/services/v2/transitive-dependency-remover.test.d.ts.map +1 -0
  123. package/dist/services/v2/transitive-dependency-remover.test.js +119 -0
  124. package/dist/services/v2/transitive-dependency-remover.test.js.map +1 -0
  125. package/dist/services/v2/v2-runtime.d.ts +374 -0
  126. package/dist/services/v2/v2-runtime.d.ts.map +1 -0
  127. package/dist/services/v2/v2-runtime.js +1908 -0
  128. package/dist/services/v2/v2-runtime.js.map +1 -0
  129. package/dist/services/v2/v2-runtime.test.d.ts +5 -0
  130. package/dist/services/v2/v2-runtime.test.d.ts.map +1 -0
  131. package/dist/services/v2/v2-runtime.test.js +658 -0
  132. package/dist/services/v2/v2-runtime.test.js.map +1 -0
  133. package/dist/services/v2/workstream-normalizer.d.ts +59 -0
  134. package/dist/services/v2/workstream-normalizer.d.ts.map +1 -0
  135. package/dist/services/v2/workstream-normalizer.js +137 -0
  136. package/dist/services/v2/workstream-normalizer.js.map +1 -0
  137. package/dist/services/v2/workstream-normalizer.test.d.ts +7 -0
  138. package/dist/services/v2/workstream-normalizer.test.d.ts.map +1 -0
  139. package/dist/services/v2/workstream-normalizer.test.js +130 -0
  140. package/dist/services/v2/workstream-normalizer.test.js.map +1 -0
  141. package/dist/test-runner.d.ts +4 -1
  142. package/dist/test-runner.d.ts.map +1 -1
  143. package/dist/test-runner.js +44 -249
  144. package/dist/test-runner.js.map +1 -1
  145. package/dist/tools/batch-operations-tools.d.ts +54 -0
  146. package/dist/tools/batch-operations-tools.d.ts.map +1 -0
  147. package/dist/tools/batch-operations-tools.js +370 -0
  148. package/dist/tools/batch-operations-tools.js.map +1 -0
  149. package/dist/tools/decision-document-tools.d.ts +78 -0
  150. package/dist/tools/decision-document-tools.d.ts.map +1 -0
  151. package/dist/tools/decision-document-tools.js +260 -0
  152. package/dist/tools/decision-document-tools.js.map +1 -0
  153. package/dist/tools/entity-management-tools.d.ts +79 -0
  154. package/dist/tools/entity-management-tools.d.ts.map +1 -0
  155. package/dist/tools/entity-management-tools.js +851 -0
  156. package/dist/tools/entity-management-tools.js.map +1 -0
  157. package/dist/tools/entity-management-tools.test.d.ts +5 -0
  158. package/dist/tools/entity-management-tools.test.d.ts.map +1 -0
  159. package/dist/tools/entity-management-tools.test.js +530 -0
  160. package/dist/tools/entity-management-tools.test.js.map +1 -0
  161. package/dist/tools/index.d.ts +15 -271
  162. package/dist/tools/index.d.ts.map +1 -1
  163. package/dist/tools/index.js +510 -47
  164. package/dist/tools/index.js.map +1 -1
  165. package/dist/tools/index.test.d.ts +8 -0
  166. package/dist/tools/index.test.d.ts.map +1 -0
  167. package/dist/tools/index.test.js +429 -0
  168. package/dist/tools/index.test.js.map +1 -0
  169. package/dist/tools/project-understanding-tools.d.ts +75 -0
  170. package/dist/tools/project-understanding-tools.d.ts.map +1 -0
  171. package/dist/tools/project-understanding-tools.js +751 -0
  172. package/dist/tools/project-understanding-tools.js.map +1 -0
  173. package/dist/tools/search-navigation-tools.d.ts +77 -0
  174. package/dist/tools/search-navigation-tools.d.ts.map +1 -0
  175. package/dist/tools/search-navigation-tools.js +379 -0
  176. package/dist/tools/search-navigation-tools.js.map +1 -0
  177. package/dist/tools/tool-types.d.ts +703 -0
  178. package/dist/tools/tool-types.d.ts.map +1 -0
  179. package/dist/tools/tool-types.js +7 -0
  180. package/dist/tools/tool-types.js.map +1 -0
  181. package/dist/utils/config.d.ts +0 -4
  182. package/dist/utils/config.d.ts.map +1 -1
  183. package/dist/utils/config.js +2 -19
  184. package/dist/utils/config.js.map +1 -1
  185. package/package.json +16 -1
  186. package/dist/services/accomplishment-service.d.ts +0 -33
  187. package/dist/services/accomplishment-service.d.ts.map +0 -1
  188. package/dist/services/accomplishment-service.js +0 -293
  189. package/dist/services/accomplishment-service.js.map +0 -1
  190. package/dist/services/canvas-service.d.ts +0 -96
  191. package/dist/services/canvas-service.d.ts.map +0 -1
  192. package/dist/services/canvas-service.js +0 -231
  193. package/dist/services/canvas-service.js.map +0 -1
  194. package/dist/services/context-doc-service.d.ts +0 -70
  195. package/dist/services/context-doc-service.d.ts.map +0 -1
  196. package/dist/services/context-doc-service.js +0 -229
  197. package/dist/services/context-doc-service.js.map +0 -1
  198. package/dist/services/dependency-service.d.ts +0 -22
  199. package/dist/services/dependency-service.d.ts.map +0 -1
  200. package/dist/services/dependency-service.js +0 -99
  201. package/dist/services/dependency-service.js.map +0 -1
  202. package/dist/services/status-indicator-service.d.ts +0 -40
  203. package/dist/services/status-indicator-service.d.ts.map +0 -1
  204. package/dist/services/status-indicator-service.js +0 -173
  205. package/dist/services/status-indicator-service.js.map +0 -1
  206. package/dist/services/task-service.d.ts +0 -32
  207. package/dist/services/task-service.d.ts.map +0 -1
  208. package/dist/services/task-service.js +0 -152
  209. package/dist/services/task-service.js.map +0 -1
  210. package/dist/test-real-vault.d.ts +0 -6
  211. package/dist/test-real-vault.d.ts.map +0 -1
  212. package/dist/test-real-vault.js +0 -30
  213. package/dist/test-real-vault.js.map +0 -1
  214. package/dist/tools/batch-operations.d.ts +0 -246
  215. package/dist/tools/batch-operations.d.ts.map +0 -1
  216. package/dist/tools/batch-operations.js +0 -235
  217. package/dist/tools/batch-operations.js.map +0 -1
  218. package/dist/tools/get-accomplishment.d.ts +0 -26
  219. package/dist/tools/get-accomplishment.d.ts.map +0 -1
  220. package/dist/tools/get-accomplishment.js +0 -53
  221. package/dist/tools/get-accomplishment.js.map +0 -1
  222. package/dist/tools/get-accomplishments-graph.d.ts +0 -26
  223. package/dist/tools/get-accomplishments-graph.d.ts.map +0 -1
  224. package/dist/tools/get-accomplishments-graph.js +0 -137
  225. package/dist/tools/get-accomplishments-graph.js.map +0 -1
  226. package/dist/tools/get-blocked-items.d.ts +0 -15
  227. package/dist/tools/get-blocked-items.d.ts.map +0 -1
  228. package/dist/tools/get-blocked-items.js +0 -73
  229. package/dist/tools/get-blocked-items.js.map +0 -1
  230. package/dist/tools/get-current-work.d.ts +0 -15
  231. package/dist/tools/get-current-work.d.ts.map +0 -1
  232. package/dist/tools/get-current-work.js +0 -68
  233. package/dist/tools/get-current-work.js.map +0 -1
  234. package/dist/tools/get-project-status.d.ts +0 -26
  235. package/dist/tools/get-project-status.d.ts.map +0 -1
  236. package/dist/tools/get-project-status.js +0 -98
  237. package/dist/tools/get-project-status.js.map +0 -1
  238. package/dist/tools/get-ready-to-start.d.ts +0 -15
  239. package/dist/tools/get-ready-to-start.d.ts.map +0 -1
  240. package/dist/tools/get-ready-to-start.js +0 -47
  241. package/dist/tools/get-ready-to-start.js.map +0 -1
  242. package/dist/tools/list-accomplishments.d.ts +0 -34
  243. package/dist/tools/list-accomplishments.d.ts.map +0 -1
  244. package/dist/tools/list-accomplishments.js +0 -34
  245. package/dist/tools/list-accomplishments.js.map +0 -1
  246. package/dist/tools/manage-accomplishment.d.ts +0 -147
  247. package/dist/tools/manage-accomplishment.d.ts.map +0 -1
  248. package/dist/tools/manage-accomplishment.js +0 -153
  249. package/dist/tools/manage-accomplishment.js.map +0 -1
  250. package/dist/tools/manage-dependency.d.ts +0 -41
  251. package/dist/tools/manage-dependency.d.ts.map +0 -1
  252. package/dist/tools/manage-dependency.js +0 -66
  253. package/dist/tools/manage-dependency.js.map +0 -1
  254. package/dist/tools/manage-task.d.ts +0 -119
  255. package/dist/tools/manage-task.d.ts.map +0 -1
  256. package/dist/tools/manage-task.js +0 -126
  257. package/dist/tools/manage-task.js.map +0 -1
  258. package/dist/tools/reconcile-canvas.d.ts +0 -33
  259. package/dist/tools/reconcile-canvas.d.ts.map +0 -1
  260. package/dist/tools/reconcile-canvas.js +0 -41
  261. package/dist/tools/reconcile-canvas.js.map +0 -1
  262. package/dist/tools/set-work-focus.d.ts +0 -48
  263. package/dist/tools/set-work-focus.d.ts.map +0 -1
  264. package/dist/tools/set-work-focus.js +0 -78
  265. package/dist/tools/set-work-focus.js.map +0 -1
  266. package/dist/tools/sync-dependencies.d.ts +0 -33
  267. package/dist/tools/sync-dependencies.d.ts.map +0 -1
  268. package/dist/tools/sync-dependencies.js +0 -144
  269. package/dist/tools/sync-dependencies.js.map +0 -1
@@ -0,0 +1,418 @@
1
+ /**
2
+ * V2 Entity Parser
3
+ *
4
+ * Parses markdown files into Entity objects.
5
+ */
6
+ import { ValidationError, getEntityTypeFromId, } from '../../models/v2-types.js';
7
+ // =============================================================================
8
+ // Entity Parser Class
9
+ // =============================================================================
10
+ /**
11
+ * Parses markdown files with YAML frontmatter into Entity objects.
12
+ */
13
+ export class EntityParser {
14
+ // ---------------------------------------------------------------------------
15
+ // Main Parse Method
16
+ // ---------------------------------------------------------------------------
17
+ /** Parse markdown content into an Entity */
18
+ parse(content, filePath) {
19
+ const errors = [];
20
+ // Extract frontmatter and body
21
+ const { frontmatter, body } = this.extractFrontmatter(content);
22
+ // Get entity ID from frontmatter or filename
23
+ const id = this.extractId(frontmatter, filePath);
24
+ if (!id) {
25
+ throw new ValidationError('Entity ID not found in frontmatter or filename');
26
+ }
27
+ // Determine entity type
28
+ const type = getEntityTypeFromId(id);
29
+ if (!type) {
30
+ throw new ValidationError(`Invalid entity ID format: ${id}`);
31
+ }
32
+ // Parse based on type
33
+ let entity;
34
+ switch (type) {
35
+ case 'milestone':
36
+ entity = this.parseMilestone(id, frontmatter, body, filePath, errors);
37
+ break;
38
+ case 'story':
39
+ entity = this.parseStory(id, frontmatter, body, filePath, errors);
40
+ break;
41
+ case 'task':
42
+ entity = this.parseTask(id, frontmatter, body, filePath, errors);
43
+ break;
44
+ case 'decision':
45
+ entity = this.parseDecision(id, frontmatter, body, filePath, errors);
46
+ break;
47
+ case 'document':
48
+ entity = this.parseDocument(id, frontmatter, body, filePath, errors);
49
+ break;
50
+ case 'feature':
51
+ entity = this.parseFeature(id, frontmatter, body, filePath, errors);
52
+ break;
53
+ default:
54
+ throw new ValidationError(`Unknown entity type: ${type}`);
55
+ }
56
+ return { entity, frontmatter, content: body, errors };
57
+ }
58
+ // ---------------------------------------------------------------------------
59
+ // Frontmatter Extraction
60
+ // ---------------------------------------------------------------------------
61
+ /** Extract YAML frontmatter from markdown content */
62
+ extractFrontmatter(content) {
63
+ const match = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
64
+ if (!match) {
65
+ return { frontmatter: {}, body: content };
66
+ }
67
+ const yamlContent = match[1];
68
+ const body = match[2] || '';
69
+ // Simple YAML parser (handles basic key: value pairs)
70
+ const frontmatter = {};
71
+ const lines = yamlContent.split('\n');
72
+ let currentKey = '';
73
+ let currentArray = null;
74
+ for (const line of lines) {
75
+ // Skip empty lines and comments
76
+ if (!line.trim() || line.trim().startsWith('#'))
77
+ continue;
78
+ // Check for array item
79
+ if (line.match(/^\s+-\s+/)) {
80
+ const value = line.replace(/^\s+-\s+/, '').trim();
81
+ if (currentArray) {
82
+ currentArray.push(this.parseValue(value));
83
+ }
84
+ continue;
85
+ }
86
+ // Check for key: value
87
+ const kvMatch = line.match(/^(\w+):\s*(.*)$/);
88
+ if (kvMatch) {
89
+ // Save previous array if any
90
+ if (currentArray && currentKey) {
91
+ frontmatter[currentKey] = currentArray;
92
+ currentArray = null;
93
+ }
94
+ currentKey = kvMatch[1];
95
+ const value = kvMatch[2].trim();
96
+ if (value === '' || value === '[]') {
97
+ // Start of array or empty array
98
+ currentArray = [];
99
+ }
100
+ else {
101
+ frontmatter[currentKey] = this.parseValue(value);
102
+ }
103
+ }
104
+ }
105
+ // Save final array if any
106
+ if (currentArray && currentKey) {
107
+ frontmatter[currentKey] = currentArray;
108
+ }
109
+ return { frontmatter, body };
110
+ }
111
+ /** Parse a YAML value */
112
+ parseValue(value) {
113
+ // Remove quotes
114
+ if ((value.startsWith('"') && value.endsWith('"')) ||
115
+ (value.startsWith("'") && value.endsWith("'"))) {
116
+ value = value.slice(1, -1);
117
+ }
118
+ // Check if it's a string-wrapped array like "[M-001, M-002]"
119
+ // This handles corrupted YAML where arrays were serialized as strings
120
+ if (value.startsWith('[') && value.endsWith(']')) {
121
+ return this.parseInlineArray(value);
122
+ }
123
+ // Boolean
124
+ if (value === 'true')
125
+ return true;
126
+ if (value === 'false')
127
+ return false;
128
+ // Null
129
+ if (value === 'null' || value === '~')
130
+ return null;
131
+ // Number
132
+ if (/^-?\d+(\.\d+)?$/.test(value)) {
133
+ return parseFloat(value);
134
+ }
135
+ return value;
136
+ }
137
+ /** Parse an inline YAML array like [M-001, M-002] */
138
+ parseInlineArray(value) {
139
+ // Remove brackets
140
+ const inner = value.slice(1, -1).trim();
141
+ if (!inner)
142
+ return [];
143
+ // Split by comma and clean up each element
144
+ const elements = inner.split(',').map(el => {
145
+ let cleaned = el.trim();
146
+ // Remove quotes if present
147
+ if ((cleaned.startsWith('"') && cleaned.endsWith('"')) ||
148
+ (cleaned.startsWith("'") && cleaned.endsWith("'"))) {
149
+ cleaned = cleaned.slice(1, -1);
150
+ }
151
+ return cleaned;
152
+ }).filter(el => el.length > 0);
153
+ // Validate and extract entity IDs
154
+ // This handles corrupted arrays by extracting only valid entity IDs
155
+ return this.extractValidEntityIds(elements);
156
+ }
157
+ /** Extract valid entity IDs from an array of strings */
158
+ extractValidEntityIds(elements) {
159
+ const validIds = [];
160
+ // Pattern includes all entity types: M (milestone), S (story), T (task), DEC (decision), DOC (document), F (feature)
161
+ const idPattern = /^(M-\d{3}|S-\d{3}|T-\d{3}|DEC-\d{3}|DOC-\d{3}|F-\d{3})$/;
162
+ for (const el of elements) {
163
+ if (idPattern.test(el)) {
164
+ validIds.push(el);
165
+ }
166
+ else {
167
+ // Try to extract valid IDs from corrupted elements
168
+ // This handles cases like character-by-character corruption
169
+ const matches = el.match(/(M-\d{3}|S-\d{3}|T-\d{3}|DEC-\d{3}|DOC-\d{3}|F-\d{3})/g);
170
+ if (matches) {
171
+ validIds.push(...matches);
172
+ }
173
+ }
174
+ }
175
+ // Remove duplicates while preserving order
176
+ return [...new Set(validIds)];
177
+ }
178
+ // ---------------------------------------------------------------------------
179
+ // ID Extraction
180
+ // ---------------------------------------------------------------------------
181
+ /** Extract entity ID from frontmatter (ID is required in frontmatter) */
182
+ extractId(frontmatter, _filePath) {
183
+ // ID must be in frontmatter - filenames no longer contain IDs
184
+ if (frontmatter.id) {
185
+ return frontmatter.id;
186
+ }
187
+ return null;
188
+ }
189
+ // ---------------------------------------------------------------------------
190
+ // Entity Type Parsers
191
+ // ---------------------------------------------------------------------------
192
+ parseMilestone(id, fm, body, filePath, _errors) {
193
+ // Extract objective from body if not in frontmatter
194
+ // The serializer writes objective directly to body (not as a section header)
195
+ // So we use the body content if no frontmatter objective exists
196
+ const objective = fm.objective || this.extractBodyContent(body);
197
+ return {
198
+ id: id, // Cast to specific ID type
199
+ type: 'milestone',
200
+ title: fm.title || this.extractTitleFromBody(body) || 'Untitled',
201
+ workstream: fm.workstream || 'default',
202
+ status: this.validateStatus(fm.status, ['Not Started', 'In Progress', 'Completed', 'Blocked'], 'Not Started'),
203
+ priority: this.validatePriority(fm.priority),
204
+ objective,
205
+ target_date: fm.target_date,
206
+ owner: fm.owner,
207
+ depends_on: fm.depends_on || [],
208
+ implements: fm.implements,
209
+ success_criteria: fm.success_criteria,
210
+ archived: fm.archived || false,
211
+ canvas_source: fm.canvas_source || '',
212
+ vault_path: filePath,
213
+ cssclasses: fm.cssclasses || [],
214
+ created_at: fm.created_at || new Date().toISOString(),
215
+ updated_at: fm.updated_at || new Date().toISOString(),
216
+ };
217
+ }
218
+ parseStory(id, fm, body, filePath, _errors) {
219
+ // Extract outcome and notes from body sections if not in frontmatter
220
+ const outcome = fm.outcome || this.extractSection(body, 'Outcome');
221
+ const notes = fm.notes || this.extractSection(body, 'Notes');
222
+ // Migration: if workstream is missing but effort exists, use effort as workstream
223
+ const workstream = fm.workstream || fm.effort || 'default';
224
+ return {
225
+ id: id, // Cast to specific ID type
226
+ type: 'story',
227
+ title: fm.title || this.extractTitleFromBody(body) || 'Untitled',
228
+ workstream,
229
+ status: this.validateStatus(fm.status, ['Not Started', 'In Progress', 'Completed', 'Blocked'], 'Not Started'),
230
+ priority: this.validatePriority(fm.priority),
231
+ parent: fm.parent,
232
+ outcome,
233
+ tasks: fm.tasks,
234
+ depends_on: fm.depends_on || [],
235
+ implements: fm.implements,
236
+ acceptance_criteria: fm.acceptance_criteria,
237
+ notes,
238
+ archived: fm.archived || false,
239
+ canvas_source: fm.canvas_source || '',
240
+ vault_path: filePath,
241
+ cssclasses: fm.cssclasses || [],
242
+ created_at: fm.created_at || new Date().toISOString(),
243
+ updated_at: fm.updated_at || new Date().toISOString(),
244
+ };
245
+ }
246
+ parseTask(id, fm, body, filePath, _errors) {
247
+ // Extract description, technical_notes, and notes from body sections if not in frontmatter
248
+ const description = fm.description || this.extractSection(body, 'Description');
249
+ const technical_notes = fm.technical_notes || this.extractSection(body, 'Technical Notes');
250
+ const notes = fm.notes || this.extractSection(body, 'Notes');
251
+ return {
252
+ id: id, // Cast to specific ID type
253
+ type: 'task',
254
+ title: fm.title || this.extractTitleFromBody(body) || 'Untitled',
255
+ workstream: fm.workstream || 'default',
256
+ status: this.validateStatus(fm.status, ['Not Started', 'In Progress', 'Completed', 'Blocked'], 'Not Started'),
257
+ parent: fm.parent,
258
+ depends_on: fm.depends_on,
259
+ goal: fm.goal || '',
260
+ estimate_hrs: fm.estimate_hrs,
261
+ actual_hrs: fm.actual_hrs,
262
+ assignee: fm.assignee,
263
+ description,
264
+ technical_notes,
265
+ notes,
266
+ archived: fm.archived || false,
267
+ canvas_source: fm.canvas_source || '',
268
+ vault_path: filePath,
269
+ cssclasses: fm.cssclasses || [],
270
+ created_at: fm.created_at || new Date().toISOString(),
271
+ updated_at: fm.updated_at || new Date().toISOString(),
272
+ };
273
+ }
274
+ parseDecision(id, fm, body, filePath, _errors) {
275
+ // Extract context, decision, and rationale from body sections
276
+ // (they may also be in frontmatter for backwards compatibility)
277
+ const context = fm.context || this.extractSection(body, 'Context');
278
+ const decision = fm.decision || this.extractSection(body, 'Decision');
279
+ const rationale = fm.rationale || this.extractSection(body, 'Rationale');
280
+ // Migration: if affects is missing but blocks exists, use blocks as affects
281
+ const affects = fm.affects || fm.blocks;
282
+ return {
283
+ id: id, // Cast to specific ID type
284
+ type: 'decision',
285
+ title: fm.title || this.extractTitleFromBody(body) || 'Untitled',
286
+ workstream: fm.workstream || 'default',
287
+ status: this.validateStatus(fm.status, ['Pending', 'Decided', 'Superseded'], 'Pending'),
288
+ context,
289
+ decision,
290
+ rationale,
291
+ alternatives: fm.alternatives,
292
+ decided_by: fm.decided_by,
293
+ decided_on: fm.decided_on,
294
+ supersedes: fm.supersedes,
295
+ depends_on: fm.depends_on,
296
+ superseded_by: fm.superseded_by,
297
+ affects,
298
+ archived: fm.archived || false,
299
+ canvas_source: fm.canvas_source || '',
300
+ vault_path: filePath,
301
+ cssclasses: fm.cssclasses || [],
302
+ created_at: fm.created_at || new Date().toISOString(),
303
+ updated_at: fm.updated_at || new Date().toISOString(),
304
+ };
305
+ }
306
+ parseDocument(id, fm, body, filePath, _errors) {
307
+ return {
308
+ id: id, // Cast to specific ID type
309
+ type: 'document',
310
+ title: fm.title || this.extractTitleFromBody(body) || 'Untitled',
311
+ workstream: fm.workstream || 'default',
312
+ status: this.validateStatus(fm.status, ['Draft', 'Review', 'Approved', 'Superseded'], 'Draft'),
313
+ doc_type: fm.doc_type || 'spec',
314
+ version: fm.version,
315
+ owner: fm.owner,
316
+ implementation_context: fm.implementation_context,
317
+ implemented_by: fm.implemented_by,
318
+ previous_version: fm.previous_version,
319
+ documents: fm.documents,
320
+ content: body,
321
+ archived: fm.archived || false,
322
+ canvas_source: fm.canvas_source || '',
323
+ vault_path: filePath,
324
+ cssclasses: fm.cssclasses || [],
325
+ created_at: fm.created_at || new Date().toISOString(),
326
+ updated_at: fm.updated_at || new Date().toISOString(),
327
+ };
328
+ }
329
+ parseFeature(id, fm, body, filePath, _errors) {
330
+ return {
331
+ id: id, // Cast to specific ID type
332
+ type: 'feature',
333
+ title: fm.title || this.extractTitleFromBody(body) || 'Untitled',
334
+ workstream: fm.workstream || 'default',
335
+ status: this.validateStatus(fm.status, ['Planned', 'In Progress', 'Complete', 'Deferred'], 'Planned'),
336
+ user_story: fm.user_story || '',
337
+ tier: this.validateTier(fm.tier),
338
+ phase: this.validatePhase(fm.phase),
339
+ implemented_by: fm.implemented_by,
340
+ documented_by: fm.documented_by,
341
+ decided_by: fm.decided_by,
342
+ test_refs: fm.test_refs || [],
343
+ content: body,
344
+ archived: fm.archived || false,
345
+ canvas_source: fm.canvas_source || '',
346
+ vault_path: filePath,
347
+ cssclasses: fm.cssclasses || [],
348
+ created_at: fm.created_at || new Date().toISOString(),
349
+ updated_at: fm.updated_at || new Date().toISOString(),
350
+ };
351
+ }
352
+ // ---------------------------------------------------------------------------
353
+ // Validation Helpers
354
+ // ---------------------------------------------------------------------------
355
+ validateStatus(value, valid, defaultValue) {
356
+ if (valid.includes(value))
357
+ return value;
358
+ return defaultValue;
359
+ }
360
+ validatePriority(value) {
361
+ const valid = ['Critical', 'High', 'Medium', 'Low'];
362
+ return valid.includes(value) ? value : 'Medium';
363
+ }
364
+ validateTier(value) {
365
+ const valid = ['OSS', 'Premium'];
366
+ return valid.includes(value) ? value : 'OSS';
367
+ }
368
+ validatePhase(value) {
369
+ const valid = ['MVP', '0', '1', '2', '3', '4', '5'];
370
+ // Convert to string to handle YAML parsing numbers (e.g., phase: 4 vs phase: "4")
371
+ const strValue = value !== undefined && value !== null ? String(value) : undefined;
372
+ if (strValue && valid.includes(strValue)) {
373
+ return strValue;
374
+ }
375
+ return 'MVP';
376
+ }
377
+ extractTitleFromBody(body) {
378
+ const match = body.match(/^#\s+(.+)$/m);
379
+ return match ? match[1].trim() : null;
380
+ }
381
+ /**
382
+ * Extract content from a markdown section (## SectionName).
383
+ * Returns the content between this section header and the next section header (or end of file).
384
+ */
385
+ extractSection(body, sectionName) {
386
+ // Match ## SectionName (case-insensitive)
387
+ const regex = new RegExp(`^##\\s+${sectionName}\\s*$`, 'im');
388
+ const match = body.match(regex);
389
+ if (!match || match.index === undefined)
390
+ return undefined;
391
+ // Find the start of content (after the header line)
392
+ const startIndex = match.index + match[0].length;
393
+ const afterHeader = body.slice(startIndex);
394
+ // Find the next section header (## or end of content)
395
+ const nextSectionMatch = afterHeader.match(/^##\s+/m);
396
+ const endIndex = nextSectionMatch?.index ?? afterHeader.length;
397
+ // Extract and trim the content
398
+ const content = afterHeader.slice(0, endIndex).trim();
399
+ return content || undefined;
400
+ }
401
+ /**
402
+ * Extract body content before any section headers.
403
+ * Used for milestone objective which is written directly to body without a section header.
404
+ */
405
+ extractBodyContent(body) {
406
+ // Find the first section header (## or dataview block)
407
+ const firstSectionMatch = body.match(/^##\s+|^```dataview/m);
408
+ if (firstSectionMatch?.index !== undefined) {
409
+ // Return content before the first section
410
+ const content = body.slice(0, firstSectionMatch.index).trim();
411
+ return content || undefined;
412
+ }
413
+ // No sections found, return trimmed body
414
+ const content = body.trim();
415
+ return content || undefined;
416
+ }
417
+ }
418
+ //# sourceMappingURL=entity-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-parser.js","sourceRoot":"","sources":["../../../src/services/v2/entity-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for V2 Entity Parser
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=entity-parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-parser.test.d.ts","sourceRoot":"","sources":["../../../src/services/v2/entity-parser.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}