obsidian-accomplishments-mcp 0.1.10 → 0.1.12

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 +156 -184
  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 -331
  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 -296
  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 -42
  219. package/dist/tools/get-accomplishment.d.ts.map +0 -1
  220. package/dist/tools/get-accomplishment.js +0 -93
  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 -42
  243. package/dist/tools/list-accomplishments.d.ts.map +0 -1
  244. package/dist/tools/list-accomplishments.js +0 -40
  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,374 @@
1
+ /**
2
+ * V2 Runtime
3
+ *
4
+ * Wires all V2 services together and provides dependency implementations
5
+ * for the V2 MCP tools.
6
+ */
7
+ import { Entity, EntityId, EntityType, EntityStatus, V2Config, Story, Decision, Document, Feature } from '../../models/v2-types.js';
8
+ import { CanvasManager } from './canvas-manager.js';
9
+ import type { EntityManagementDependencies } from '../../tools/entity-management-tools.js';
10
+ import type { BatchOperationsDependencies } from '../../tools/batch-operations-tools.js';
11
+ import type { ProjectUnderstandingDependencies, FeatureCoverageDependencies } from '../../tools/project-understanding-tools.js';
12
+ import type { SearchNavigationDependencies } from '../../tools/search-navigation-tools.js';
13
+ import type { DecisionDocumentDependencies } from '../../tools/decision-document-tools.js';
14
+ import type { EntitySummary, EntityFull } from '../../tools/tool-types.js';
15
+ /**
16
+ * Operation type for Obsidian plugin notification.
17
+ * - 'populate': Refresh canvas nodes from vault files
18
+ * - 'reposition': Reposition nodes on the canvas
19
+ */
20
+ export type ObsidianPluginOperation = 'populate' | 'reposition';
21
+ /**
22
+ * Notify the Obsidian plugin to perform an operation.
23
+ * This sends a POST request to the plugin's local HTTP endpoint.
24
+ * The request is fire-and-forget - it does not block the calling operation.
25
+ *
26
+ * @param operation - The operation to perform ('populate' or 'reposition')
27
+ */
28
+ export declare function notifyObsidianPlugin(operation: ObsidianPluginOperation): void;
29
+ /**
30
+ * V2 Runtime - orchestrates all V2 services and provides dependency implementations.
31
+ */
32
+ export declare class V2Runtime {
33
+ private config;
34
+ private index;
35
+ private fileManager;
36
+ private lifecycleManager;
37
+ private pathResolver;
38
+ private parser;
39
+ private serializer;
40
+ private searchIndex;
41
+ private canvasManager;
42
+ private watchers;
43
+ private debounceTimers;
44
+ private readonly DEBOUNCE_MS;
45
+ private readonly idPrefixes;
46
+ private duplicateIds;
47
+ constructor(config: V2Config);
48
+ /** Initialize the runtime by scanning the vault and starting file watchers */
49
+ initialize(): Promise<void>;
50
+ /** Shutdown the runtime and cleanup resources */
51
+ shutdown(): Promise<void>;
52
+ /** Get the canvas manager for direct canvas operations */
53
+ getCanvasManager(): CanvasManager;
54
+ /** Scan vault and build indexes */
55
+ private scanVault;
56
+ /** Recursively scan a folder for entity files */
57
+ private scanFolder;
58
+ /** Load a single entity from file and update ProjectIndex */
59
+ private loadEntity;
60
+ /** Remove entity from index by file path (safe delete) */
61
+ private removeEntityByPath;
62
+ /** Get content from entity for search indexing */
63
+ private getEntityContent;
64
+ /**
65
+ * Index all relationships for an entity into ProjectIndex.
66
+ * This enables O(1) lookups for dependencies, children, etc.
67
+ */
68
+ private indexRelationships;
69
+ /**
70
+ * Remove forward relationships for an entity from ProjectIndex.
71
+ * Called before re-indexing an entity's relationships.
72
+ *
73
+ * Excludes `parent_of` and `blocks` relationships because those are "owned" by
74
+ * other entities (children and dependents respectively), not by this entity.
75
+ * - `parent_of` is indexed when a child sets its `parent` field
76
+ * - `blocks` is indexed when a dependent sets its `depends_on` field
77
+ */
78
+ private removeRelationships;
79
+ /**
80
+ * Create EntityMetadata from an Entity for the primary index.
81
+ */
82
+ private createEntityMetadata;
83
+ /**
84
+ * Check if an entity is in progress.
85
+ */
86
+ private isEntityInProgress;
87
+ /** Start file watchers for all entity folders */
88
+ private startFileWatchers;
89
+ /** Stop all file watchers */
90
+ private stopFileWatchers;
91
+ /** Handle file change event with debouncing */
92
+ private handleFileChange;
93
+ /** Process a file change after debouncing */
94
+ private processFileChange;
95
+ /** Get entity by ID - loads from disk using ProjectIndex */
96
+ getEntity(id: EntityId): Promise<Entity | null>;
97
+ /** Get all entities - loads from disk using ProjectIndex */
98
+ getAllEntities(options?: {
99
+ includeCompleted?: boolean;
100
+ includeArchived?: boolean;
101
+ workstream?: string;
102
+ types?: EntityType[];
103
+ }): Promise<Entity[]>;
104
+ /** Get entity status */
105
+ private getEntityStatus;
106
+ /** Get entity workstream */
107
+ private getEntityWorkstream;
108
+ /**
109
+ * Get the highest ID number for a given entity type by scanning vault files.
110
+ * This ensures we never generate duplicate IDs even if entities were created
111
+ * by the Obsidian plugin while the MCP server was running.
112
+ *
113
+ * NOTE: This scans the vault on every call to guarantee accuracy.
114
+ * The index may be stale if the plugin creates entities.
115
+ */
116
+ private getHighestIdForType;
117
+ /**
118
+ * Get all markdown files in a folder (recursively)
119
+ */
120
+ private getAllMarkdownFilesInFolder;
121
+ /** Get next ID for entity type (zero-padded to 3 digits) */
122
+ getNextId(type: EntityType): Promise<EntityId>;
123
+ /** Get all duplicate entity IDs and their file paths */
124
+ getDuplicateIds(): Map<EntityId, string[]>;
125
+ /** Check if there are any duplicate IDs */
126
+ hasDuplicateIds(): boolean;
127
+ /** Check if an entity exists in the index */
128
+ entityExists(id: EntityId): boolean;
129
+ /** Get entity type from ID (from index) */
130
+ getEntityTypeFromCache(id: EntityId): EntityType | null;
131
+ /** Write entity to file */
132
+ writeEntity(entity: Entity): Promise<void>;
133
+ /**
134
+ * Sync all bidirectional relationships.
135
+ * Ensures consistency across all symmetric relationship pairs:
136
+ * - parent ↔ children
137
+ * - depends_on ↔ blocks
138
+ * - implements ↔ implemented_by
139
+ * - supersedes ↔ superseded_by
140
+ * - previous_version ↔ next_version
141
+ */
142
+ private syncBidirectionalRelationships;
143
+ /**
144
+ * Sync parent ↔ children relationship.
145
+ */
146
+ private syncParentChildRelationship;
147
+ /**
148
+ * Sync depends_on ↔ blocks relationship.
149
+ */
150
+ private syncDependencyRelationship;
151
+ /**
152
+ * Sync implements ↔ implemented_by relationship.
153
+ */
154
+ private syncImplementsRelationship;
155
+ /**
156
+ * Sync supersedes ↔ superseded_by relationship (Decision only).
157
+ */
158
+ private syncSupersedesRelationship;
159
+ /**
160
+ * Sync previous_version ↔ next_version relationship (Document only).
161
+ */
162
+ private syncVersioningRelationship;
163
+ /**
164
+ * Ensure a parent entity's children array includes the given child ID.
165
+ */
166
+ private ensureChildInParent;
167
+ /**
168
+ * Ensure a child entity's parent field is set to the given parent ID.
169
+ */
170
+ private ensureParentInChild;
171
+ /**
172
+ * Ensure an entity's affects array includes the given affected ID.
173
+ */
174
+ private ensureAffects;
175
+ /**
176
+ * Ensure an entity's depends_on array includes the given dependency ID.
177
+ */
178
+ private ensureDependsOn;
179
+ /**
180
+ * Ensure a decision's superseded_by field is set.
181
+ */
182
+ private ensureSupersededBy;
183
+ /**
184
+ * Ensure a decision's supersedes field is set.
185
+ */
186
+ private ensureSupersedes;
187
+ /**
188
+ * Ensure a document's next_version field is set.
189
+ */
190
+ private ensureNextVersion;
191
+ /**
192
+ * Ensure a document's previous_version field is set.
193
+ */
194
+ private ensurePreviousVersion;
195
+ private ensureImplementedBy;
196
+ /**
197
+ * Ensure a Story/Milestone's implements includes the given document ID.
198
+ * Only updates if the relationship is missing.
199
+ */
200
+ private ensureImplements;
201
+ /**
202
+ * Ensure a Feature's implemented_by includes the given story/milestone ID.
203
+ */
204
+ private ensureFeatureImplementedBy;
205
+ /**
206
+ * Ensure a Story/Milestone's implements includes the given feature ID.
207
+ */
208
+ private ensureImplementsFeature;
209
+ /**
210
+ * Write entity directly without triggering relationship sync (to avoid recursion).
211
+ */
212
+ private writeEntityDirect;
213
+ /** Get children of an entity - uses ProjectIndex for O(1) lookup */
214
+ getChildren(parentId: EntityId): Promise<Entity[]>;
215
+ /** Get parent of an entity */
216
+ getParent(id: EntityId): Promise<Entity | null>;
217
+ /** Get siblings of an entity */
218
+ getSiblings(id: EntityId): Promise<Entity[]>;
219
+ /** Get entity path */
220
+ getEntityPath(id: EntityId): Promise<string>;
221
+ /**
222
+ * Get entities that this entity depends on (what blocks this entity).
223
+ * Uses ProjectIndex relationship graph for O(1) lookup.
224
+ *
225
+ * If entity A has depends_on: [B], then A is blocked by B.
226
+ * This returns [B] when called with A's id.
227
+ */
228
+ getDependencies(id: EntityId): Promise<Entity[]>;
229
+ /**
230
+ * Get entities that depend on this entity (what this entity blocks).
231
+ * Uses ProjectIndex relationship graph for O(1) lookup.
232
+ *
233
+ * If entity A has depends_on: [B], then B blocks A.
234
+ * This returns [A] when called with B's id.
235
+ */
236
+ getDependents(id: EntityId): Promise<Entity[]>;
237
+ /** Validate status transition */
238
+ validateStatusTransition(entity: Entity, newStatus: EntityStatus): {
239
+ valid: boolean;
240
+ reason?: string;
241
+ };
242
+ /** Compute cascade effects of status change */
243
+ computeCascadeEffects(entity: Entity, newStatus: EntityStatus): Promise<EntityId[]>;
244
+ /** Move entity to archive */
245
+ moveToArchive(id: EntityId, archivePath?: string): Promise<string>;
246
+ /** Restore entity from archive */
247
+ restoreFromArchive(id: EntityId): Promise<string>;
248
+ /** Convert entity to summary */
249
+ toEntitySummary(entity: Entity): EntitySummary;
250
+ /** Convert entity to full representation */
251
+ toEntityFull(entity: Entity): Promise<EntityFull>;
252
+ /** Get current timestamp */
253
+ getCurrentTimestamp(): string;
254
+ /** Search entities */
255
+ searchEntities(query: string, options?: {
256
+ types?: EntityType[];
257
+ statuses?: EntityStatus[];
258
+ workstreams?: string[];
259
+ archived?: boolean;
260
+ limit?: number;
261
+ }): Promise<Array<{
262
+ entity: Entity;
263
+ score: number;
264
+ snippet: string;
265
+ }>>;
266
+ /** Get task progress for a story */
267
+ getTaskProgress(storyId: EntityId): Promise<{
268
+ total: number;
269
+ completed: number;
270
+ }>;
271
+ /** Get all decisions */
272
+ getAllDecisions(options?: {
273
+ workstream?: string;
274
+ includeSuperseded?: boolean;
275
+ includeArchived?: boolean;
276
+ }): Promise<Decision[]>;
277
+ /** Get all documents */
278
+ getAllDocuments(options?: {
279
+ workstream?: string;
280
+ }): Promise<Document[]>;
281
+ /** Get all stories */
282
+ getAllStories(options?: {
283
+ workstream?: string;
284
+ priorities?: string[];
285
+ }): Promise<Story[]>;
286
+ /** Get all features */
287
+ getAllFeatures(options?: {
288
+ workstream?: string;
289
+ tier?: string;
290
+ phase?: string;
291
+ includeDeferred?: boolean;
292
+ }): Promise<Feature[]>;
293
+ /** Create a decision */
294
+ createDecision(data: {
295
+ title: string;
296
+ context: string;
297
+ decision: string;
298
+ rationale: string;
299
+ workstream: string;
300
+ decided_by: string;
301
+ affects?: EntityId[];
302
+ supersedes?: EntityId;
303
+ }): Promise<Decision>;
304
+ /** Update a document */
305
+ updateDocument(id: EntityId, data: Partial<Document>): Promise<Document>;
306
+ /** Get decisions affecting a document */
307
+ getDecisionsAffectingDocument(docId: EntityId): Promise<Decision[]>;
308
+ /** Generate entity ID - uses vault scanning for consistency */
309
+ generateId(type: 'decision' | 'document'): Promise<EntityId>;
310
+ /** Get related decisions for an entity */
311
+ getRelatedDecisions(entityId: EntityId): Promise<Decision[]>;
312
+ /** Get blocking entities */
313
+ getBlockingEntities(entityId: EntityId): Promise<Entity[]>;
314
+ /** Check if entity has open TODOs */
315
+ hasOpenTodos(entityId: EntityId): Promise<boolean>;
316
+ /** Get acceptance criteria */
317
+ getAcceptanceCriteria(entityId: EntityId): Promise<string[]>;
318
+ /** Get implementation context */
319
+ getImplementationContext(entityId: EntityId): Promise<string | undefined>;
320
+ /** Get related documents */
321
+ getRelatedDocuments(entityId: EntityId): Promise<Document[]>;
322
+ /** Search content for pattern */
323
+ searchContent(entityId: EntityId, pattern: string): Promise<boolean>;
324
+ /**
325
+ * Reconcile all implements/implemented_by relationships across the vault.
326
+ * This scans all entities and ensures bidirectional consistency:
327
+ * - If Story/Milestone has `implements: [DOC-001]`, ensure DOC-001 has `implemented_by: [S-001]`
328
+ * - If Document has `implemented_by: [S-001]`, ensure S-001 has `implements: [DOC-001]`
329
+ *
330
+ * @param options.dry_run If true, only report what would be changed without making changes
331
+ * @returns Summary of reconciliation actions taken
332
+ */
333
+ reconcileImplementsRelationships(options?: {
334
+ dry_run?: boolean;
335
+ }): Promise<{
336
+ scanned: number;
337
+ updated: number;
338
+ dry_run: boolean;
339
+ changes: Array<{
340
+ entity_id: EntityId;
341
+ field: string;
342
+ action: 'added' | 'removed';
343
+ values: EntityId[];
344
+ reason: string;
345
+ }>;
346
+ warnings: Array<{
347
+ entity_id: EntityId;
348
+ issue: string;
349
+ }>;
350
+ /** @deprecated Use changes instead */
351
+ details: Array<{
352
+ entity_id: EntityId;
353
+ action: string;
354
+ related_id: EntityId;
355
+ }>;
356
+ }>;
357
+ /** Get entity management dependencies */
358
+ getEntityManagementDeps(): EntityManagementDependencies;
359
+ /** Get batch operations dependencies */
360
+ getBatchOperationsDeps(): BatchOperationsDependencies;
361
+ /** Get project understanding dependencies */
362
+ getProjectUnderstandingDeps(): ProjectUnderstandingDependencies;
363
+ /** Get search navigation dependencies */
364
+ getSearchNavigationDeps(): SearchNavigationDependencies;
365
+ /** Get decision document dependencies */
366
+ getDecisionDocumentDeps(): DecisionDocumentDependencies;
367
+ /** Get feature coverage dependencies */
368
+ getFeatureCoverageDeps(): FeatureCoverageDependencies;
369
+ }
370
+ /** Get or create the V2 runtime instance */
371
+ export declare function getV2Runtime(config: V2Config): Promise<V2Runtime>;
372
+ /** Reset the runtime (for testing) */
373
+ export declare function resetV2Runtime(): void;
374
+ //# sourceMappingURL=v2-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-runtime.d.ts","sourceRoot":"","sources":["../../../src/services/v2/v2-runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EAEZ,QAAQ,EAER,KAAK,EAEL,QAAQ,EACR,QAAQ,EACR,OAAO,EAYR,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,KAAK,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAChI,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAc,MAAM,2BAA2B,CAAC;AAQvF;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,YAAY,CAAC;AAQhE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI,CAiC7E;AAMD;;GAEG;AACH,qBAAa,SAAS;IA8BR,OAAO,CAAC,MAAM;IA7B1B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IAGrC,OAAO,CAAC,QAAQ,CAAmB;IAGnC,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IAGnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAOxB;IAGH,OAAO,CAAC,YAAY,CAAsC;gBAEtC,MAAM,EAAE,QAAQ;IAsBpC,8EAA8E;IACxE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,iDAAiD;IAC3C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,0DAA0D;IAC1D,gBAAgB,IAAI,aAAa;IAIjC,mCAAmC;YACrB,SAAS;IAYvB,iDAAiD;YACnC,UAAU;IAwBxB,6DAA6D;YAC/C,UAAU;IAkExB,0DAA0D;IAC1D,OAAO,CAAC,kBAAkB;IAqB1B,kDAAkD;IAClD,OAAO,CAAC,gBAAgB;IAgCxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B,iDAAiD;IACjD,OAAO,CAAC,iBAAiB;IAsBzB,6BAA6B;IAC7B,OAAO,CAAC,gBAAgB;IAaxB,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB;IAgBxB,6CAA6C;YAC/B,iBAAiB;IAqB/B,4DAA4D;IACtD,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA6BrD,4DAA4D;IACtD,cAAc,CAAC,OAAO,CAAC,EAAE;QAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCrB,wBAAwB;IACxB,OAAO,CAAC,eAAe;IAYvB,4BAA4B;IAC5B,OAAO,CAAC,mBAAmB;IAY3B;;;;;;;OAOG;YACW,mBAAmB;IA4CjC;;OAEG;YACW,2BAA2B;IA2BzC,4DAA4D;IACtD,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBpD,wDAAwD;IACxD,eAAe,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAI1C,2CAA2C;IAC3C,eAAe,IAAI,OAAO;IAI1B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;IAInC,2CAA2C;IAC3C,sBAAsB,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI;IAKvD,2BAA2B;IACrB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DhD;;;;;;;;OAQG;YACW,8BAA8B;IAiB5C;;OAEG;YACW,2BAA2B;IAqBzC;;OAEG;YACW,0BAA0B;IAgBxC;;OAEG;YACW,0BAA0B;IA+BxC;;OAEG;YACW,0BAA0B;IAYxC;;OAEG;YACW,0BAA0B;IAYxC;;OAEG;YACW,mBAAmB;IAyBjC;;OAEG;YACW,mBAAmB;IAuBjC;;OAEG;YACW,aAAa;IAa3B;;OAEG;YACW,eAAe;IAa7B;;OAEG;YACW,kBAAkB;IAahC;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;YACW,qBAAqB;YAarB,mBAAmB;IAmBjC;;;OAGG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,0BAA0B;IAkBxC;;OAEG;YACW,uBAAuB;IAyBrC;;OAEG;YACW,iBAAiB;IA0B/B,oEAAoE;IAC9D,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcxD,8BAA8B;IACxB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcrD,gCAAgC;IAC1B,WAAW,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBlD,sBAAsB;IAChB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlD;;;;;;OAMG;IACG,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAatD;;;;;;OAMG;IACG,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBpD,iCAAiC;IACjC,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAMtG,+CAA+C;IACzC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IASzF,6BAA6B;IACvB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyCxE,kCAAkC;IAC5B,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAqCvD,gCAAgC;IAChC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAsB9C,4CAA4C;IACtC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4DvD,4BAA4B;IAC5B,mBAAmB,IAAI,MAAM;IAQ7B,sBAAsB;IAChB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC5C,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA8BtE,oCAAoC;IAC9B,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWvF,wBAAwB;IAClB,eAAe,CAAC,OAAO,CAAC,EAAE;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiBvB,wBAAwB;IAClB,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAU7E,sBAAsB;IAChB,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAiB/F,uBAAuB;IACjB,cAAc,CAAC,OAAO,CAAC,EAAE;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA2BtB,wBAAwB;IAClB,cAAc,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrB,UAAU,CAAC,EAAE,QAAQ,CAAC;KACvB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6BrB,wBAAwB;IAClB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgB9E,yCAAyC;IACnC,6BAA6B,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAOzE,+DAA+D;IACzD,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBlE,0CAA0C;IACpC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKlE,4BAA4B;IACtB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhE,qCAAqC;IAC/B,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAOxD,8BAA8B;IACxB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMlE,iCAAiC;IAC3B,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO/E,4BAA4B;IACtB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgBlE,iCAAiC;IAC3B,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1E;;;;;;;;OAQG;IACG,gCAAgC,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAC/E,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YACb,SAAS,EAAE,QAAQ,CAAC;YACpB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;YAC5B,MAAM,EAAE,QAAQ,EAAE,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;QACH,QAAQ,EAAE,KAAK,CAAC;YACd,SAAS,EAAE,QAAQ,CAAC;YACpB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,sCAAsC;QACtC,OAAO,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,QAAQ,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,QAAQ,CAAA;SAAE,CAAC,CAAC;KAC/E,CAAC;IAyPF,yCAAyC;IACzC,uBAAuB,IAAI,4BAA4B;IAgCvD,wCAAwC;IACxC,sBAAsB,IAAI,2BAA2B;IAwDrD,6CAA6C;IAC7C,2BAA2B,IAAI,gCAAgC;IAU/D,yCAAyC;IACzC,uBAAuB,IAAI,4BAA4B;IAiBvD,yCAAyC;IACzC,uBAAuB,IAAI,4BAA4B;IAwBvD,wCAAwC;IACxC,sBAAsB,IAAI,2BAA2B;CAOtD;AAQD,4CAA4C;AAC5C,wBAAsB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAMvE;AAED,sCAAsC;AACtC,wBAAgB,cAAc,IAAI,IAAI,CAErC"}