@cyberismo/backend 1.2.0 → 1.3.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 (468) hide show
  1. package/dist/app.d.ts +5 -15
  2. package/dist/app.js +28 -38
  3. package/dist/app.js.map +1 -1
  4. package/dist/auth/index.d.ts +0 -12
  5. package/dist/auth/index.js +2 -12
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/keycloak.d.ts +0 -12
  8. package/dist/auth/keycloak.js +2 -12
  9. package/dist/auth/keycloak.js.map +1 -1
  10. package/dist/auth/mock.d.ts +0 -12
  11. package/dist/auth/mock.js +2 -12
  12. package/dist/auth/mock.js.map +1 -1
  13. package/dist/auth/types.d.ts +0 -12
  14. package/dist/auth/types.js +2 -12
  15. package/dist/auth/types.js.map +1 -1
  16. package/dist/common/errors.d.ts +12 -0
  17. package/dist/common/errors.js +31 -0
  18. package/dist/common/errors.js.map +1 -0
  19. package/dist/common/validationSchemas.d.ts +0 -12
  20. package/dist/common/validationSchemas.js +2 -12
  21. package/dist/common/validationSchemas.js.map +1 -1
  22. package/dist/domain/auth/index.d.ts +0 -12
  23. package/dist/domain/auth/index.js +2 -12
  24. package/dist/domain/auth/index.js.map +1 -1
  25. package/dist/domain/calculations/index.d.ts +0 -12
  26. package/dist/domain/calculations/index.js +4 -14
  27. package/dist/domain/calculations/index.js.map +1 -1
  28. package/dist/domain/calculations/schema.d.ts +0 -12
  29. package/dist/domain/calculations/schema.js +2 -12
  30. package/dist/domain/calculations/schema.js.map +1 -1
  31. package/dist/domain/calculations/service.d.ts +2 -14
  32. package/dist/domain/calculations/service.js +7 -17
  33. package/dist/domain/calculations/service.js.map +1 -1
  34. package/dist/domain/cardTypes/index.d.ts +0 -12
  35. package/dist/domain/cardTypes/index.js +10 -20
  36. package/dist/domain/cardTypes/index.js.map +1 -1
  37. package/dist/domain/cardTypes/schema.d.ts +0 -12
  38. package/dist/domain/cardTypes/schema.js +2 -12
  39. package/dist/domain/cardTypes/schema.js.map +1 -1
  40. package/dist/domain/cardTypes/service.d.ts +4 -16
  41. package/dist/domain/cardTypes/service.js +17 -25
  42. package/dist/domain/cardTypes/service.js.map +1 -1
  43. package/dist/domain/cards/index.d.ts +0 -12
  44. package/dist/domain/cards/index.js +120 -102
  45. package/dist/domain/cards/index.js.map +1 -1
  46. package/dist/domain/cards/lib.d.ts +6 -23
  47. package/dist/domain/cards/lib.js +7 -126
  48. package/dist/domain/cards/lib.js.map +1 -1
  49. package/dist/domain/cards/mermaid.d.ts +8 -0
  50. package/dist/domain/cards/mermaid.js +23 -0
  51. package/dist/domain/cards/mermaid.js.map +1 -0
  52. package/dist/domain/cards/schema.d.ts +6 -12
  53. package/dist/domain/cards/schema.js +6 -12
  54. package/dist/domain/cards/schema.js.map +1 -1
  55. package/dist/domain/cards/service.d.ts +28 -32
  56. package/dist/domain/cards/service.js +119 -83
  57. package/dist/domain/cards/service.js.map +1 -1
  58. package/dist/domain/connectors/index.d.ts +0 -12
  59. package/dist/domain/connectors/index.js +4 -14
  60. package/dist/domain/connectors/index.js.map +1 -1
  61. package/dist/domain/connectors/service.d.ts +2 -14
  62. package/dist/domain/connectors/service.js +4 -14
  63. package/dist/domain/connectors/service.js.map +1 -1
  64. package/dist/domain/events/events-by-project.d.ts +19 -0
  65. package/dist/domain/events/events-by-project.js +57 -0
  66. package/dist/domain/events/events-by-project.js.map +1 -0
  67. package/dist/domain/events/index.d.ts +0 -12
  68. package/dist/domain/events/index.js +3 -13
  69. package/dist/domain/events/index.js.map +1 -1
  70. package/dist/domain/events/lifetime.d.ts +0 -12
  71. package/dist/domain/events/lifetime.js +2 -12
  72. package/dist/domain/events/lifetime.js.map +1 -1
  73. package/dist/domain/events/project-events.d.ts +10 -14
  74. package/dist/domain/events/project-events.js +22 -18
  75. package/dist/domain/events/project-events.js.map +1 -1
  76. package/dist/domain/events/schema.d.ts +0 -12
  77. package/dist/domain/events/schema.js +2 -12
  78. package/dist/domain/events/schema.js.map +1 -1
  79. package/dist/domain/fieldTypes/index.d.ts +0 -12
  80. package/dist/domain/fieldTypes/index.js +6 -16
  81. package/dist/domain/fieldTypes/index.js.map +1 -1
  82. package/dist/domain/fieldTypes/schema.d.ts +0 -12
  83. package/dist/domain/fieldTypes/schema.js +2 -12
  84. package/dist/domain/fieldTypes/schema.js.map +1 -1
  85. package/dist/domain/fieldTypes/service.d.ts +4 -16
  86. package/dist/domain/fieldTypes/service.js +7 -17
  87. package/dist/domain/fieldTypes/service.js.map +1 -1
  88. package/dist/domain/graphModels/index.d.ts +0 -12
  89. package/dist/domain/graphModels/index.js +4 -14
  90. package/dist/domain/graphModels/index.js.map +1 -1
  91. package/dist/domain/graphModels/schema.d.ts +0 -12
  92. package/dist/domain/graphModels/schema.js +2 -12
  93. package/dist/domain/graphModels/schema.js.map +1 -1
  94. package/dist/domain/graphModels/service.d.ts +2 -14
  95. package/dist/domain/graphModels/service.js +4 -14
  96. package/dist/domain/graphModels/service.js.map +1 -1
  97. package/dist/domain/graphViews/index.d.ts +0 -12
  98. package/dist/domain/graphViews/index.js +4 -14
  99. package/dist/domain/graphViews/index.js.map +1 -1
  100. package/dist/domain/graphViews/schema.js +2 -0
  101. package/dist/domain/graphViews/schema.js.map +1 -1
  102. package/dist/domain/graphViews/service.d.ts +2 -14
  103. package/dist/domain/graphViews/service.js +4 -14
  104. package/dist/domain/graphViews/service.js.map +1 -1
  105. package/dist/domain/labels/index.d.ts +0 -12
  106. package/dist/domain/labels/index.js +4 -14
  107. package/dist/domain/labels/index.js.map +1 -1
  108. package/dist/domain/labels/service.d.ts +3 -15
  109. package/dist/domain/labels/service.js +5 -15
  110. package/dist/domain/labels/service.js.map +1 -1
  111. package/dist/domain/linkTypes/index.d.ts +0 -12
  112. package/dist/domain/linkTypes/index.js +6 -16
  113. package/dist/domain/linkTypes/index.js.map +1 -1
  114. package/dist/domain/linkTypes/schema.d.ts +0 -12
  115. package/dist/domain/linkTypes/schema.js +2 -12
  116. package/dist/domain/linkTypes/schema.js.map +1 -1
  117. package/dist/domain/linkTypes/service.d.ts +3 -15
  118. package/dist/domain/linkTypes/service.js +7 -17
  119. package/dist/domain/linkTypes/service.js.map +1 -1
  120. package/dist/domain/logicPrograms/index.d.ts +0 -12
  121. package/dist/domain/logicPrograms/index.js +4 -14
  122. package/dist/domain/logicPrograms/index.js.map +1 -1
  123. package/dist/domain/logicPrograms/service.d.ts +2 -14
  124. package/dist/domain/logicPrograms/service.js +5 -3
  125. package/dist/domain/logicPrograms/service.js.map +1 -1
  126. package/dist/domain/mcp/index.d.ts +3 -15
  127. package/dist/domain/mcp/index.js +27 -21
  128. package/dist/domain/mcp/index.js.map +1 -1
  129. package/dist/domain/project/index.d.ts +0 -12
  130. package/dist/domain/project/index.js +30 -40
  131. package/dist/domain/project/index.js.map +1 -1
  132. package/dist/domain/project/schema.d.ts +0 -12
  133. package/dist/domain/project/schema.js +2 -12
  134. package/dist/domain/project/schema.js.map +1 -1
  135. package/dist/domain/project/service.d.ts +16 -28
  136. package/dist/domain/project/service.js +48 -58
  137. package/dist/domain/project/service.js.map +1 -1
  138. package/dist/domain/projects/index.d.ts +2 -14
  139. package/dist/domain/projects/index.js +19 -36
  140. package/dist/domain/projects/index.js.map +1 -1
  141. package/dist/domain/projects/schema.d.ts +1 -12
  142. package/dist/domain/projects/schema.js +3 -12
  143. package/dist/domain/projects/schema.js.map +1 -1
  144. package/dist/domain/projects/service.d.ts +9 -35
  145. package/dist/domain/projects/service.js +12 -48
  146. package/dist/domain/projects/service.js.map +1 -1
  147. package/dist/domain/reports/index.d.ts +0 -12
  148. package/dist/domain/reports/index.js +4 -14
  149. package/dist/domain/reports/index.js.map +1 -1
  150. package/dist/domain/reports/schema.d.ts +0 -12
  151. package/dist/domain/reports/schema.js +2 -12
  152. package/dist/domain/reports/schema.js.map +1 -1
  153. package/dist/domain/reports/service.d.ts +2 -14
  154. package/dist/domain/reports/service.js +4 -14
  155. package/dist/domain/reports/service.js.map +1 -1
  156. package/dist/domain/resources/index.d.ts +0 -12
  157. package/dist/domain/resources/index.js +19 -26
  158. package/dist/domain/resources/index.js.map +1 -1
  159. package/dist/domain/resources/schema.js +2 -0
  160. package/dist/domain/resources/schema.js.map +1 -1
  161. package/dist/domain/resources/service.d.ts +11 -23
  162. package/dist/domain/resources/service.js +48 -59
  163. package/dist/domain/resources/service.js.map +1 -1
  164. package/dist/domain/skills/index.d.ts +0 -12
  165. package/dist/domain/skills/index.js +4 -14
  166. package/dist/domain/skills/index.js.map +1 -1
  167. package/dist/domain/skills/schema.d.ts +0 -12
  168. package/dist/domain/skills/schema.js +2 -12
  169. package/dist/domain/skills/schema.js.map +1 -1
  170. package/dist/domain/skills/service.d.ts +2 -14
  171. package/dist/domain/skills/service.js +4 -14
  172. package/dist/domain/skills/service.js.map +1 -1
  173. package/dist/domain/templates/index.d.ts +0 -12
  174. package/dist/domain/templates/index.js +8 -18
  175. package/dist/domain/templates/index.js.map +1 -1
  176. package/dist/domain/templates/schema.d.ts +0 -12
  177. package/dist/domain/templates/schema.js +2 -12
  178. package/dist/domain/templates/schema.js.map +1 -1
  179. package/dist/domain/templates/service.d.ts +4 -16
  180. package/dist/domain/templates/service.js +8 -18
  181. package/dist/domain/templates/service.js.map +1 -1
  182. package/dist/domain/tree/index.d.ts +0 -12
  183. package/dist/domain/tree/index.js +4 -14
  184. package/dist/domain/tree/index.js.map +1 -1
  185. package/dist/domain/tree/service.d.ts +3 -15
  186. package/dist/domain/tree/service.js +8 -15
  187. package/dist/domain/tree/service.js.map +1 -1
  188. package/dist/domain/workflows/index.d.ts +0 -12
  189. package/dist/domain/workflows/index.js +4 -14
  190. package/dist/domain/workflows/index.js.map +1 -1
  191. package/dist/domain/workflows/schema.d.ts +0 -12
  192. package/dist/domain/workflows/schema.js +2 -12
  193. package/dist/domain/workflows/schema.js.map +1 -1
  194. package/dist/domain/workflows/service.d.ts +2 -14
  195. package/dist/domain/workflows/service.js +4 -14
  196. package/dist/domain/workflows/service.js.map +1 -1
  197. package/dist/export.d.ts +6 -20
  198. package/dist/export.js +19 -29
  199. package/dist/export.js.map +1 -1
  200. package/dist/index.d.ts +3 -5
  201. package/dist/index.js +19 -43
  202. package/dist/index.js.map +1 -1
  203. package/dist/main.js +19 -30
  204. package/dist/main.js.map +1 -1
  205. package/dist/middleware/auth.d.ts +0 -12
  206. package/dist/middleware/auth.js +2 -12
  207. package/dist/middleware/auth.js.map +1 -1
  208. package/dist/middleware/commandManager.d.ts +15 -20
  209. package/dist/middleware/commandManager.js +27 -36
  210. package/dist/middleware/commandManager.js.map +1 -1
  211. package/dist/middleware/tree.js +2 -0
  212. package/dist/middleware/tree.js.map +1 -1
  213. package/dist/middleware/zvalidator.js +2 -0
  214. package/dist/middleware/zvalidator.js.map +1 -1
  215. package/dist/overlay.d.ts +4 -16
  216. package/dist/overlay.js +22 -17
  217. package/dist/overlay.js.map +1 -1
  218. package/dist/public/THIRD-PARTY.txt +1397 -286
  219. package/dist/public/assets/__vite-browser-external-DGgK3jMU.js +1 -0
  220. package/dist/public/assets/abnfDiagram-WEYOIA3C-B3qq7PKv.js +1 -0
  221. package/dist/public/assets/architecture-WOLXFQ4H-Bzau2LI0.js +1 -0
  222. package/dist/public/assets/architectureDiagram-ZHVYKT53-Bg0cUwdb.js +36 -0
  223. package/dist/public/assets/blockDiagram-RJAE7QA3-0RJB-ra-.js +140 -0
  224. package/dist/public/assets/c4Diagram-XDPPPE54-BzoQcLvf.js +38 -0
  225. package/dist/public/assets/channel-6BNdw4Ax.js +1 -0
  226. package/dist/public/assets/{chunk-SVP7TREG-CIQMl7hl.js → chunk-2E7WHVMD-6aqPk-Hk.js} +4 -4
  227. package/dist/public/assets/chunk-4EMNKR2T-vovNSAaE.js +1 -0
  228. package/dist/public/assets/{chunk-F27PBJKO-tDfs6zeO.js → chunk-55XCU76K-DXkKnt2y.js} +1 -1
  229. package/dist/public/assets/chunk-7S6XSTFO-B9bfO0l3.js +2 -0
  230. package/dist/public/assets/chunk-AQDTSKZB-ilLy_cYP.js +72 -0
  231. package/dist/public/assets/chunk-DSNLSHJZ-DAudglXu.js +129 -0
  232. package/dist/public/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  233. package/dist/public/assets/chunk-HAGFOTED-CSKFgs6b.js +62 -0
  234. package/dist/public/assets/chunk-HNE4Q36P-Cu5gPBVk.js +1 -0
  235. package/dist/public/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  236. package/dist/public/assets/chunk-NGNAAXSQ-DI_UYJZ4.js +136 -0
  237. package/dist/public/assets/chunk-NQOKRVIF-Bpcvhq1n.js +213 -0
  238. package/dist/public/assets/chunk-UHW7PFBP-BDjvOaTH.js +1 -0
  239. package/dist/public/assets/chunk-VQ5W62QI-DHTcO93W.js +1 -0
  240. package/dist/public/assets/chunk-WQQL4CDK-H6nAhuck.js +10 -0
  241. package/dist/public/assets/{chunk-XXDRQBXY-B7bWyHjt.js → chunk-XXDRQBXY-BUghdEVl.js} +1 -1
  242. package/dist/public/assets/chunk-YZO67HFG-D13E0_Yh.js +1 -0
  243. package/dist/public/assets/chunk-ZAUX2LTX-Dp5y-2wt.js +1 -0
  244. package/dist/public/assets/chunk-ZCHMQSOR-RJjlln1D.js +2 -0
  245. package/dist/public/assets/classDiagram-v2-4MYWR3UA-CAqiFCSv.js +217 -0
  246. package/dist/public/assets/cose-bilkent-JH36ORCC-C_VOHzoP.js +1 -0
  247. package/dist/public/assets/cynefin-EF2NZ3EQ-Dyk4ZPjK.js +1 -0
  248. package/dist/public/assets/{cynefinDiagram-5FMLGOSQ-_V_nrIhD.js → cynefinDiagram-WF24UDRP-b_Ia8gQX.js} +1 -1
  249. package/dist/public/assets/cytoscape.esm-GRKmfDkD.js +321 -0
  250. package/dist/public/assets/dagre-NK4GIZVX-CH1K1yF8.js +4 -0
  251. package/dist/public/assets/{diagram-VX7I27RA-De_UQv8C.js → diagram-CBK3MWTC-OaKd5avy.js} +13 -13
  252. package/dist/public/assets/diagram-I5XIIV2D-Cmu5z1ad.js +24 -0
  253. package/dist/public/assets/{diagram-S7CK7UJ4-25IjIKyo.js → diagram-ODIL2UCW-Cz1kkDDX.js} +7 -7
  254. package/dist/public/assets/diagram-PFBEJUXE-faMkmqUW.js +3 -0
  255. package/dist/public/assets/{diagram-UQ7AKVKN-C5VvsV7x.js → diagram-RJA3I4VV-nycvfte-.js} +2 -2
  256. package/dist/public/assets/diagram-TYUNFSNR-CjEv5QCm.js +200 -0
  257. package/dist/public/assets/{dist-BDCdLWk4.js → dist-DGs_yUrP.js} +1 -1
  258. package/dist/public/assets/ebnfDiagram-V4P3TTPT-DN-IIxCy.js +1 -0
  259. package/dist/public/assets/elk-QONTBCTQ-Bsam88GP.js +27 -0
  260. package/dist/public/assets/erDiagram-KYQIGQAA-DEU_qqNK.js +99 -0
  261. package/dist/public/assets/eventmodeling-K75KTNOO-Bl6NCM9E.js +1 -0
  262. package/dist/public/assets/flowDiagram-IUGLLWBU-Cl4qZ-36.js +1 -0
  263. package/dist/public/assets/ganttDiagram-R7GPNTJY-BmMd4aGi.js +292 -0
  264. package/dist/public/assets/gitGraph-VSP46ZUC-Q0H2PWek.js +1 -0
  265. package/dist/public/assets/gitGraphDiagram-PDYL7XHY-BlCTBYTj.js +106 -0
  266. package/dist/public/assets/index-CuBJ0hof.css +1 -0
  267. package/dist/public/assets/index-D701BZPh.js +2219 -0
  268. package/dist/public/assets/info-OHQRW6UA-D0TMPJxW.js +1 -0
  269. package/dist/public/assets/infoDiagram-MVDRKAX5-CljbtJXu.js +2 -0
  270. package/dist/public/assets/{ishikawaDiagram-5VMMS53U-KvT4DU1u.js → ishikawaDiagram-HPEHV2GE-_Y3Fr0hu.js} +6 -6
  271. package/dist/public/assets/{journeyDiagram-3NMN7TZE-PhGRkXkq.js → journeyDiagram-BOSHW7O7-Bo55jJ4m.js} +39 -39
  272. package/dist/public/assets/kanban-definition-FNSA4HC5-Cd-10MtF.js +89 -0
  273. package/dist/public/assets/katex-MEuSR36T.js +257 -0
  274. package/dist/public/assets/line-BDmh4sWC.js +1 -0
  275. package/dist/public/assets/linear-Dt7xjMrI.js +1 -0
  276. package/dist/public/assets/mermaid-parser.core-BJ1yyzvV.js +7 -0
  277. package/dist/public/assets/mindmap-definition-6OY57UG3-CRgumPuN.js +98 -0
  278. package/dist/public/assets/packet-JDAUHWVQ-DsTMT3Kw.js +1 -0
  279. package/dist/public/assets/pegDiagram-ECIUJNBX-BEGI5k3m.js +1 -0
  280. package/dist/public/assets/pie-XZMESJXO-COyqzA3N.js +1 -0
  281. package/dist/public/assets/pieDiagram-GNMPY74T-CrLJhZJJ.js +39 -0
  282. package/dist/public/assets/{quadrantDiagram-AXDQQJYC-B9dlNtZl.js → quadrantDiagram-D57K4MC3-Fl7HMHxK.js} +6 -6
  283. package/dist/public/assets/radar-ABXABTNO-DeXHKowk.js +1 -0
  284. package/dist/public/assets/railroad-I3PHUGI6-CUjKUdPz.js +1 -0
  285. package/dist/public/assets/railroad-abnf-LNEFI6M7-B1aEgHE6.js +1 -0
  286. package/dist/public/assets/railroad-ebnf-DWYD2UWJ-DmmI3Voz.js +1 -0
  287. package/dist/public/assets/railroad-peg-JR7BVNR7-BHzi9m7r.js +1 -0
  288. package/dist/public/assets/railroadDiagram-Y72NRBL7-D1oeE5fy.js +1 -0
  289. package/dist/public/assets/requirementDiagram-EQYSW5RA-BJDKK1aS.js +84 -0
  290. package/dist/public/assets/rolldown-runtime-BCiCTKAo.js +1 -0
  291. package/dist/public/assets/{sankeyDiagram-P5KCCOFB-C4rb2pZ9.js → sankeyDiagram-SY24JHO5-C4g0OwZ9.js} +7 -7
  292. package/dist/public/assets/sequenceDiagram-BLEHNHQU-CEvy4P-b.js +169 -0
  293. package/dist/public/assets/src-MPsEqXxq.js +1 -0
  294. package/dist/public/assets/stateDiagram-v2-A6IESKWZ-BFhvw4Gl.js +291 -0
  295. package/dist/public/assets/swimlanes-B3ENRKFQ-BIl_Q-FM.js +1 -0
  296. package/dist/public/assets/swimlanesDiagram-AYQRV4AK-rvDbKEHQ.js +8 -0
  297. package/dist/public/assets/timeline-definition-JXYKGLGB-qAoWTH4N.js +120 -0
  298. package/dist/public/assets/treeView-D4JQ5SDB-vq16JKkJ.js +1 -0
  299. package/dist/public/assets/treemap-SAJKECNS-C0IZTaDk.js +1 -0
  300. package/dist/public/assets/usecaseDiagram-WPOLBNNX-Dq8iz49r.js +328 -0
  301. package/dist/public/assets/vennDiagram-Q3Y3IDCW-Br4JmRjM.js +34 -0
  302. package/dist/public/assets/wardley-7MLQ67FV-CEPlAQ79.js +1 -0
  303. package/dist/public/assets/{wardleyDiagram-VM6X3IG4-BOXpwLCv.js → wardleyDiagram-IVAIDKWA-DURB7Ue6.js} +4 -4
  304. package/dist/public/assets/xychartDiagram-4URNHDU4-BiZywfhy.js +7 -0
  305. package/dist/public/index.html +27 -21
  306. package/dist/public/sbom.cdx.json +1 -1
  307. package/dist/types.d.ts +0 -12
  308. package/dist/types.js +2 -12
  309. package/dist/types.js.map +1 -1
  310. package/dist/utils.d.ts +12 -5
  311. package/dist/utils.js +18 -43
  312. package/dist/utils.js.map +1 -1
  313. package/package.json +13 -12
  314. package/src/app.ts +33 -43
  315. package/src/auth/index.ts +2 -12
  316. package/src/auth/keycloak.ts +2 -12
  317. package/src/auth/mock.ts +2 -12
  318. package/src/auth/types.ts +2 -12
  319. package/src/common/errors.ts +45 -0
  320. package/src/common/validationSchemas.ts +3 -12
  321. package/src/domain/auth/index.ts +2 -12
  322. package/src/domain/calculations/index.ts +4 -14
  323. package/src/domain/calculations/schema.ts +2 -12
  324. package/src/domain/calculations/service.ts +8 -21
  325. package/src/domain/cardTypes/index.ts +10 -20
  326. package/src/domain/cardTypes/schema.ts +3 -12
  327. package/src/domain/cardTypes/service.ts +22 -29
  328. package/src/domain/cards/index.ts +158 -128
  329. package/src/domain/cards/lib.ts +9 -161
  330. package/src/domain/cards/mermaid.ts +25 -0
  331. package/src/domain/cards/schema.ts +8 -12
  332. package/src/domain/cards/service.ts +165 -118
  333. package/src/domain/connectors/index.ts +5 -14
  334. package/src/domain/connectors/service.ts +5 -20
  335. package/src/domain/events/events-by-project.ts +59 -0
  336. package/src/domain/events/index.ts +3 -13
  337. package/src/domain/events/lifetime.ts +2 -12
  338. package/src/domain/events/project-events.ts +30 -18
  339. package/src/domain/events/schema.ts +2 -12
  340. package/src/domain/fieldTypes/index.ts +6 -16
  341. package/src/domain/fieldTypes/schema.ts +3 -12
  342. package/src/domain/fieldTypes/service.ts +9 -21
  343. package/src/domain/graphModels/index.ts +4 -14
  344. package/src/domain/graphModels/schema.ts +3 -12
  345. package/src/domain/graphModels/service.ts +5 -18
  346. package/src/domain/graphViews/index.ts +4 -14
  347. package/src/domain/graphViews/schema.ts +3 -0
  348. package/src/domain/graphViews/service.ts +5 -18
  349. package/src/domain/labels/index.ts +4 -14
  350. package/src/domain/labels/service.ts +6 -16
  351. package/src/domain/linkTypes/index.ts +6 -16
  352. package/src/domain/linkTypes/schema.ts +2 -12
  353. package/src/domain/linkTypes/service.ts +8 -21
  354. package/src/domain/logicPrograms/index.ts +5 -17
  355. package/src/domain/logicPrograms/service.ts +7 -16
  356. package/src/domain/mcp/index.ts +33 -24
  357. package/src/domain/project/index.ts +34 -40
  358. package/src/domain/project/schema.ts +2 -12
  359. package/src/domain/project/service.ts +56 -71
  360. package/src/domain/projects/index.ts +34 -50
  361. package/src/domain/projects/schema.ts +3 -12
  362. package/src/domain/projects/service.ts +18 -88
  363. package/src/domain/reports/index.ts +4 -14
  364. package/src/domain/reports/schema.ts +2 -12
  365. package/src/domain/reports/service.ts +5 -18
  366. package/src/domain/resources/index.ts +19 -30
  367. package/src/domain/resources/schema.ts +3 -0
  368. package/src/domain/resources/service.ts +55 -90
  369. package/src/domain/skills/index.ts +4 -14
  370. package/src/domain/skills/schema.ts +2 -12
  371. package/src/domain/skills/service.ts +5 -15
  372. package/src/domain/templates/index.ts +8 -18
  373. package/src/domain/templates/schema.ts +2 -12
  374. package/src/domain/templates/service.ts +9 -22
  375. package/src/domain/tree/index.ts +4 -14
  376. package/src/domain/tree/service.ts +10 -21
  377. package/src/domain/workflows/index.ts +4 -14
  378. package/src/domain/workflows/schema.ts +2 -12
  379. package/src/domain/workflows/service.ts +5 -18
  380. package/src/export.ts +24 -33
  381. package/src/index.ts +29 -48
  382. package/src/main.ts +25 -35
  383. package/src/middleware/auth.ts +2 -12
  384. package/src/middleware/commandManager.ts +35 -50
  385. package/src/middleware/tree.ts +3 -0
  386. package/src/middleware/zvalidator.ts +3 -0
  387. package/src/overlay.ts +29 -19
  388. package/src/types.ts +2 -12
  389. package/src/utils.ts +26 -46
  390. package/dist/project-errors.d.ts +0 -18
  391. package/dist/project-errors.js +0 -25
  392. package/dist/project-errors.js.map +0 -1
  393. package/dist/project-registry.d.ts +0 -65
  394. package/dist/project-registry.js +0 -121
  395. package/dist/project-registry.js.map +0 -1
  396. package/dist/public/assets/__vite-browser-external-PaJ7c2l8.js +0 -1
  397. package/dist/public/assets/abnfDiagram-VCTEODGH-DB2dfOGe.js +0 -1
  398. package/dist/public/assets/architecture-7GRP2DOG-2V0X8hxt.js +0 -1
  399. package/dist/public/assets/architectureDiagram-5GKGNRK7-CRhUR2Ul.js +0 -36
  400. package/dist/public/assets/blockDiagram-I7D4REHJ-DJKsYF1v.js +0 -129
  401. package/dist/public/assets/c4Diagram-7LVT6UL2-BTwMzoAF.js +0 -38
  402. package/dist/public/assets/channel-C0JtPpMA.js +0 -1
  403. package/dist/public/assets/chunk-4HAMMTFA-DjjgrBsB.js +0 -62
  404. package/dist/public/assets/chunk-75Z2AOVW-CKqXRGJV.js +0 -2
  405. package/dist/public/assets/chunk-DU6HZSFF-iJGdiRt7.js +0 -127
  406. package/dist/public/assets/chunk-FOHPRMQF-DzxwRta7.js +0 -161
  407. package/dist/public/assets/chunk-GMAD6QVW-DxHVEaGj.js +0 -72
  408. package/dist/public/assets/chunk-GVQU2GXP-AMxD4_Ta.js +0 -1
  409. package/dist/public/assets/chunk-IMKFNOWR-0rz8QrYC.js +0 -231
  410. package/dist/public/assets/chunk-L3NEJ4N5-BK3KAKMe.js +0 -1
  411. package/dist/public/assets/chunk-OSK3NFVY-B8MdrI_M.js +0 -10
  412. package/dist/public/assets/chunk-P2QGCYS3-D3J5AcHg.js +0 -1
  413. package/dist/public/assets/chunk-POPQ4Y6H-CsYg_XkK.js +0 -1
  414. package/dist/public/assets/chunk-PWAF6VOD-D9cdEIZp.js +0 -1
  415. package/dist/public/assets/chunk-SHT3W25Y-1jjokCf3.js +0 -168
  416. package/dist/public/assets/chunk-TICWLB2K-Ccsy2PYz.js +0 -206
  417. package/dist/public/assets/classDiagram-ZZMXUADV-mWyXNAXi.js +0 -1
  418. package/dist/public/assets/classDiagram-v2-VYDZK3BY-mWyXNAXi.js +0 -1
  419. package/dist/public/assets/cose-bilkent-JH36ORCC-DPzc3Pv4.js +0 -1
  420. package/dist/public/assets/cynefin-OW5HDTMX-BIVDCYOU.js +0 -1
  421. package/dist/public/assets/cytoscape.esm-NgwPT4ez.js +0 -321
  422. package/dist/public/assets/dagre-C-rnJpZF.js +0 -1
  423. package/dist/public/assets/dagre-GXQ25YYZ-CJc0wc6f.js +0 -4
  424. package/dist/public/assets/diagram-VSXAHHWV-Dw3rKVL_.js +0 -3
  425. package/dist/public/assets/diagram-Z3DM3KII-Bd-65QQW.js +0 -24
  426. package/dist/public/assets/ebnfDiagram-PWID7BFC-CrxdET5U.js +0 -1
  427. package/dist/public/assets/erDiagram-RLTQ6QDP-BKo0Uyna.js +0 -99
  428. package/dist/public/assets/eventmodeling-NTZA5JFV-DKkAdJZd.js +0 -1
  429. package/dist/public/assets/flowDiagram-HODETNUW-CEE2wjdt.js +0 -1
  430. package/dist/public/assets/ganttDiagram-EL5Y4UJY-BHFn8vk0.js +0 -292
  431. package/dist/public/assets/gitGraph-4MIJSDKK-Bpvnb45u.js +0 -1
  432. package/dist/public/assets/gitGraphDiagram-WWUBYQGX-Bw0EoxBY.js +0 -106
  433. package/dist/public/assets/index-D3HS7YxF.js +0 -2228
  434. package/dist/public/assets/index-Sv3WxZ_8.css +0 -1
  435. package/dist/public/assets/info-A6RAGUB7-BvvG_zrk.js +0 -1
  436. package/dist/public/assets/infoDiagram-27XIBGKW-CtpdJmtL.js +0 -2
  437. package/dist/public/assets/kanban-definition-UXKFOSKX-Oyx5QgRq.js +0 -89
  438. package/dist/public/assets/katex-ZlcWpGUi.js +0 -257
  439. package/dist/public/assets/line-Dr41HTk1.js +0 -1
  440. package/dist/public/assets/linear-DDBi9FwZ.js +0 -1
  441. package/dist/public/assets/mermaid-parser.core-DsIAxDBa.js +0 -7
  442. package/dist/public/assets/mindmap-definition-YA3MSWOX-r8hvd6gP.js +0 -96
  443. package/dist/public/assets/packet-AYTQ26CC-B0EpJ2Sc.js +0 -1
  444. package/dist/public/assets/pegDiagram-XKGWAZYB-DaNkQTQF.js +0 -1
  445. package/dist/public/assets/pie-WAS4IAKB-Dt2zttL9.js +0 -1
  446. package/dist/public/assets/pieDiagram-E7YTZNPT-x0XWEGbd.js +0 -39
  447. package/dist/public/assets/radar-RG4KPBEZ-DjbR4-5l.js +0 -1
  448. package/dist/public/assets/railroad-74A4TZTK-Bk3B5r_R.js +0 -1
  449. package/dist/public/assets/railroad-abnf-HS5TGJTU-DxaWfACD.js +0 -1
  450. package/dist/public/assets/railroad-ebnf-LZEXJU2U-DscxXZO0.js +0 -1
  451. package/dist/public/assets/railroad-peg-WCYAUIDC-BCWzRFzw.js +0 -1
  452. package/dist/public/assets/railroadDiagram-O6MQD6OU-DhwsoX6A.js +0 -1
  453. package/dist/public/assets/requirementDiagram-BXWQKSXE-BiqZ6axf.js +0 -84
  454. package/dist/public/assets/rolldown-runtime-B0Z9INg1.js +0 -1
  455. package/dist/public/assets/sequenceDiagram-WJ2MYXX4-DRKTnGD7.js +0 -162
  456. package/dist/public/assets/src-an_qrnIj.js +0 -1
  457. package/dist/public/assets/stateDiagram-D77RDMKH-xxdybg5Z.js +0 -1
  458. package/dist/public/assets/stateDiagram-v2-MP3YSRHH-CXzmJy_a.js +0 -1
  459. package/dist/public/assets/swimlanes-42K2YHIH-DyGI1gI6.js +0 -1
  460. package/dist/public/assets/swimlanesDiagram-VR7AAH4N-7hqb6VoW.js +0 -8
  461. package/dist/public/assets/timeline-definition-24CTP7MA-C2pIp77Q.js +0 -120
  462. package/dist/public/assets/treeView-Q6P3EWNA-CxRtaaB8.js +0 -1
  463. package/dist/public/assets/treemap-WGGIJYW6-G1IHiwTa.js +0 -1
  464. package/dist/public/assets/vennDiagram-4TSXK5OY-CwimQRR9.js +0 -34
  465. package/dist/public/assets/wardley-WFR3VGLG-DkQ3TjZX.js +0 -1
  466. package/dist/public/assets/xychartDiagram-S5SC5T6Z-ChOPYsHc.js +0 -7
  467. package/src/project-errors.ts +0 -33
  468. package/src/project-registry.ts +0 -161
@@ -1,23 +1,15 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2025
4
- This program is free software: you can redistribute it and/or modify it under
5
- the terms of the GNU Affero General Public License version 3 as published by
6
- the Free Software Foundation.
7
- This program is distributed in the hope that it will be useful, but WITHOUT
8
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
- FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
- details. You should have received a copy of the GNU Affero General Public
11
- License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
- */
1
+ // SPDX-FileCopyrightText: Cyberismo Ltd and contributors
2
+ // SPDX-License-Identifier: AGPL-3.0-only
13
3
 
14
4
  import { Hono } from 'hono';
15
5
  import { randomUUID } from 'node:crypto';
16
6
  import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';
17
- import { createMcpServer, type ProjectProvider } from '@cyberismo/mcp';
7
+ import { createMcpServer, type McpUser } from '@cyberismo/mcp';
8
+ import type { ProjectDirectory } from '@cyberismo/data-handler';
9
+ import type { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
18
10
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
19
11
  import { requireRole } from '../../middleware/auth.js';
20
- import { UserRole, type AppVars } from '../../types.js';
12
+ import { UserRole, type AppVars, type UserInfo } from '../../types.js';
21
13
 
22
14
  const MAX_SESSIONS = 100;
23
15
  const MAX_SESSIONS_PER_USER = 5;
@@ -73,11 +65,22 @@ const cleanupInterval = setInterval(() => {
73
65
  }, CLEANUP_INTERVAL_MS);
74
66
  cleanupInterval.unref();
75
67
 
68
+ // The request's user, in the form the MCP server builds its handle from.
69
+ function authInfoOf(user: UserInfo): AuthInfo {
70
+ const mcpUser: McpUser = {
71
+ id: user.id,
72
+ name: user.name,
73
+ email: user.email,
74
+ kind: user.role === UserRole.Connector ? 'connector' : 'user',
75
+ };
76
+ return { token: '', clientId: user.id, scopes: [], extra: { user: mcpUser } };
77
+ }
78
+
76
79
  /**
77
- * Create an MCP HTTP router that serves all projects via the given provider.
80
+ * Create an MCP HTTP router that serves all projects of the given directory.
78
81
  */
79
82
  export function createMcpRouter(
80
- provider: ProjectProvider,
83
+ directory: ProjectDirectory,
81
84
  ): Hono<{ Variables: AppVars }> {
82
85
  const router = new Hono<{ Variables: AppVars }>();
83
86
 
@@ -86,21 +89,26 @@ export function createMcpRouter(
86
89
  * Supports POST (messages) and DELETE (session cleanup).
87
90
  */
88
91
  router.all('/', requireRole(UserRole.Editor), async (c) => {
92
+ const user = c.get('user')!;
89
93
  const sessionId = c.req.header('mcp-session-id');
94
+ // Another user's session is answered as if it did not exist.
95
+ const found = sessionId ? sessions.get(sessionId) : undefined;
96
+ const session = found?.userId === user.id ? found : undefined;
90
97
 
91
98
  // Handle DELETE before routing to existing session so it always runs cleanup
92
99
  if (c.req.method === 'DELETE') {
93
- if (sessionId) {
94
- await destroySession(sessionId);
100
+ if (session) {
101
+ await destroySession(sessionId!);
95
102
  }
96
103
  return c.json({ message: 'Session closed' });
97
104
  }
98
105
 
99
106
  // Handle existing session
100
- if (sessionId && sessions.has(sessionId)) {
101
- const session = sessions.get(sessionId)!;
107
+ if (session) {
102
108
  session.lastActivity = Date.now();
103
- const response = await session.transport.handleRequest(c.req.raw);
109
+ const response = await session.transport.handleRequest(c.req.raw, {
110
+ authInfo: authInfoOf(user),
111
+ });
104
112
  return response;
105
113
  }
106
114
 
@@ -122,7 +130,6 @@ export function createMcpRouter(
122
130
  return c.json({ error: 'Too many active sessions' }, 503);
123
131
  }
124
132
 
125
- const user = c.get('user')!;
126
133
  const userSessionCount = [...sessions.values()].filter(
127
134
  (s) => s.userId === user.id,
128
135
  ).length;
@@ -153,10 +160,12 @@ export function createMcpRouter(
153
160
  }
154
161
  };
155
162
 
156
- const server = createMcpServer(provider);
163
+ const server = createMcpServer(directory);
157
164
  await server.connect(transport);
158
165
 
159
- const response = await transport.handleRequest(c.req.raw);
166
+ const response = await transport.handleRequest(c.req.raw, {
167
+ authInfo: authInfoOf(user),
168
+ });
160
169
  return response;
161
170
  });
162
171
 
@@ -1,15 +1,5 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2025
4
- This program is free software: you can redistribute it and/or modify it under
5
- the terms of the GNU Affero General Public License version 3 as published by
6
- the Free Software Foundation.
7
- This program is distributed in the hope that it will be useful, but WITHOUT
8
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
- FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
- details. You should have received a copy of the GNU Affero General Public
11
- License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
- */
1
+ // SPDX-FileCopyrightText: Cyberismo Ltd and contributors
2
+ // SPDX-License-Identifier: AGPL-3.0-only
13
3
 
14
4
  import { Hono } from 'hono';
15
5
  import { disableSSG } from 'hono/ssg';
@@ -31,9 +21,9 @@ import { requireRole } from '../../middleware/auth.js';
31
21
  const router = new Hono();
32
22
 
33
23
  router.get('/', requireRole(UserRole.Reader), async (c) => {
34
- const commands = c.get('commands');
24
+ const ws = c.get('ws');
35
25
 
36
- const project = await projectService.getProject(commands);
26
+ const project = await projectService.getProject(ws);
37
27
  return c.json(project);
38
28
  });
39
29
 
@@ -42,17 +32,21 @@ router.patch(
42
32
  requireRole(UserRole.Admin),
43
33
  zValidator('json', updateProjectSchema),
44
34
  async (c) => {
45
- const commands = c.get('commands');
35
+ const ws = c.get('ws');
46
36
  const updates = c.req.valid('json');
47
37
 
48
- const project = await projectService.updateProject(commands, updates);
38
+ const project = await projectService.updateProject(
39
+ ws,
40
+ c.get('directory'),
41
+ updates,
42
+ );
49
43
  return c.json(project);
50
44
  },
51
45
  );
52
46
 
53
47
  router.post('/modules/update', requireRole(UserRole.Admin), async (c) => {
54
- const commands = c.get('commands');
55
- await projectService.updateAllModules(commands);
48
+ const ws = c.get('ws');
49
+ await projectService.updateAllModules(ws);
56
50
  return c.json({ message: 'All modules updated' });
57
51
  });
58
52
 
@@ -62,10 +56,10 @@ router.post(
62
56
  zValidator('param', moduleParamSchema),
63
57
  zValidator('json', updateModuleSchema),
64
58
  async (c) => {
65
- const commands = c.get('commands');
59
+ const ws = c.get('ws');
66
60
  const { module } = c.req.valid('param');
67
61
  const { range } = c.req.valid('json');
68
- await projectService.updateModule(commands, module, range);
62
+ await projectService.updateModule(ws, module, range);
69
63
  return c.json({ message: 'Module updated' });
70
64
  },
71
65
  );
@@ -77,9 +71,9 @@ router.get(
77
71
  requireRole(UserRole.Admin),
78
72
  zValidator('query', moduleVersionsQuerySchema),
79
73
  async (c) => {
80
- const commands = c.get('commands');
74
+ const ws = c.get('ws');
81
75
  const target = c.req.valid('query');
82
- return c.json(await projectService.listModuleVersions(commands, target));
76
+ return c.json(await projectService.listModuleVersions(ws, target));
83
77
  },
84
78
  );
85
79
 
@@ -88,14 +82,14 @@ router.get(
88
82
  disableSSG(),
89
83
  requireRole(UserRole.Admin),
90
84
  async (c) => {
91
- const commands = c.get('commands');
92
- return c.json(await projectService.getUpdatePlan(commands));
85
+ const ws = c.get('ws');
86
+ return c.json(await projectService.getUpdatePlan(ws));
93
87
  },
94
88
  );
95
89
 
96
90
  router.get('/modules/importable', requireRole(UserRole.Reader), async (c) => {
97
- const commands = c.get('commands');
98
- const modules = await projectService.getImportableModules(commands);
91
+ const ws = c.get('ws');
92
+ const modules = await projectService.getImportableModules(ws);
99
93
  return c.json(modules);
100
94
  });
101
95
 
@@ -104,9 +98,9 @@ router.post(
104
98
  requireRole(UserRole.Admin),
105
99
  zValidator('json', importModuleSchema),
106
100
  async (c) => {
107
- const commands = c.get('commands');
101
+ const ws = c.get('ws');
108
102
  const { source, range } = c.req.valid('json');
109
- await projectService.importModule(commands, source, range);
103
+ await projectService.importModule(ws, source, range);
110
104
  return c.json({ message: 'Module imported successfully' });
111
105
  },
112
106
  );
@@ -116,16 +110,16 @@ router.delete(
116
110
  requireRole(UserRole.Admin),
117
111
  zValidator('param', moduleParamSchema),
118
112
  async (c) => {
119
- const commands = c.get('commands');
113
+ const ws = c.get('ws');
120
114
  const { module } = c.req.valid('param');
121
- await projectService.deleteModule(commands, module);
115
+ await projectService.deleteModule(ws, module);
122
116
  return c.json({ message: 'Module removed' });
123
117
  },
124
118
  );
125
119
 
126
120
  router.get('/hubs', requireRole(UserRole.Reader), async (c) => {
127
- const commands = c.get('commands');
128
- const hubs = await projectService.getHubs(commands);
121
+ const ws = c.get('ws');
122
+ const hubs = await projectService.getHubs(ws);
129
123
  return c.json(hubs);
130
124
  });
131
125
 
@@ -134,9 +128,9 @@ router.post(
134
128
  requireRole(UserRole.Admin),
135
129
  zValidator('json', addHubSchema),
136
130
  async (c) => {
137
- const commands = c.get('commands');
131
+ const ws = c.get('ws');
138
132
  const { location } = c.req.valid('json');
139
- const unreachable = await projectService.addHub(commands, location);
133
+ const unreachable = await projectService.addHub(ws, location);
140
134
  return c.json({ message: 'Hub added', unreachable });
141
135
  },
142
136
  );
@@ -146,16 +140,16 @@ router.delete(
146
140
  requireRole(UserRole.Admin),
147
141
  zValidator('query', removeHubSchema),
148
142
  async (c) => {
149
- const commands = c.get('commands');
143
+ const ws = c.get('ws');
150
144
  const { location } = c.req.valid('query');
151
- await projectService.removeHub(commands, location);
145
+ await projectService.removeHub(ws, location);
152
146
  return c.json({ message: 'Hub removed' });
153
147
  },
154
148
  );
155
149
 
156
150
  router.post('/hubs/fetch', requireRole(UserRole.Admin), async (c) => {
157
- const commands = c.get('commands');
158
- const unreachable = await projectService.fetchHubs(commands);
151
+ const ws = c.get('ws');
152
+ const unreachable = await projectService.fetchHubs(ws);
159
153
  return c.json({ message: 'Hubs fetched', unreachable });
160
154
  });
161
155
 
@@ -167,9 +161,9 @@ router.post(
167
161
  requireRole(UserRole.Admin),
168
162
  zValidator('json', cleanSchema),
169
163
  async (c) => {
170
- const commands = c.get('commands');
164
+ const ws = c.get('ws');
171
165
  const { dryRun } = c.req.valid('json');
172
- const result = await projectService.cleanProject(commands, dryRun);
166
+ const result = await projectService.cleanProject(ws, dryRun);
173
167
  return c.json(result);
174
168
  },
175
169
  );
@@ -1,15 +1,5 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2025
4
- This program is free software: you can redistribute it and/or modify it under
5
- the terms of the GNU Affero General Public License version 3 as published by
6
- the Free Software Foundation.
7
- This program is distributed in the hope that it will be useful, but WITHOUT
8
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
- FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
- details. You should have received a copy of the GNU Affero General Public
11
- License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
- */
1
+ // SPDX-FileCopyrightText: Cyberismo Ltd and contributors
2
+ // SPDX-License-Identifier: AGPL-3.0-only
13
3
 
14
4
  import { z } from 'zod';
15
5
 
@@ -1,26 +1,14 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2025
4
- This program is free software: you can redistribute it and/or modify it under
5
- the terms of the GNU Affero General Public License version 3 as published by
6
- the Free Software Foundation.
7
- This program is distributed in the hope that it will be useful, but WITHOUT
8
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
- FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
- details. You should have received a copy of the GNU Affero General Public
11
- License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
- */
1
+ // SPDX-FileCopyrightText: Cyberismo Ltd and contributors
2
+ // SPDX-License-Identifier: AGPL-3.0-only
13
3
 
4
+ import { type ProjectDirectory, type Workspace } from '@cyberismo/data-handler';
14
5
  import {
15
6
  type CleanResult,
16
- type CommandManager,
17
7
  type HubFetchFailure,
18
8
  type ModuleSettingFromHub,
19
9
  type ProjectModuleInfo,
20
10
  type UpdatePlan,
21
- } from '@cyberismo/data-handler';
22
-
23
- export type { CleanResult } from '@cyberismo/data-handler';
11
+ } from '@cyberismo/model';
24
12
 
25
13
  // Never carries the module's source location.
26
14
  export interface ProjectModule extends ProjectModuleInfo {
@@ -59,11 +47,11 @@ export interface HubInfo {
59
47
  }
60
48
 
61
49
  async function toModuleInfo(
62
- commands: CommandManager,
50
+ ws: Workspace,
63
51
  row: ProjectModuleInfo,
64
52
  ): Promise<ProjectModule> {
65
53
  try {
66
- const data = await commands.modulesCmd.show(row.name);
54
+ const data = await ws.modules.show(row.name);
67
55
  return {
68
56
  ...row,
69
57
  name: data.name || row.name,
@@ -74,17 +62,15 @@ async function toModuleInfo(
74
62
  }
75
63
  }
76
64
 
77
- export async function getProject(
78
- commands: CommandManager,
79
- ): Promise<ProjectInfo> {
80
- return commands.consistent(async () => {
81
- const project = await commands.showCmd.showProject();
82
- const modules = await commands.modulesCmd.inventory();
65
+ export async function getProject(ws: Workspace): Promise<ProjectInfo> {
66
+ return ws.consistent(async () => {
67
+ const project = await ws.settings.info();
68
+ const modules = await ws.modules.inventory();
83
69
  const moduleDetails = await Promise.all(
84
- modules.map((row) => toModuleInfo(commands, row)),
70
+ modules.map((row) => toModuleInfo(ws, row)),
85
71
  );
86
72
 
87
- const gitRemoteUrl = (await commands.showCmd.showGitRemoteUrl()) ?? null;
73
+ const gitRemoteUrl = (await ws.settings.gitRemoteUrl()) ?? null;
88
74
 
89
75
  return {
90
76
  name: project.name,
@@ -98,71 +84,75 @@ export async function getProject(
98
84
  }
99
85
 
100
86
  export async function updateProject(
101
- commands: CommandManager,
87
+ ws: Workspace,
88
+ directory: ProjectDirectory,
102
89
  updates: ProjectUpdatePayload,
103
90
  ): Promise<ProjectInfo> {
104
91
  const { name, cardKeyPrefix, description, category, gitRemoteUrl } = updates;
105
92
 
106
- await commands.atomic(async () => {
93
+ await ws.atomic(async () => {
107
94
  if (cardKeyPrefix) {
108
- await commands.renameCmd.rename(cardKeyPrefix);
95
+ await directory.rename(
96
+ ws.settings.prefix,
97
+ cardKeyPrefix,
98
+ ws.actor,
99
+ ws.identity,
100
+ );
109
101
  }
110
102
  if (name) {
111
- await commands.project.configuration.setProjectName(name);
103
+ await ws.settings.setName(name);
112
104
  }
113
105
  if (description !== undefined) {
114
- await commands.project.configuration.setDescription(description);
106
+ await ws.settings.setDescription(description);
115
107
  }
116
108
  if (category !== undefined) {
117
- await commands.project.configuration.setCategory(category);
109
+ await ws.settings.setCategory(category);
118
110
  }
119
111
  }, 'Update project settings');
120
112
 
121
113
  if (gitRemoteUrl !== undefined) {
122
- await commands.editCmd.setGitRemoteUrl(gitRemoteUrl);
114
+ await ws.settings.setGitRemoteUrl(gitRemoteUrl);
123
115
  }
124
116
 
125
- return getProject(commands);
117
+ return getProject(ws);
126
118
  }
127
119
 
128
120
  export async function updateModule(
129
- commands: CommandManager,
121
+ ws: Workspace,
130
122
  module: string,
131
123
  range?: string,
132
124
  ) {
133
- await commands.modulesCmd.update(range ? { module, range } : { module });
125
+ await ws.modules.update(range ? { module, range } : { module });
134
126
  }
135
127
 
136
- export async function updateAllModules(commands: CommandManager) {
137
- await commands.modulesCmd.update({});
128
+ export async function updateAllModules(ws: Workspace) {
129
+ await ws.modules.update({});
138
130
  }
139
131
 
140
- export async function getUpdatePlan(
141
- commands: CommandManager,
142
- ): Promise<UpdatePlan> {
143
- return commands.modulesCmd.planUpdate({});
132
+ export async function getUpdatePlan(ws: Workspace): Promise<UpdatePlan> {
133
+ return ws.modules.planUpdate({});
144
134
  }
145
135
 
146
136
  export async function listModuleVersions(
147
- commands: CommandManager,
137
+ ws: Workspace,
148
138
  target: { module?: string; source?: string },
149
139
  ): Promise<string[]> {
150
- return commands.modulesCmd.listVersions(
140
+ return ws.modules.listVersions(
151
141
  target.source !== undefined
152
142
  ? { source: target.source }
153
143
  : { module: target.module! },
154
144
  );
155
145
  }
156
146
 
157
- export async function deleteModule(commands: CommandManager, module: string) {
158
- await commands.removeCmd.remove('module', module);
147
+ export async function deleteModule(ws: Workspace, module: string) {
148
+ await ws.modules.remove(module);
159
149
  }
160
150
 
161
151
  // Hub data is only refreshed on demand, so a project that has never fetched
162
152
  // would otherwise show an empty catalogue until the user asks for a refresh.
163
- async function populateHubCache(commands: CommandManager) {
153
+ async function populateHubCache(ws: Workspace) {
164
154
  try {
165
- await commands.fetchCmd.ensureModuleListExists();
155
+ await ws.modules.ensureModuleListExists();
166
156
  } catch (error) {
167
157
  // An unreachable hub must not fail listing the hubs we already know about.
168
158
  console.warn('Failed to populate the hub cache', error);
@@ -170,28 +160,25 @@ async function populateHubCache(commands: CommandManager) {
170
160
  }
171
161
 
172
162
  export async function getImportableModules(
173
- commands: CommandManager,
163
+ ws: Workspace,
174
164
  ): Promise<ModuleSettingFromHub[]> {
175
- await populateHubCache(commands);
176
- return commands.showCmd.showImportableModules(false, true);
165
+ await populateHubCache(ws);
166
+ return ws.modules.importable(false, true);
177
167
  }
178
168
 
179
169
  export async function importModule(
180
- commands: CommandManager,
170
+ ws: Workspace,
181
171
  source: string,
182
172
  range?: string,
183
173
  ): Promise<void> {
184
- await commands.modulesCmd.install(
185
- source,
186
- range ? { version: range } : undefined,
187
- );
174
+ await ws.modules.install(source, range ? { version: range } : undefined);
188
175
  }
189
176
 
190
- export async function getHubs(commands: CommandManager): Promise<HubInfo[]> {
191
- await populateHubCache(commands);
192
- const hubs = await commands.showCmd.showHubDetails();
177
+ export async function getHubs(ws: Workspace): Promise<HubInfo[]> {
178
+ await populateHubCache(ws);
179
+ const hubs = await ws.modules.hubDetails();
193
180
  const importedModules = new Set(
194
- (await commands.modulesCmd.list()).map((mod) => mod.name),
181
+ (await ws.modules.list()).map((mod) => mod.name),
195
182
  );
196
183
  return hubs.map((hub) => ({
197
184
  location: hub.location,
@@ -207,28 +194,26 @@ export async function getHubs(commands: CommandManager): Promise<HubInfo[]> {
207
194
  }
208
195
 
209
196
  export async function addHub(
210
- commands: CommandManager,
197
+ ws: Workspace,
211
198
  location: string,
212
199
  ): Promise<HubFetchFailure[]> {
213
- await commands.createCmd.addHubLocation(location);
200
+ await ws.settings.hubs.add(location);
214
201
  // The hub is configured even when it cannot be reached right now; its
215
202
  // modules appear once a later refresh succeeds.
216
- return commands.fetchCmd.fetchHubs(true);
203
+ return ws.modules.fetchHubs(true);
217
204
  }
218
205
 
219
- export async function removeHub(commands: CommandManager, location: string) {
220
- await commands.removeCmd.remove('hub', location);
206
+ export async function removeHub(ws: Workspace, location: string) {
207
+ await ws.settings.hubs.remove(location);
221
208
  }
222
209
 
223
- export async function fetchHubs(
224
- commands: CommandManager,
225
- ): Promise<HubFetchFailure[]> {
226
- return commands.fetchCmd.fetchHubs(true);
210
+ export async function fetchHubs(ws: Workspace): Promise<HubFetchFailure[]> {
211
+ return ws.modules.fetchHubs(true);
227
212
  }
228
213
 
229
214
  export async function cleanProject(
230
- commands: CommandManager,
215
+ ws: Workspace,
231
216
  dryRun: boolean,
232
217
  ): Promise<CleanResult> {
233
- return commands.cleanCmd.clean(dryRun);
218
+ return ws.clean.run(dryRun);
234
219
  }