@mc1global/opencode-jarvis 0.1.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 (415) hide show
  1. package/LICENSE +10 -0
  2. package/README.md +171 -0
  3. package/dist/application/context-memory/dtos.d.ts +100 -0
  4. package/dist/application/context-memory/dtos.d.ts.map +1 -0
  5. package/dist/application/context-memory/dtos.js +11 -0
  6. package/dist/application/context-memory/dtos.js.map +1 -0
  7. package/dist/application/context-memory/note-use-cases.d.ts +22 -0
  8. package/dist/application/context-memory/note-use-cases.d.ts.map +1 -0
  9. package/dist/application/context-memory/note-use-cases.js +76 -0
  10. package/dist/application/context-memory/note-use-cases.js.map +1 -0
  11. package/dist/application/context-memory/session-use-cases.d.ts +23 -0
  12. package/dist/application/context-memory/session-use-cases.d.ts.map +1 -0
  13. package/dist/application/context-memory/session-use-cases.js +63 -0
  14. package/dist/application/context-memory/session-use-cases.js.map +1 -0
  15. package/dist/application/context-memory/todo-use-cases.d.ts +25 -0
  16. package/dist/application/context-memory/todo-use-cases.d.ts.map +1 -0
  17. package/dist/application/context-memory/todo-use-cases.js +100 -0
  18. package/dist/application/context-memory/todo-use-cases.js.map +1 -0
  19. package/dist/application/domain-map/dtos.d.ts +58 -0
  20. package/dist/application/domain-map/dtos.d.ts.map +1 -0
  21. package/dist/application/domain-map/dtos.js +11 -0
  22. package/dist/application/domain-map/dtos.js.map +1 -0
  23. package/dist/application/domain-map/use-cases.d.ts +64 -0
  24. package/dist/application/domain-map/use-cases.d.ts.map +1 -0
  25. package/dist/application/domain-map/use-cases.js +217 -0
  26. package/dist/application/domain-map/use-cases.js.map +1 -0
  27. package/dist/application/environment/dtos.d.ts +74 -0
  28. package/dist/application/environment/dtos.d.ts.map +1 -0
  29. package/dist/application/environment/dtos.js +10 -0
  30. package/dist/application/environment/dtos.js.map +1 -0
  31. package/dist/application/environment/use-cases.d.ts +29 -0
  32. package/dist/application/environment/use-cases.d.ts.map +1 -0
  33. package/dist/application/environment/use-cases.js +232 -0
  34. package/dist/application/environment/use-cases.js.map +1 -0
  35. package/dist/application/governance/validation-use-cases.d.ts +45 -0
  36. package/dist/application/governance/validation-use-cases.d.ts.map +1 -0
  37. package/dist/application/governance/validation-use-cases.js +51 -0
  38. package/dist/application/governance/validation-use-cases.js.map +1 -0
  39. package/dist/application/kanban/board-use-cases.d.ts +45 -0
  40. package/dist/application/kanban/board-use-cases.d.ts.map +1 -0
  41. package/dist/application/kanban/board-use-cases.js +124 -0
  42. package/dist/application/kanban/board-use-cases.js.map +1 -0
  43. package/dist/application/kanban/card-use-cases.d.ts +32 -0
  44. package/dist/application/kanban/card-use-cases.d.ts.map +1 -0
  45. package/dist/application/kanban/card-use-cases.js +204 -0
  46. package/dist/application/kanban/card-use-cases.js.map +1 -0
  47. package/dist/application/kanban/dtos.d.ts +165 -0
  48. package/dist/application/kanban/dtos.d.ts.map +1 -0
  49. package/dist/application/kanban/dtos.js +11 -0
  50. package/dist/application/kanban/dtos.js.map +1 -0
  51. package/dist/application/kanban/sprint-use-cases.d.ts +34 -0
  52. package/dist/application/kanban/sprint-use-cases.d.ts.map +1 -0
  53. package/dist/application/kanban/sprint-use-cases.js +243 -0
  54. package/dist/application/kanban/sprint-use-cases.js.map +1 -0
  55. package/dist/application/rag/dtos.d.ts +113 -0
  56. package/dist/application/rag/dtos.d.ts.map +1 -0
  57. package/dist/application/rag/dtos.js +11 -0
  58. package/dist/application/rag/dtos.js.map +1 -0
  59. package/dist/application/rag/oracle-use-cases.d.ts +30 -0
  60. package/dist/application/rag/oracle-use-cases.d.ts.map +1 -0
  61. package/dist/application/rag/oracle-use-cases.js +91 -0
  62. package/dist/application/rag/oracle-use-cases.js.map +1 -0
  63. package/dist/application/rag/use-cases.d.ts +34 -0
  64. package/dist/application/rag/use-cases.d.ts.map +1 -0
  65. package/dist/application/rag/use-cases.js +234 -0
  66. package/dist/application/rag/use-cases.js.map +1 -0
  67. package/dist/application/token-metrics/dtos.d.ts +126 -0
  68. package/dist/application/token-metrics/dtos.d.ts.map +1 -0
  69. package/dist/application/token-metrics/dtos.js +11 -0
  70. package/dist/application/token-metrics/dtos.js.map +1 -0
  71. package/dist/application/token-metrics/tracking-use-cases.d.ts +33 -0
  72. package/dist/application/token-metrics/tracking-use-cases.d.ts.map +1 -0
  73. package/dist/application/token-metrics/tracking-use-cases.js +220 -0
  74. package/dist/application/token-metrics/tracking-use-cases.js.map +1 -0
  75. package/dist/application/vault/dtos.d.ts +91 -0
  76. package/dist/application/vault/dtos.d.ts.map +1 -0
  77. package/dist/application/vault/dtos.js +11 -0
  78. package/dist/application/vault/dtos.js.map +1 -0
  79. package/dist/application/vault/use-cases.d.ts +30 -0
  80. package/dist/application/vault/use-cases.d.ts.map +1 -0
  81. package/dist/application/vault/use-cases.js +307 -0
  82. package/dist/application/vault/use-cases.js.map +1 -0
  83. package/dist/application/vault/vault-manager.d.ts +47 -0
  84. package/dist/application/vault/vault-manager.d.ts.map +1 -0
  85. package/dist/application/vault/vault-manager.js +272 -0
  86. package/dist/application/vault/vault-manager.js.map +1 -0
  87. package/dist/application/workspace-registry/dtos.d.ts +91 -0
  88. package/dist/application/workspace-registry/dtos.d.ts.map +1 -0
  89. package/dist/application/workspace-registry/dtos.js +11 -0
  90. package/dist/application/workspace-registry/dtos.js.map +1 -0
  91. package/dist/application/workspace-registry/use-cases.d.ts +29 -0
  92. package/dist/application/workspace-registry/use-cases.d.ts.map +1 -0
  93. package/dist/application/workspace-registry/use-cases.js +249 -0
  94. package/dist/application/workspace-registry/use-cases.js.map +1 -0
  95. package/dist/domain/context-memory/entities.d.ts +123 -0
  96. package/dist/domain/context-memory/entities.d.ts.map +1 -0
  97. package/dist/domain/context-memory/entities.js +229 -0
  98. package/dist/domain/context-memory/entities.js.map +1 -0
  99. package/dist/domain/context-memory/repositories.d.ts +46 -0
  100. package/dist/domain/context-memory/repositories.d.ts.map +1 -0
  101. package/dist/domain/context-memory/repositories.js +2 -0
  102. package/dist/domain/context-memory/repositories.js.map +1 -0
  103. package/dist/domain/context-memory/services.d.ts +62 -0
  104. package/dist/domain/context-memory/services.d.ts.map +1 -0
  105. package/dist/domain/context-memory/services.js +162 -0
  106. package/dist/domain/context-memory/services.js.map +1 -0
  107. package/dist/domain/context-memory/value-objects.d.ts +65 -0
  108. package/dist/domain/context-memory/value-objects.d.ts.map +1 -0
  109. package/dist/domain/context-memory/value-objects.js +105 -0
  110. package/dist/domain/context-memory/value-objects.js.map +1 -0
  111. package/dist/domain/domain-map/repositories.d.ts +126 -0
  112. package/dist/domain/domain-map/repositories.d.ts.map +1 -0
  113. package/dist/domain/domain-map/repositories.js +2 -0
  114. package/dist/domain/domain-map/repositories.js.map +1 -0
  115. package/dist/domain/domain-map/services.d.ts +108 -0
  116. package/dist/domain/domain-map/services.d.ts.map +1 -0
  117. package/dist/domain/domain-map/services.js +335 -0
  118. package/dist/domain/domain-map/services.js.map +1 -0
  119. package/dist/domain/domain-map/value-objects.d.ts +186 -0
  120. package/dist/domain/domain-map/value-objects.d.ts.map +1 -0
  121. package/dist/domain/domain-map/value-objects.js +215 -0
  122. package/dist/domain/domain-map/value-objects.js.map +1 -0
  123. package/dist/domain/environment/entities.d.ts +93 -0
  124. package/dist/domain/environment/entities.d.ts.map +1 -0
  125. package/dist/domain/environment/entities.js +207 -0
  126. package/dist/domain/environment/entities.js.map +1 -0
  127. package/dist/domain/environment/renderers.d.ts +30 -0
  128. package/dist/domain/environment/renderers.d.ts.map +1 -0
  129. package/dist/domain/environment/renderers.js +139 -0
  130. package/dist/domain/environment/renderers.js.map +1 -0
  131. package/dist/domain/environment/repositories.d.ts +73 -0
  132. package/dist/domain/environment/repositories.d.ts.map +1 -0
  133. package/dist/domain/environment/repositories.js +16 -0
  134. package/dist/domain/environment/repositories.js.map +1 -0
  135. package/dist/domain/environment/services.d.ts +62 -0
  136. package/dist/domain/environment/services.d.ts.map +1 -0
  137. package/dist/domain/environment/services.js +282 -0
  138. package/dist/domain/environment/services.js.map +1 -0
  139. package/dist/domain/environment/value-objects.d.ts +127 -0
  140. package/dist/domain/environment/value-objects.d.ts.map +1 -0
  141. package/dist/domain/environment/value-objects.js +179 -0
  142. package/dist/domain/environment/value-objects.js.map +1 -0
  143. package/dist/domain/governance/policies.d.ts +42 -0
  144. package/dist/domain/governance/policies.d.ts.map +1 -0
  145. package/dist/domain/governance/policies.js +304 -0
  146. package/dist/domain/governance/policies.js.map +1 -0
  147. package/dist/domain/governance/services.d.ts +38 -0
  148. package/dist/domain/governance/services.d.ts.map +1 -0
  149. package/dist/domain/governance/services.js +42 -0
  150. package/dist/domain/governance/services.js.map +1 -0
  151. package/dist/domain/kanban/entities.d.ts +105 -0
  152. package/dist/domain/kanban/entities.d.ts.map +1 -0
  153. package/dist/domain/kanban/entities.js +211 -0
  154. package/dist/domain/kanban/entities.js.map +1 -0
  155. package/dist/domain/kanban/grooming.d.ts +40 -0
  156. package/dist/domain/kanban/grooming.d.ts.map +1 -0
  157. package/dist/domain/kanban/grooming.js +50 -0
  158. package/dist/domain/kanban/grooming.js.map +1 -0
  159. package/dist/domain/kanban/repositories.d.ts +41 -0
  160. package/dist/domain/kanban/repositories.d.ts.map +1 -0
  161. package/dist/domain/kanban/repositories.js +2 -0
  162. package/dist/domain/kanban/repositories.js.map +1 -0
  163. package/dist/domain/kanban/services.d.ts +49 -0
  164. package/dist/domain/kanban/services.d.ts.map +1 -0
  165. package/dist/domain/kanban/services.js +154 -0
  166. package/dist/domain/kanban/services.js.map +1 -0
  167. package/dist/domain/kanban/sprint.d.ts +103 -0
  168. package/dist/domain/kanban/sprint.d.ts.map +1 -0
  169. package/dist/domain/kanban/sprint.js +192 -0
  170. package/dist/domain/kanban/sprint.js.map +1 -0
  171. package/dist/domain/kanban/value-objects.d.ts +91 -0
  172. package/dist/domain/kanban/value-objects.d.ts.map +1 -0
  173. package/dist/domain/kanban/value-objects.js +167 -0
  174. package/dist/domain/kanban/value-objects.js.map +1 -0
  175. package/dist/domain/rag/repositories.d.ts +152 -0
  176. package/dist/domain/rag/repositories.d.ts.map +1 -0
  177. package/dist/domain/rag/repositories.js +2 -0
  178. package/dist/domain/rag/repositories.js.map +1 -0
  179. package/dist/domain/rag/services.d.ts +57 -0
  180. package/dist/domain/rag/services.d.ts.map +1 -0
  181. package/dist/domain/rag/services.js +224 -0
  182. package/dist/domain/rag/services.js.map +1 -0
  183. package/dist/domain/rag/value-objects.d.ts +118 -0
  184. package/dist/domain/rag/value-objects.d.ts.map +1 -0
  185. package/dist/domain/rag/value-objects.js +114 -0
  186. package/dist/domain/rag/value-objects.js.map +1 -0
  187. package/dist/domain/shared/value-objects.d.ts +56 -0
  188. package/dist/domain/shared/value-objects.d.ts.map +1 -0
  189. package/dist/domain/shared/value-objects.js +89 -0
  190. package/dist/domain/shared/value-objects.js.map +1 -0
  191. package/dist/domain/token-metrics/entities.d.ts +90 -0
  192. package/dist/domain/token-metrics/entities.d.ts.map +1 -0
  193. package/dist/domain/token-metrics/entities.js +115 -0
  194. package/dist/domain/token-metrics/entities.js.map +1 -0
  195. package/dist/domain/token-metrics/repositories.d.ts +93 -0
  196. package/dist/domain/token-metrics/repositories.d.ts.map +1 -0
  197. package/dist/domain/token-metrics/repositories.js +2 -0
  198. package/dist/domain/token-metrics/repositories.js.map +1 -0
  199. package/dist/domain/token-metrics/value-objects.d.ts +81 -0
  200. package/dist/domain/token-metrics/value-objects.d.ts.map +1 -0
  201. package/dist/domain/token-metrics/value-objects.js +144 -0
  202. package/dist/domain/token-metrics/value-objects.js.map +1 -0
  203. package/dist/domain/vault/canvas.d.ts +70 -0
  204. package/dist/domain/vault/canvas.d.ts.map +1 -0
  205. package/dist/domain/vault/canvas.js +70 -0
  206. package/dist/domain/vault/canvas.js.map +1 -0
  207. package/dist/domain/vault/document.d.ts +71 -0
  208. package/dist/domain/vault/document.d.ts.map +1 -0
  209. package/dist/domain/vault/document.js +244 -0
  210. package/dist/domain/vault/document.js.map +1 -0
  211. package/dist/domain/vault/repositories.d.ts +35 -0
  212. package/dist/domain/vault/repositories.d.ts.map +1 -0
  213. package/dist/domain/vault/repositories.js +2 -0
  214. package/dist/domain/vault/repositories.js.map +1 -0
  215. package/dist/domain/vault/section.d.ts +33 -0
  216. package/dist/domain/vault/section.d.ts.map +1 -0
  217. package/dist/domain/vault/section.js +39 -0
  218. package/dist/domain/vault/section.js.map +1 -0
  219. package/dist/domain/vault/services.d.ts +48 -0
  220. package/dist/domain/vault/services.d.ts.map +1 -0
  221. package/dist/domain/vault/services.js +249 -0
  222. package/dist/domain/vault/services.js.map +1 -0
  223. package/dist/domain/vault/table.d.ts +58 -0
  224. package/dist/domain/vault/table.d.ts.map +1 -0
  225. package/dist/domain/vault/table.js +204 -0
  226. package/dist/domain/vault/table.js.map +1 -0
  227. package/dist/domain/vault/timeline.d.ts +53 -0
  228. package/dist/domain/vault/timeline.d.ts.map +1 -0
  229. package/dist/domain/vault/timeline.js +214 -0
  230. package/dist/domain/vault/timeline.js.map +1 -0
  231. package/dist/domain/vault/value-objects.d.ts +45 -0
  232. package/dist/domain/vault/value-objects.d.ts.map +1 -0
  233. package/dist/domain/vault/value-objects.js +89 -0
  234. package/dist/domain/vault/value-objects.js.map +1 -0
  235. package/dist/domain/workspace-registry/entities.d.ts +57 -0
  236. package/dist/domain/workspace-registry/entities.d.ts.map +1 -0
  237. package/dist/domain/workspace-registry/entities.js +148 -0
  238. package/dist/domain/workspace-registry/entities.js.map +1 -0
  239. package/dist/domain/workspace-registry/repositories.d.ts +57 -0
  240. package/dist/domain/workspace-registry/repositories.d.ts.map +1 -0
  241. package/dist/domain/workspace-registry/repositories.js +12 -0
  242. package/dist/domain/workspace-registry/repositories.js.map +1 -0
  243. package/dist/domain/workspace-registry/services.d.ts +56 -0
  244. package/dist/domain/workspace-registry/services.d.ts.map +1 -0
  245. package/dist/domain/workspace-registry/services.js +283 -0
  246. package/dist/domain/workspace-registry/services.js.map +1 -0
  247. package/dist/domain/workspace-registry/value-objects.d.ts +113 -0
  248. package/dist/domain/workspace-registry/value-objects.d.ts.map +1 -0
  249. package/dist/domain/workspace-registry/value-objects.js +235 -0
  250. package/dist/domain/workspace-registry/value-objects.js.map +1 -0
  251. package/dist/hooks/context-compacting.d.ts +35 -0
  252. package/dist/hooks/context-compacting.d.ts.map +1 -0
  253. package/dist/hooks/context-compacting.js +48 -0
  254. package/dist/hooks/context-compacting.js.map +1 -0
  255. package/dist/hooks/event-handlers.d.ts +39 -0
  256. package/dist/hooks/event-handlers.d.ts.map +1 -0
  257. package/dist/hooks/event-handlers.js +75 -0
  258. package/dist/hooks/event-handlers.js.map +1 -0
  259. package/dist/hooks/guardrails.d.ts +33 -0
  260. package/dist/hooks/guardrails.d.ts.map +1 -0
  261. package/dist/hooks/guardrails.js +22 -0
  262. package/dist/hooks/guardrails.js.map +1 -0
  263. package/dist/hooks/shell-env.d.ts +28 -0
  264. package/dist/hooks/shell-env.d.ts.map +1 -0
  265. package/dist/hooks/shell-env.js +17 -0
  266. package/dist/hooks/shell-env.js.map +1 -0
  267. package/dist/index.d.ts +16 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +349 -0
  270. package/dist/index.js.map +1 -0
  271. package/dist/infrastructure/context-memory/note-repository.d.ts +26 -0
  272. package/dist/infrastructure/context-memory/note-repository.d.ts.map +1 -0
  273. package/dist/infrastructure/context-memory/note-repository.js +87 -0
  274. package/dist/infrastructure/context-memory/note-repository.js.map +1 -0
  275. package/dist/infrastructure/context-memory/search-repository.d.ts +20 -0
  276. package/dist/infrastructure/context-memory/search-repository.d.ts.map +1 -0
  277. package/dist/infrastructure/context-memory/search-repository.js +44 -0
  278. package/dist/infrastructure/context-memory/search-repository.js.map +1 -0
  279. package/dist/infrastructure/context-memory/session-repository.d.ts +26 -0
  280. package/dist/infrastructure/context-memory/session-repository.d.ts.map +1 -0
  281. package/dist/infrastructure/context-memory/session-repository.js +79 -0
  282. package/dist/infrastructure/context-memory/session-repository.js.map +1 -0
  283. package/dist/infrastructure/context-memory/todo-repository.d.ts +26 -0
  284. package/dist/infrastructure/context-memory/todo-repository.d.ts.map +1 -0
  285. package/dist/infrastructure/context-memory/todo-repository.js +105 -0
  286. package/dist/infrastructure/context-memory/todo-repository.js.map +1 -0
  287. package/dist/infrastructure/database/sqlite-adapter.d.ts +60 -0
  288. package/dist/infrastructure/database/sqlite-adapter.d.ts.map +1 -0
  289. package/dist/infrastructure/database/sqlite-adapter.js +93 -0
  290. package/dist/infrastructure/database/sqlite-adapter.js.map +1 -0
  291. package/dist/infrastructure/domain-map/llm-analyzer.d.ts +60 -0
  292. package/dist/infrastructure/domain-map/llm-analyzer.d.ts.map +1 -0
  293. package/dist/infrastructure/domain-map/llm-analyzer.js +249 -0
  294. package/dist/infrastructure/domain-map/llm-analyzer.js.map +1 -0
  295. package/dist/infrastructure/domain-map/lsp-adapter.d.ts +61 -0
  296. package/dist/infrastructure/domain-map/lsp-adapter.d.ts.map +1 -0
  297. package/dist/infrastructure/domain-map/lsp-adapter.js +210 -0
  298. package/dist/infrastructure/domain-map/lsp-adapter.js.map +1 -0
  299. package/dist/infrastructure/domain-map/lsp-configs.d.ts +53 -0
  300. package/dist/infrastructure/domain-map/lsp-configs.d.ts.map +1 -0
  301. package/dist/infrastructure/domain-map/lsp-configs.js +274 -0
  302. package/dist/infrastructure/domain-map/lsp-configs.js.map +1 -0
  303. package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts +132 -0
  304. package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts.map +1 -0
  305. package/dist/infrastructure/domain-map/lsp-json-rpc.js +320 -0
  306. package/dist/infrastructure/domain-map/lsp-json-rpc.js.map +1 -0
  307. package/dist/infrastructure/domain-map/project-scanner.d.ts +43 -0
  308. package/dist/infrastructure/domain-map/project-scanner.d.ts.map +1 -0
  309. package/dist/infrastructure/domain-map/project-scanner.js +193 -0
  310. package/dist/infrastructure/domain-map/project-scanner.js.map +1 -0
  311. package/dist/infrastructure/environment/environment-repository.d.ts +33 -0
  312. package/dist/infrastructure/environment/environment-repository.d.ts.map +1 -0
  313. package/dist/infrastructure/environment/environment-repository.js +161 -0
  314. package/dist/infrastructure/environment/environment-repository.js.map +1 -0
  315. package/dist/infrastructure/environment/scanner-adapter.d.ts +23 -0
  316. package/dist/infrastructure/environment/scanner-adapter.d.ts.map +1 -0
  317. package/dist/infrastructure/environment/scanner-adapter.js +102 -0
  318. package/dist/infrastructure/environment/scanner-adapter.js.map +1 -0
  319. package/dist/infrastructure/kanban/card-repository.d.ts +41 -0
  320. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -0
  321. package/dist/infrastructure/kanban/card-repository.js +185 -0
  322. package/dist/infrastructure/kanban/card-repository.js.map +1 -0
  323. package/dist/infrastructure/kanban/sprint-repository.d.ts +40 -0
  324. package/dist/infrastructure/kanban/sprint-repository.d.ts.map +1 -0
  325. package/dist/infrastructure/kanban/sprint-repository.js +186 -0
  326. package/dist/infrastructure/kanban/sprint-repository.js.map +1 -0
  327. package/dist/infrastructure/rag/file-discovery.d.ts +19 -0
  328. package/dist/infrastructure/rag/file-discovery.d.ts.map +1 -0
  329. package/dist/infrastructure/rag/file-discovery.js +201 -0
  330. package/dist/infrastructure/rag/file-discovery.js.map +1 -0
  331. package/dist/infrastructure/rag/ollama-embeddings.d.ts +18 -0
  332. package/dist/infrastructure/rag/ollama-embeddings.d.ts.map +1 -0
  333. package/dist/infrastructure/rag/ollama-embeddings.js +54 -0
  334. package/dist/infrastructure/rag/ollama-embeddings.js.map +1 -0
  335. package/dist/infrastructure/rag/text-splitter.d.ts +19 -0
  336. package/dist/infrastructure/rag/text-splitter.d.ts.map +1 -0
  337. package/dist/infrastructure/rag/text-splitter.js +38 -0
  338. package/dist/infrastructure/rag/text-splitter.js.map +1 -0
  339. package/dist/infrastructure/rag/vectra-adapter.d.ts +38 -0
  340. package/dist/infrastructure/rag/vectra-adapter.d.ts.map +1 -0
  341. package/dist/infrastructure/rag/vectra-adapter.js +275 -0
  342. package/dist/infrastructure/rag/vectra-adapter.js.map +1 -0
  343. package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts +29 -0
  344. package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts.map +1 -0
  345. package/dist/infrastructure/token-metrics/token-metrics-repository.js +254 -0
  346. package/dist/infrastructure/token-metrics/token-metrics-repository.js.map +1 -0
  347. package/dist/infrastructure/vault/markdown-parser.d.ts +35 -0
  348. package/dist/infrastructure/vault/markdown-parser.d.ts.map +1 -0
  349. package/dist/infrastructure/vault/markdown-parser.js +145 -0
  350. package/dist/infrastructure/vault/markdown-parser.js.map +1 -0
  351. package/dist/infrastructure/vault/vault-fs-adapter.d.ts +17 -0
  352. package/dist/infrastructure/vault/vault-fs-adapter.d.ts.map +1 -0
  353. package/dist/infrastructure/vault/vault-fs-adapter.js +105 -0
  354. package/dist/infrastructure/vault/vault-fs-adapter.js.map +1 -0
  355. package/dist/infrastructure/workspace-registry/dependency-repository.d.ts +27 -0
  356. package/dist/infrastructure/workspace-registry/dependency-repository.d.ts.map +1 -0
  357. package/dist/infrastructure/workspace-registry/dependency-repository.js +89 -0
  358. package/dist/infrastructure/workspace-registry/dependency-repository.js.map +1 -0
  359. package/dist/infrastructure/workspace-registry/workspace-repository.d.ts +28 -0
  360. package/dist/infrastructure/workspace-registry/workspace-repository.d.ts.map +1 -0
  361. package/dist/infrastructure/workspace-registry/workspace-repository.js +108 -0
  362. package/dist/infrastructure/workspace-registry/workspace-repository.js.map +1 -0
  363. package/dist/tools/agent-tools.d.ts +14 -0
  364. package/dist/tools/agent-tools.d.ts.map +1 -0
  365. package/dist/tools/agent-tools.js +238 -0
  366. package/dist/tools/agent-tools.js.map +1 -0
  367. package/dist/tools/context-memory-tools.d.ts +16 -0
  368. package/dist/tools/context-memory-tools.d.ts.map +1 -0
  369. package/dist/tools/context-memory-tools.js +242 -0
  370. package/dist/tools/context-memory-tools.js.map +1 -0
  371. package/dist/tools/data-tools.d.ts +3 -0
  372. package/dist/tools/data-tools.d.ts.map +1 -0
  373. package/dist/tools/data-tools.js +383 -0
  374. package/dist/tools/data-tools.js.map +1 -0
  375. package/dist/tools/domain-map-tools.d.ts +41 -0
  376. package/dist/tools/domain-map-tools.d.ts.map +1 -0
  377. package/dist/tools/domain-map-tools.js +134 -0
  378. package/dist/tools/domain-map-tools.js.map +1 -0
  379. package/dist/tools/environment-tools.d.ts +85 -0
  380. package/dist/tools/environment-tools.d.ts.map +1 -0
  381. package/dist/tools/environment-tools.js +223 -0
  382. package/dist/tools/environment-tools.js.map +1 -0
  383. package/dist/tools/governance-tools.d.ts +7 -0
  384. package/dist/tools/governance-tools.d.ts.map +1 -0
  385. package/dist/tools/governance-tools.js +73 -0
  386. package/dist/tools/governance-tools.js.map +1 -0
  387. package/dist/tools/kanban-board-tools.d.ts +11 -0
  388. package/dist/tools/kanban-board-tools.d.ts.map +1 -0
  389. package/dist/tools/kanban-board-tools.js +354 -0
  390. package/dist/tools/kanban-board-tools.js.map +1 -0
  391. package/dist/tools/kanban-card-tools.d.ts +11 -0
  392. package/dist/tools/kanban-card-tools.d.ts.map +1 -0
  393. package/dist/tools/kanban-card-tools.js +407 -0
  394. package/dist/tools/kanban-card-tools.js.map +1 -0
  395. package/dist/tools/rag-tools.d.ts +10 -0
  396. package/dist/tools/rag-tools.d.ts.map +1 -0
  397. package/dist/tools/rag-tools.js +279 -0
  398. package/dist/tools/rag-tools.js.map +1 -0
  399. package/dist/tools/token-metrics-tools.d.ts +98 -0
  400. package/dist/tools/token-metrics-tools.d.ts.map +1 -0
  401. package/dist/tools/token-metrics-tools.js +287 -0
  402. package/dist/tools/token-metrics-tools.js.map +1 -0
  403. package/dist/tools/vault-manage-tool.d.ts +7 -0
  404. package/dist/tools/vault-manage-tool.d.ts.map +1 -0
  405. package/dist/tools/vault-manage-tool.js +193 -0
  406. package/dist/tools/vault-manage-tool.js.map +1 -0
  407. package/dist/tools/vault-tools.d.ts +7 -0
  408. package/dist/tools/vault-tools.d.ts.map +1 -0
  409. package/dist/tools/vault-tools.js +348 -0
  410. package/dist/tools/vault-tools.js.map +1 -0
  411. package/dist/tools/workspace-registry-tools.d.ts +93 -0
  412. package/dist/tools/workspace-registry-tools.d.ts.map +1 -0
  413. package/dist/tools/workspace-registry-tools.js +217 -0
  414. package/dist/tools/workspace-registry-tools.js.map +1 -0
  415. package/package.json +59 -0
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Vault Domain Services
3
+ *
4
+ * Stateless services for markdown parsing and link graph analysis.
5
+ * MarkdownParserService extracts structure (sections, tables, checkboxes, links).
6
+ * LinkGraphService analyzes wikilink relationships across documents.
7
+ *
8
+ * DDD: Domain Services - logic that spans multiple value objects
9
+ * SOLID: SRP - parsing and graph analysis are separate concerns
10
+ * SOLID: DIP - no external dependencies (pure domain logic)
11
+ */
12
+ import { HEADING_PATTERN, WIKILINK_PATTERN, CHECKBOX_PATTERN } from "./value-objects.js";
13
+ import { Section } from "./section.js";
14
+ import { MarkdownTable } from "./table.js";
15
+ // ── MarkdownParserService ─────────────────────────────────────────────
16
+ /**
17
+ * Parses markdown content into structural elements.
18
+ * Stateless — all methods are pure functions on input data.
19
+ */
20
+ export class MarkdownParserService {
21
+ /**
22
+ * Parse body text (without frontmatter) into a section tree.
23
+ * Returns top-level sections; each may contain subsections.
24
+ */
25
+ parseSections(bodyLines) {
26
+ const headings = [];
27
+ for (let i = 0; i < bodyLines.length; i++) {
28
+ const line = bodyLines[i];
29
+ const match = line.match(HEADING_PATTERN);
30
+ if (match !== null) {
31
+ const level = match[1].length;
32
+ const text = match[2].trim();
33
+ headings.push({ text, level, lineIndex: i });
34
+ }
35
+ }
36
+ if (headings.length === 0)
37
+ return [];
38
+ return buildSectionTree(headings, bodyLines);
39
+ }
40
+ /** Extract all checkboxes from lines. */
41
+ extractCheckboxes(lines) {
42
+ const checkboxes = [];
43
+ for (let i = 0; i < lines.length; i++) {
44
+ const line = lines[i];
45
+ const match = line.match(CHECKBOX_PATTERN);
46
+ if (match !== null) {
47
+ checkboxes.push({
48
+ text: match[3],
49
+ checked: match[2] === "x" || match[2] === "X",
50
+ line: i,
51
+ indentLevel: match[1].length,
52
+ });
53
+ }
54
+ }
55
+ return checkboxes;
56
+ }
57
+ /** Extract all wikilinks from content string. */
58
+ extractWikilinks(content) {
59
+ const lines = content.split("\n");
60
+ const wikilinks = [];
61
+ for (let i = 0; i < lines.length; i++) {
62
+ const line = lines[i];
63
+ const regex = new RegExp(WIKILINK_PATTERN.source, WIKILINK_PATTERN.flags);
64
+ let match;
65
+ while ((match = regex.exec(line)) !== null) {
66
+ wikilinks.push({
67
+ target: match[1],
68
+ alias: match[2],
69
+ line: i,
70
+ });
71
+ }
72
+ }
73
+ return wikilinks;
74
+ }
75
+ /** Extract all tables from lines. */
76
+ extractTables(lines) {
77
+ const tables = [];
78
+ let i = 0;
79
+ while (i < lines.length) {
80
+ const line = lines[i];
81
+ if (line.includes("|") && i + 1 < lines.length) {
82
+ const nextLine = lines[i + 1];
83
+ if (/^\s*\|?[\s:|-]+\|?\s*$/.test(nextLine)) {
84
+ const tableLines = [];
85
+ let j = i;
86
+ while (j < lines.length && lines[j].includes("|")) {
87
+ tableLines.push(lines[j]);
88
+ j++;
89
+ }
90
+ const table = MarkdownTable.parse(tableLines, i);
91
+ if (table !== null) {
92
+ tables.push(table);
93
+ i = j;
94
+ continue;
95
+ }
96
+ }
97
+ }
98
+ i++;
99
+ }
100
+ return tables;
101
+ }
102
+ }
103
+ // ── LinkGraphService ──────────────────────────────────────────────────
104
+ /**
105
+ * Analyzes wikilink relationships across a collection of documents.
106
+ * All methods are pure — they receive document collections as parameters.
107
+ */
108
+ export class LinkGraphService {
109
+ /** Get all outgoing wikilinks from a document. */
110
+ getOutgoingLinks(doc) {
111
+ return doc.getWikilinks();
112
+ }
113
+ /** Find all documents that link to a target path. */
114
+ getIncomingLinks(target, allDocs) {
115
+ const targetName = target.filename.toLowerCase();
116
+ const results = [];
117
+ for (const doc of allDocs) {
118
+ if (doc.path.equals(target))
119
+ continue;
120
+ const links = doc.getWikilinks();
121
+ for (const link of links) {
122
+ // Match by filename (Obsidian resolves [[Name]] to any matching file)
123
+ const linkTarget = link.target.toLowerCase();
124
+ // Check both exact path match and filename-only match
125
+ if (linkTarget === target.value.toLowerCase() ||
126
+ linkTarget === targetName ||
127
+ linkTarget.endsWith("/" + targetName)) {
128
+ results.push({ source: doc.path, link });
129
+ }
130
+ }
131
+ }
132
+ return results;
133
+ }
134
+ /** Find documents with no incoming links (orphans). Excludes HOME.md. */
135
+ getOrphanDocuments(allDocs) {
136
+ // Build set of all link targets (lowercase filenames)
137
+ const linkedTargets = new Set();
138
+ for (const doc of allDocs) {
139
+ const links = doc.getWikilinks();
140
+ for (const link of links) {
141
+ linkedTargets.add(link.target.toLowerCase());
142
+ }
143
+ }
144
+ const orphans = [];
145
+ for (const doc of allDocs) {
146
+ // Skip HOME.md (always a root node)
147
+ if (doc.path.filename.toLowerCase() === "home")
148
+ continue;
149
+ if (doc.path.filename.toLowerCase() === "readme")
150
+ continue;
151
+ const filename = doc.path.filename.toLowerCase();
152
+ const fullPath = doc.path.value.toLowerCase();
153
+ // Check if any link target matches this document
154
+ let isLinked = false;
155
+ for (const target of linkedTargets) {
156
+ if (target === filename ||
157
+ target === fullPath ||
158
+ target.endsWith("/" + filename)) {
159
+ isLinked = true;
160
+ break;
161
+ }
162
+ }
163
+ if (!isLinked) {
164
+ orphans.push(doc.path);
165
+ }
166
+ }
167
+ return orphans;
168
+ }
169
+ /** Compute graph statistics across all documents. */
170
+ getGraphStats(allDocs) {
171
+ let totalLinks = 0;
172
+ const linkCounts = new Map();
173
+ for (const doc of allDocs) {
174
+ const links = doc.getWikilinks();
175
+ totalLinks += links.length;
176
+ for (const link of links) {
177
+ const target = link.target.toLowerCase();
178
+ linkCounts.set(target, (linkCounts.get(target) ?? 0) + 1);
179
+ }
180
+ }
181
+ const orphans = this.getOrphanDocuments(allDocs);
182
+ // Sort by count, take top 10
183
+ const sorted = [...linkCounts.entries()]
184
+ .sort((a, b) => b[1] - a[1])
185
+ .slice(0, 10)
186
+ .map(([path, count]) => ({ path, count }));
187
+ return {
188
+ totalDocs: allDocs.length,
189
+ totalLinks,
190
+ orphans: orphans.length,
191
+ mostLinked: sorted,
192
+ };
193
+ }
194
+ }
195
+ // ── Private Helpers ───────────────────────────────────────────────────
196
+ /**
197
+ * Build a hierarchical section tree from flat heading list.
198
+ * H1 sections contain H2 subsections, H2 contain H3, etc.
199
+ */
200
+ function buildSectionTree(headings, allLines) {
201
+ if (headings.length === 0)
202
+ return [];
203
+ const topLevel = headings[0].level;
204
+ const sections = [];
205
+ let i = 0;
206
+ while (i < headings.length) {
207
+ const heading = headings[i];
208
+ // Only process headings at the top level for this call
209
+ if (heading.level !== topLevel) {
210
+ i++;
211
+ continue;
212
+ }
213
+ // Find the end of this section: next heading at same or higher level
214
+ let endLine;
215
+ const children = [];
216
+ let j = i + 1;
217
+ while (j < headings.length) {
218
+ if (headings[j].level <= topLevel)
219
+ break;
220
+ children.push(headings[j]);
221
+ j++;
222
+ }
223
+ // endLine is the line before the next same-level heading, or end of content
224
+ if (j < headings.length) {
225
+ endLine = headings[j].lineIndex - 1;
226
+ }
227
+ else {
228
+ endLine = allLines.length - 1;
229
+ }
230
+ // Extract content between heading line and endLine
231
+ const contentLines = allLines.slice(heading.lineIndex + 1, endLine + 1);
232
+ const content = contentLines.join("\n").trim();
233
+ // Recursively build subsections
234
+ const subsections = children.length > 0
235
+ ? buildSectionTree(children, allLines)
236
+ : [];
237
+ sections.push(Section.create({
238
+ heading: heading.text,
239
+ level: heading.level,
240
+ content,
241
+ startLine: heading.lineIndex,
242
+ endLine,
243
+ subsections,
244
+ }));
245
+ i = j;
246
+ }
247
+ return sections;
248
+ }
249
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/domain/vault/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Vault Table and Inline Element Value Objects
3
+ *
4
+ * MarkdownTable: parses and manipulates pipe-delimited markdown tables.
5
+ * Checkbox: represents a markdown checkbox item (- [ ] / - [x]).
6
+ * Wikilink: represents an Obsidian [[wikilink]] or [[path|alias]].
7
+ *
8
+ * All value objects are immutable. Mutators return new instances.
9
+ *
10
+ * DDD: Value Objects - equality by content, no identity
11
+ * SOLID: SRP - each type handles one structural concern
12
+ */
13
+ export interface Checkbox {
14
+ readonly text: string;
15
+ readonly checked: boolean;
16
+ readonly line: number;
17
+ readonly indentLevel: number;
18
+ }
19
+ export interface Wikilink {
20
+ readonly target: string;
21
+ readonly alias: string | undefined;
22
+ readonly line: number;
23
+ }
24
+ export type TableAlignment = "left" | "center" | "right" | "none";
25
+ /**
26
+ * Immutable representation of a pipe-delimited markdown table.
27
+ * Supports parsing, querying, mutation (returns new), and re-serialization.
28
+ */
29
+ export declare class MarkdownTable {
30
+ readonly headers: readonly string[];
31
+ readonly rows: readonly (readonly string[])[];
32
+ readonly alignments: readonly TableAlignment[];
33
+ readonly startLine: number;
34
+ readonly endLine: number;
35
+ private constructor();
36
+ /**
37
+ * Parse a markdown table from consecutive lines.
38
+ * Expects: header row, separator row, then data rows.
39
+ * Returns null if lines don't form a valid table.
40
+ */
41
+ static parse(lines: readonly string[], startLine: number): MarkdownTable | null;
42
+ /** Get all values in a column by header name. */
43
+ getColumn(name: string): readonly string[];
44
+ /** Get a row by zero-based index. */
45
+ getRow(index: number): readonly string[] | null;
46
+ /** Find rows where a column matches a value (exact match). */
47
+ findRows(column: string, value: string): readonly (readonly string[])[];
48
+ /** Return a new table with a row appended. */
49
+ withRowAppended(values: readonly string[]): MarkdownTable;
50
+ /**
51
+ * Return a new table with the first matching row updated.
52
+ * Matches by a specific column value, then applies updates by column name.
53
+ */
54
+ withRowUpdated(matchColumn: string, matchValue: string, updates: Record<string, string>): MarkdownTable;
55
+ /** Serialize back to aligned markdown table string. */
56
+ toMarkdown(): string;
57
+ }
58
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/domain/vault/table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAIlE;;;GAGG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO;IAcP;;;;OAIG;IACH,MAAM,CAAC,KAAK,CACV,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,GAChB,aAAa,GAAG,IAAI;IAkCvB,iDAAiD;IACjD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAM1C,qCAAqC;IACrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI;IAI/C,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE;IAMvE,8CAA8C;IAC9C,eAAe,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa;IAWzD;;;OAGG;IACH,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,aAAa;IA0BhB,uDAAuD;IACvD,UAAU,IAAI,MAAM;CA8CrB"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Vault Table and Inline Element Value Objects
3
+ *
4
+ * MarkdownTable: parses and manipulates pipe-delimited markdown tables.
5
+ * Checkbox: represents a markdown checkbox item (- [ ] / - [x]).
6
+ * Wikilink: represents an Obsidian [[wikilink]] or [[path|alias]].
7
+ *
8
+ * All value objects are immutable. Mutators return new instances.
9
+ *
10
+ * DDD: Value Objects - equality by content, no identity
11
+ * SOLID: SRP - each type handles one structural concern
12
+ */
13
+ // ── MarkdownTable ─────────────────────────────────────────────────────
14
+ /**
15
+ * Immutable representation of a pipe-delimited markdown table.
16
+ * Supports parsing, querying, mutation (returns new), and re-serialization.
17
+ */
18
+ export class MarkdownTable {
19
+ headers;
20
+ rows;
21
+ alignments;
22
+ startLine;
23
+ endLine;
24
+ constructor(params) {
25
+ this.headers = params.headers;
26
+ this.rows = params.rows;
27
+ this.alignments = params.alignments;
28
+ this.startLine = params.startLine;
29
+ this.endLine = params.endLine;
30
+ }
31
+ /**
32
+ * Parse a markdown table from consecutive lines.
33
+ * Expects: header row, separator row, then data rows.
34
+ * Returns null if lines don't form a valid table.
35
+ */
36
+ static parse(lines, startLine) {
37
+ if (lines.length < 2)
38
+ return null;
39
+ const headerLine = lines[0];
40
+ const separatorLine = lines[1];
41
+ if (headerLine === undefined || separatorLine === undefined)
42
+ return null;
43
+ // Validate separator row (must contain pipes and dashes)
44
+ if (!/^\s*\|?[\s:|-]+\|?\s*$/.test(separatorLine))
45
+ return null;
46
+ const headers = parsePipeRow(headerLine);
47
+ if (headers.length === 0)
48
+ return null;
49
+ const alignments = parseAlignments(separatorLine, headers.length);
50
+ const rows = [];
51
+ for (let i = 2; i < lines.length; i++) {
52
+ const line = lines[i];
53
+ if (line === undefined || !line.includes("|"))
54
+ break;
55
+ const cells = parsePipeRow(line);
56
+ // Pad or trim to match header count
57
+ const normalized = normalizeRow(cells, headers.length);
58
+ rows.push(normalized);
59
+ }
60
+ return new MarkdownTable({
61
+ headers,
62
+ rows,
63
+ alignments,
64
+ startLine,
65
+ endLine: startLine + 2 + rows.length - 1,
66
+ });
67
+ }
68
+ /** Get all values in a column by header name. */
69
+ getColumn(name) {
70
+ const idx = this.headers.indexOf(name);
71
+ if (idx === -1)
72
+ return [];
73
+ return this.rows.map((row) => row[idx] ?? "");
74
+ }
75
+ /** Get a row by zero-based index. */
76
+ getRow(index) {
77
+ return this.rows[index] ?? null;
78
+ }
79
+ /** Find rows where a column matches a value (exact match). */
80
+ findRows(column, value) {
81
+ const idx = this.headers.indexOf(column);
82
+ if (idx === -1)
83
+ return [];
84
+ return this.rows.filter((row) => (row[idx] ?? "") === value);
85
+ }
86
+ /** Return a new table with a row appended. */
87
+ withRowAppended(values) {
88
+ const normalized = normalizeRow([...values], this.headers.length);
89
+ return new MarkdownTable({
90
+ headers: this.headers,
91
+ rows: [...this.rows, normalized],
92
+ alignments: this.alignments,
93
+ startLine: this.startLine,
94
+ endLine: this.endLine + 1,
95
+ });
96
+ }
97
+ /**
98
+ * Return a new table with the first matching row updated.
99
+ * Matches by a specific column value, then applies updates by column name.
100
+ */
101
+ withRowUpdated(matchColumn, matchValue, updates) {
102
+ const matchIdx = this.headers.indexOf(matchColumn);
103
+ if (matchIdx === -1)
104
+ return this;
105
+ const newRows = this.rows.map((row) => {
106
+ if ((row[matchIdx] ?? "") !== matchValue)
107
+ return row;
108
+ const mutableRow = [...row];
109
+ for (const [col, val] of Object.entries(updates)) {
110
+ const colIdx = this.headers.indexOf(col);
111
+ if (colIdx !== -1) {
112
+ mutableRow[colIdx] = val;
113
+ }
114
+ }
115
+ return mutableRow;
116
+ });
117
+ return new MarkdownTable({
118
+ headers: this.headers,
119
+ rows: newRows,
120
+ alignments: this.alignments,
121
+ startLine: this.startLine,
122
+ endLine: this.endLine,
123
+ });
124
+ }
125
+ /** Serialize back to aligned markdown table string. */
126
+ toMarkdown() {
127
+ const colWidths = this.headers.map((h, i) => {
128
+ let max = h.length;
129
+ for (const row of this.rows) {
130
+ const cell = row[i] ?? "";
131
+ if (cell.length > max)
132
+ max = cell.length;
133
+ }
134
+ return max;
135
+ });
136
+ const pad = (text, width) => text + " ".repeat(Math.max(0, width - text.length));
137
+ const headerStr = "| " +
138
+ this.headers.map((h, i) => pad(h, colWidths[i])).join(" | ") +
139
+ " |";
140
+ const sepStr = "| " +
141
+ this.alignments
142
+ .map((align, i) => {
143
+ const width = colWidths[i];
144
+ switch (align) {
145
+ case "left":
146
+ return ":" + "-".repeat(Math.max(1, width - 1));
147
+ case "right":
148
+ return "-".repeat(Math.max(1, width - 1)) + ":";
149
+ case "center":
150
+ return ":" + "-".repeat(Math.max(1, width - 2)) + ":";
151
+ case "none":
152
+ return "-".repeat(width);
153
+ }
154
+ })
155
+ .join(" | ") +
156
+ " |";
157
+ const rowStrs = this.rows.map((row) => "| " +
158
+ row.map((cell, i) => pad(cell, colWidths[i])).join(" | ") +
159
+ " |");
160
+ return [headerStr, sepStr, ...rowStrs].join("\n");
161
+ }
162
+ }
163
+ // ── Private Helpers ───────────────────────────────────────────────────
164
+ function parsePipeRow(line) {
165
+ const trimmed = line.trim();
166
+ // Remove leading/trailing pipe
167
+ const inner = trimmed.startsWith("|")
168
+ ? trimmed.slice(1)
169
+ : trimmed;
170
+ const cleaned = inner.endsWith("|")
171
+ ? inner.slice(0, -1)
172
+ : inner;
173
+ return cleaned.split("|").map((cell) => cell.trim());
174
+ }
175
+ function parseAlignments(separatorLine, count) {
176
+ const cells = parsePipeRow(separatorLine);
177
+ const alignments = [];
178
+ for (let i = 0; i < count; i++) {
179
+ const cell = (cells[i] ?? "").trim();
180
+ const left = cell.startsWith(":");
181
+ const right = cell.endsWith(":");
182
+ if (left && right) {
183
+ alignments.push("center");
184
+ }
185
+ else if (right) {
186
+ alignments.push("right");
187
+ }
188
+ else if (left) {
189
+ alignments.push("left");
190
+ }
191
+ else {
192
+ alignments.push("none");
193
+ }
194
+ }
195
+ return alignments;
196
+ }
197
+ function normalizeRow(cells, targetLength) {
198
+ const result = [];
199
+ for (let i = 0; i < targetLength; i++) {
200
+ result.push(cells[i] ?? "");
201
+ }
202
+ return result;
203
+ }
204
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/domain/vault/table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqBH,yEAAyE;AAEzE;;;GAGG;AACH,MAAM,OAAO,aAAa;IACf,OAAO,CAAoB;IAC3B,IAAI,CAAiC;IACrC,UAAU,CAA4B;IACtC,SAAS,CAAS;IAClB,OAAO,CAAS;IAEzB,YAAoB,MAMnB;QACC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CACV,KAAwB,EACxB,SAAiB;QAEjB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,UAAU,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAEzE,yDAAyD;QACzD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAC;QAE/D,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,IAAI,GAA0B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM;YACrD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,oCAAoC;YACpC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO;YACP,IAAI;YACJ,UAAU;YACV,SAAS;YACT,OAAO,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,SAAS,CAAC,IAAY;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC9D,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,8CAA8C;IAC9C,eAAe,CAAC,MAAyB;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,cAAc,CACZ,WAAmB,EACnB,UAAkB,EAClB,OAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,UAAU;gBAAE,OAAO,GAAG,CAAC;YAErD,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;oBAClB,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,OAAO,UAA+B,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,UAAU;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;oBAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3C,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAClD,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtD,MAAM,SAAS,GACb,IAAI;YACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7D,IAAI,CAAC;QAEP,MAAM,MAAM,GACV,IAAI;YACJ,IAAI,CAAC,UAAU;iBACZ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;gBAC5B,QAAQ,KAAK,EAAE,CAAC;oBACd,KAAK,MAAM;wBACT,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oBAClD,KAAK,OAAO;wBACV,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBAClD,KAAK,QAAQ;wBACX,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBACxD,KAAK,MAAM;wBACT,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,CAAC;YACd,IAAI,CAAC;QAEP,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3B,CAAC,GAAG,EAAE,EAAE,CACN,IAAI;YACJ,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1D,IAAI,CACP,CAAC;QAEF,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;CACF;AAED,yEAAyE;AAEzE,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACnC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,OAAO,CAAC;IACZ,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC;IACV,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CACtB,aAAqB,EACrB,KAAa;IAEb,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,YAAoB;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Vault Timeline Value Objects
3
+ *
4
+ * Models the Chronos Timeline plugin syntax for Obsidian.
5
+ * TimelineEntry represents a single timeline item (event, period, point, marker).
6
+ * TimelineBlock represents a complete ```chronos code block.
7
+ *
8
+ * DDD: Value Objects - immutable, equality by content
9
+ * SOLID: SRP - timeline serialization/parsing only
10
+ */
11
+ export type ChronosItemType = "event" | "period" | "point" | "marker";
12
+ export type ChronosColor = "red" | "orange" | "yellow" | "green" | "blue" | "purple" | "pink" | "cyan";
13
+ export declare class TimelineEntry {
14
+ readonly type: ChronosItemType;
15
+ readonly startDate: string;
16
+ readonly endDate: string | undefined;
17
+ readonly name: string;
18
+ readonly description: string | undefined;
19
+ readonly color: ChronosColor | undefined;
20
+ readonly group: string | undefined;
21
+ private constructor();
22
+ static create(params: {
23
+ readonly type: ChronosItemType;
24
+ readonly startDate: string;
25
+ readonly endDate?: string;
26
+ readonly name: string;
27
+ readonly description?: string;
28
+ readonly color?: ChronosColor;
29
+ readonly group?: string;
30
+ }): TimelineEntry;
31
+ /**
32
+ * Serialize to a single Chronos timeline line.
33
+ * Format: `{prefix} [{date}] #color {Group} Name | Description`
34
+ */
35
+ toChronosLine(): string;
36
+ }
37
+ export declare class TimelineBlock {
38
+ readonly entries: readonly TimelineEntry[];
39
+ readonly flags: readonly string[];
40
+ private constructor();
41
+ static create(entries: readonly TimelineEntry[], flags?: readonly string[]): TimelineBlock;
42
+ /**
43
+ * Parse a Chronos code block body (content between ```chronos fences).
44
+ * Recognizes entry lines (- @ * =) and flag lines (>).
45
+ * Comments (#) are ignored.
46
+ */
47
+ static parse(blockContent: string): TimelineBlock;
48
+ /** Serialize to a complete ```chronos fenced code block. */
49
+ toChronosBlock(): string;
50
+ /** Return a new block with an entry appended. */
51
+ withEntry(entry: TimelineEntry): TimelineBlock;
52
+ }
53
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/domain/vault/timeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;AAWX,qBAAa,aAAa;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,OAAO;IAkBP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACpB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;QAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,aAAa;IAwBjB;;;OAGG;IACH,aAAa,IAAI,MAAM;CAuBxB;AAID,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC,OAAO;IAQP,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,aAAa;IAIhB;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa;IA0FjD,4DAA4D;IAC5D,cAAc,IAAI,MAAM;IAYxB,iDAAiD;IACjD,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa;CAG/C"}