@cyberismo/backend 1.1.1 → 1.2.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 (305) hide show
  1. package/README.md +21 -0
  2. package/dist/app.js +22 -11
  3. package/dist/app.js.map +1 -1
  4. package/dist/auth/index.d.ts +1 -1
  5. package/dist/auth/index.js +1 -1
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/keycloak.d.ts +2 -3
  8. package/dist/auth/keycloak.js +6 -0
  9. package/dist/auth/keycloak.js.map +1 -1
  10. package/dist/auth/mock.d.ts +12 -8
  11. package/dist/auth/mock.js +119 -31
  12. package/dist/auth/mock.js.map +1 -1
  13. package/dist/auth/types.d.ts +7 -1
  14. package/dist/domain/cards/index.js +11 -84
  15. package/dist/domain/cards/index.js.map +1 -1
  16. package/dist/domain/cards/lib.js +2 -11
  17. package/dist/domain/cards/lib.js.map +1 -1
  18. package/dist/domain/cards/schema.js +9 -3
  19. package/dist/domain/cards/schema.js.map +1 -1
  20. package/dist/domain/cards/service.d.ts +2 -5
  21. package/dist/domain/cards/service.js +8 -15
  22. package/dist/domain/cards/service.js.map +1 -1
  23. package/dist/domain/events/index.d.ts +15 -0
  24. package/dist/domain/events/index.js +94 -0
  25. package/dist/domain/events/index.js.map +1 -0
  26. package/dist/domain/events/lifetime.d.ts +14 -0
  27. package/dist/domain/events/lifetime.js +25 -0
  28. package/dist/domain/events/lifetime.js.map +1 -0
  29. package/dist/domain/events/project-events.d.ts +67 -0
  30. package/dist/domain/events/project-events.js +200 -0
  31. package/dist/domain/events/project-events.js.map +1 -0
  32. package/dist/domain/events/schema.d.ts +22 -0
  33. package/dist/domain/events/schema.js +20 -0
  34. package/dist/domain/events/schema.js.map +1 -0
  35. package/dist/domain/project/index.js +17 -5
  36. package/dist/domain/project/index.js.map +1 -1
  37. package/dist/domain/project/schema.d.ts +8 -0
  38. package/dist/domain/project/schema.js +34 -6
  39. package/dist/domain/project/schema.js.map +1 -1
  40. package/dist/domain/project/service.d.ts +9 -5
  41. package/dist/domain/project/service.js +22 -16
  42. package/dist/domain/project/service.js.map +1 -1
  43. package/dist/domain/projects/index.js +5 -1
  44. package/dist/domain/projects/index.js.map +1 -1
  45. package/dist/domain/resources/index.js +74 -2
  46. package/dist/domain/resources/index.js.map +1 -1
  47. package/dist/domain/resources/schema.d.ts +8 -2
  48. package/dist/domain/resources/schema.js +6 -1
  49. package/dist/domain/resources/schema.js.map +1 -1
  50. package/dist/domain/resources/service.d.ts +13 -1
  51. package/dist/domain/resources/service.js +45 -2
  52. package/dist/domain/resources/service.js.map +1 -1
  53. package/dist/domain/skills/index.d.ts +15 -0
  54. package/dist/domain/skills/index.js +52 -0
  55. package/dist/domain/skills/index.js.map +1 -0
  56. package/dist/domain/skills/schema.d.ts +16 -0
  57. package/dist/domain/skills/schema.js +18 -0
  58. package/dist/domain/skills/schema.js.map +1 -0
  59. package/dist/domain/skills/service.d.ts +14 -0
  60. package/dist/domain/skills/service.js +16 -0
  61. package/dist/domain/skills/service.js.map +1 -0
  62. package/dist/export.d.ts +3 -2
  63. package/dist/export.js +53 -38
  64. package/dist/export.js.map +1 -1
  65. package/dist/index.d.ts +1 -0
  66. package/dist/index.js +3 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/main.js +23 -10
  69. package/dist/main.js.map +1 -1
  70. package/dist/middleware/auth.d.ts +5 -0
  71. package/dist/middleware/auth.js +20 -4
  72. package/dist/middleware/auth.js.map +1 -1
  73. package/dist/middleware/commandManager.d.ts +2 -0
  74. package/dist/middleware/commandManager.js +1 -0
  75. package/dist/middleware/commandManager.js.map +1 -1
  76. package/dist/overlay.d.ts +45 -0
  77. package/dist/overlay.js +157 -0
  78. package/dist/overlay.js.map +1 -0
  79. package/dist/project-errors.d.ts +18 -0
  80. package/dist/project-errors.js +25 -0
  81. package/dist/project-errors.js.map +1 -0
  82. package/dist/project-registry.d.ts +9 -1
  83. package/dist/project-registry.js +37 -9
  84. package/dist/project-registry.js.map +1 -1
  85. package/dist/public/THIRD-PARTY.txt +528 -435
  86. package/dist/public/assets/__vite-browser-external-PaJ7c2l8.js +1 -0
  87. package/dist/public/assets/abnfDiagram-VCTEODGH-DB2dfOGe.js +1 -0
  88. package/dist/public/assets/architecture-7GRP2DOG-2V0X8hxt.js +1 -0
  89. package/dist/public/assets/architectureDiagram-5GKGNRK7-CRhUR2Ul.js +36 -0
  90. package/dist/public/assets/blockDiagram-I7D4REHJ-DJKsYF1v.js +129 -0
  91. package/dist/public/assets/c4Diagram-7LVT6UL2-BTwMzoAF.js +38 -0
  92. package/dist/public/assets/channel-C0JtPpMA.js +1 -0
  93. package/dist/public/assets/chunk-4HAMMTFA-DjjgrBsB.js +62 -0
  94. package/dist/public/assets/chunk-75Z2AOVW-CKqXRGJV.js +2 -0
  95. package/dist/public/assets/chunk-DU6HZSFF-iJGdiRt7.js +127 -0
  96. package/dist/public/assets/chunk-F27PBJKO-tDfs6zeO.js +1 -0
  97. package/dist/public/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
  98. package/dist/public/assets/chunk-GMAD6QVW-DxHVEaGj.js +72 -0
  99. package/dist/public/assets/chunk-GVQU2GXP-AMxD4_Ta.js +1 -0
  100. package/dist/public/assets/{chunk-EX3LRPZG-Db0XYyxy.js → chunk-IMKFNOWR-0rz8QrYC.js} +2 -2
  101. package/dist/public/assets/chunk-L3NEJ4N5-BK3KAKMe.js +1 -0
  102. package/dist/public/assets/chunk-OSK3NFVY-B8MdrI_M.js +10 -0
  103. package/dist/public/assets/chunk-P2QGCYS3-D3J5AcHg.js +1 -0
  104. package/dist/public/assets/{chunk-VR4S4FIN-tUhbELKr.js → chunk-POPQ4Y6H-CsYg_XkK.js} +1 -1
  105. package/dist/public/assets/{chunk-HOUHSVGY-L35GPy9G.js → chunk-PWAF6VOD-D9cdEIZp.js} +1 -1
  106. package/dist/public/assets/chunk-SHT3W25Y-1jjokCf3.js +168 -0
  107. package/dist/public/assets/{chunk-MOJQB5TN-D1shKbMs.js → chunk-SVP7TREG-CIQMl7hl.js} +1 -1
  108. package/dist/public/assets/{chunk-V7JOEXUC-71b0ABpv.js → chunk-TICWLB2K-Ccsy2PYz.js} +3 -3
  109. package/dist/public/assets/chunk-XXDRQBXY-B7bWyHjt.js +1 -0
  110. package/dist/public/assets/classDiagram-ZZMXUADV-mWyXNAXi.js +1 -0
  111. package/dist/public/assets/classDiagram-v2-VYDZK3BY-mWyXNAXi.js +1 -0
  112. package/dist/public/assets/cose-bilkent-JH36ORCC-DPzc3Pv4.js +1 -0
  113. package/dist/public/assets/cynefin-OW5HDTMX-BIVDCYOU.js +1 -0
  114. package/dist/public/assets/cynefinDiagram-5FMLGOSQ-_V_nrIhD.js +62 -0
  115. package/dist/public/assets/cytoscape.esm-NgwPT4ez.js +321 -0
  116. package/dist/public/assets/dagre-C-rnJpZF.js +1 -0
  117. package/dist/public/assets/dagre-GXQ25YYZ-CJc0wc6f.js +4 -0
  118. package/dist/public/assets/diagram-S7CK7UJ4-25IjIKyo.js +30 -0
  119. package/dist/public/assets/diagram-UQ7AKVKN-C5VvsV7x.js +41 -0
  120. package/dist/public/assets/{diagram-FQU43EPY-DS-ryuRg.js → diagram-VSXAHHWV-Dw3rKVL_.js} +3 -3
  121. package/dist/public/assets/diagram-VX7I27RA-De_UQv8C.js +24 -0
  122. package/dist/public/assets/diagram-Z3DM3KII-Bd-65QQW.js +24 -0
  123. package/dist/public/assets/dist-BDCdLWk4.js +1 -0
  124. package/dist/public/assets/ebnfDiagram-PWID7BFC-CrxdET5U.js +1 -0
  125. package/dist/public/assets/erDiagram-RLTQ6QDP-BKo0Uyna.js +99 -0
  126. package/dist/public/assets/eventmodeling-NTZA5JFV-DKkAdJZd.js +1 -0
  127. package/dist/public/assets/flowDiagram-HODETNUW-CEE2wjdt.js +1 -0
  128. package/dist/public/assets/ganttDiagram-EL5Y4UJY-BHFn8vk0.js +292 -0
  129. package/dist/public/assets/gitGraph-4MIJSDKK-Bpvnb45u.js +1 -0
  130. package/dist/public/assets/{gitGraphDiagram-IHSO6WYX-CksvJvsQ.js → gitGraphDiagram-WWUBYQGX-Bw0EoxBY.js} +9 -9
  131. package/dist/public/assets/index-D3HS7YxF.js +2228 -0
  132. package/dist/public/assets/index-D6WqGtsG.js +27876 -0
  133. package/dist/public/assets/{index-COSSLZqt.css → index-Sv3WxZ_8.css} +1 -1
  134. package/dist/public/assets/info-A6RAGUB7-BvvG_zrk.js +1 -0
  135. package/dist/public/assets/infoDiagram-27XIBGKW-CtpdJmtL.js +2 -0
  136. package/dist/public/assets/{ishikawaDiagram-FXEZZL3T-CiLpASIW.js → ishikawaDiagram-5VMMS53U-KvT4DU1u.js} +2 -2
  137. package/dist/public/assets/journeyDiagram-3NMN7TZE-PhGRkXkq.js +139 -0
  138. package/dist/public/assets/{kanban-definition-HUTT4EX6-DYP_x6zD.js → kanban-definition-UXKFOSKX-Oyx5QgRq.js} +4 -4
  139. package/dist/public/assets/{katex-DolUETbr.js → katex-ZlcWpGUi.js} +3 -3
  140. package/dist/public/assets/{line-C8Sfsgt8.js → line-Dr41HTk1.js} +1 -1
  141. package/dist/public/assets/linear-DDBi9FwZ.js +1 -0
  142. package/dist/public/assets/mermaid-parser.core-DsIAxDBa.js +7 -0
  143. package/dist/public/assets/{mindmap-definition-LN4V7U3C-3IAd4gp3.js → mindmap-definition-YA3MSWOX-r8hvd6gP.js} +1 -1
  144. package/dist/public/assets/packet-AYTQ26CC-B0EpJ2Sc.js +1 -0
  145. package/dist/public/assets/path-B_0haWDX.js +1 -0
  146. package/dist/public/assets/pegDiagram-XKGWAZYB-DaNkQTQF.js +1 -0
  147. package/dist/public/assets/pie-WAS4IAKB-Dt2zttL9.js +1 -0
  148. package/dist/public/assets/pieDiagram-E7YTZNPT-x0XWEGbd.js +39 -0
  149. package/dist/public/assets/{quadrantDiagram-ABIIQ3AL-B3czMbdS.js → quadrantDiagram-AXDQQJYC-B9dlNtZl.js} +3 -3
  150. package/dist/public/assets/radar-RG4KPBEZ-DjbR4-5l.js +1 -0
  151. package/dist/public/assets/railroad-74A4TZTK-Bk3B5r_R.js +1 -0
  152. package/dist/public/assets/railroad-abnf-HS5TGJTU-DxaWfACD.js +1 -0
  153. package/dist/public/assets/railroad-ebnf-LZEXJU2U-DscxXZO0.js +1 -0
  154. package/dist/public/assets/railroad-peg-WCYAUIDC-BCWzRFzw.js +1 -0
  155. package/dist/public/assets/railroadDiagram-O6MQD6OU-DhwsoX6A.js +1 -0
  156. package/dist/public/assets/{requirementDiagram-TGXJPOKE-CmvJWy_S.js → requirementDiagram-BXWQKSXE-BiqZ6axf.js} +2 -2
  157. package/dist/public/assets/rolldown-runtime-B0Z9INg1.js +1 -0
  158. package/dist/public/assets/{rough.esm-By172zw-.js → rough.esm-Dy-Kn_BL.js} +1 -1
  159. package/dist/public/assets/{sankeyDiagram-HTMAVEWB-tAeOzMTn.js → sankeyDiagram-P5KCCOFB-C4rb2pZ9.js} +1 -1
  160. package/dist/public/assets/{sequenceDiagram-DBY2YBRQ-r0pwijM4.js → sequenceDiagram-WJ2MYXX4-DRKTnGD7.js} +9 -9
  161. package/dist/public/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  162. package/dist/public/assets/src-an_qrnIj.js +1 -0
  163. package/dist/public/assets/stateDiagram-D77RDMKH-xxdybg5Z.js +1 -0
  164. package/dist/public/assets/stateDiagram-v2-MP3YSRHH-CXzmJy_a.js +1 -0
  165. package/dist/public/assets/swimlanes-42K2YHIH-DyGI1gI6.js +1 -0
  166. package/dist/public/assets/swimlanesDiagram-VR7AAH4N-7hqb6VoW.js +8 -0
  167. package/dist/public/assets/timeline-definition-24CTP7MA-C2pIp77Q.js +120 -0
  168. package/dist/public/assets/treeView-Q6P3EWNA-CxRtaaB8.js +1 -0
  169. package/dist/public/assets/treemap-WGGIJYW6-G1IHiwTa.js +1 -0
  170. package/dist/public/assets/{vennDiagram-L72KCM5P-ti2qNcvo.js → vennDiagram-4TSXK5OY-CwimQRR9.js} +2 -2
  171. package/dist/public/assets/wardley-WFR3VGLG-DkQ3TjZX.js +1 -0
  172. package/dist/public/assets/{wardleyDiagram-EHGQE667-C8lblm8x.js → wardleyDiagram-VM6X3IG4-BOXpwLCv.js} +15 -15
  173. package/dist/public/assets/{xychartDiagram-FW5EYKEG-US-_k5eu.js → xychartDiagram-S5SC5T6Z-ChOPYsHc.js} +3 -3
  174. package/dist/public/index.html +19 -26
  175. package/dist/public/sbom.cdx.json +1 -0
  176. package/dist/utils.d.ts +4 -0
  177. package/dist/utils.js +6 -0
  178. package/dist/utils.js.map +1 -1
  179. package/package.json +12 -13
  180. package/src/app.ts +22 -11
  181. package/src/auth/index.ts +1 -1
  182. package/src/auth/keycloak.ts +8 -3
  183. package/src/auth/mock.ts +141 -35
  184. package/src/auth/types.ts +8 -1
  185. package/src/domain/cards/index.ts +12 -102
  186. package/src/domain/cards/lib.ts +2 -14
  187. package/src/domain/cards/schema.ts +11 -3
  188. package/src/domain/cards/service.ts +9 -24
  189. package/src/domain/events/index.ts +112 -0
  190. package/src/domain/events/lifetime.ts +27 -0
  191. package/src/domain/events/project-events.ts +254 -0
  192. package/src/domain/events/schema.ts +21 -0
  193. package/src/domain/project/index.ts +31 -3
  194. package/src/domain/project/schema.ts +39 -6
  195. package/src/domain/project/service.ts +42 -17
  196. package/src/domain/projects/index.ts +5 -1
  197. package/src/domain/resources/index.ts +85 -2
  198. package/src/domain/resources/schema.ts +12 -2
  199. package/src/domain/resources/service.ts +55 -3
  200. package/src/domain/skills/index.ts +61 -0
  201. package/src/domain/skills/schema.ts +19 -0
  202. package/src/domain/skills/service.ts +18 -0
  203. package/src/export.ts +60 -42
  204. package/src/index.ts +3 -0
  205. package/src/main.ts +30 -11
  206. package/src/middleware/auth.ts +23 -4
  207. package/src/middleware/commandManager.ts +3 -0
  208. package/src/overlay.ts +175 -0
  209. package/src/project-errors.ts +33 -0
  210. package/src/project-registry.ts +41 -10
  211. package/src/utils.ts +10 -0
  212. package/dist/domain/cards/presence.d.ts +0 -50
  213. package/dist/domain/cards/presence.js +0 -93
  214. package/dist/domain/cards/presence.js.map +0 -1
  215. package/dist/public/assets/abnfDiagram-VRR7QNED-Djr4KJ5E.js +0 -1
  216. package/dist/public/assets/arc-DrR4k_H-.js +0 -1
  217. package/dist/public/assets/architecture-TIHT7OUA-XL6N-4o9.js +0 -1
  218. package/dist/public/assets/architectureDiagram-ZJ3FMSHR-DsMU2Uwa.js +0 -36
  219. package/dist/public/assets/blockDiagram-677ZJIJ3-DRBmQUQJ.js +0 -132
  220. package/dist/public/assets/c4Diagram-LMCZKHZV-E0rM02LD.js +0 -10
  221. package/dist/public/assets/channel-D5fnImJy.js +0 -1
  222. package/dist/public/assets/chunk-32BRIVSS-BnDY0aSV.js +0 -1
  223. package/dist/public/assets/chunk-52WLFC77-N5YugKaZ.js +0 -10
  224. package/dist/public/assets/chunk-5FCAYU7R-I3_t_Ic_.js +0 -1
  225. package/dist/public/assets/chunk-5HE753X5-Dxz40rzH.js +0 -1
  226. package/dist/public/assets/chunk-5JV3BV7I-CNwCKRLH.js +0 -1
  227. package/dist/public/assets/chunk-5TONJI2A-ezWQ_Z2j.js +0 -2
  228. package/dist/public/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
  229. package/dist/public/assets/chunk-BIQX33UG-DS132-R_.js +0 -1
  230. package/dist/public/assets/chunk-C7G6YPKG-BN-cNjoj.js +0 -1
  231. package/dist/public/assets/chunk-CQNSW5MT-D8Mn1I73.js +0 -1
  232. package/dist/public/assets/chunk-CYSBUYHQ-Dc64Dwdo.js +0 -1
  233. package/dist/public/assets/chunk-EMLP6XTP-aIK0V8GX.js +0 -1
  234. package/dist/public/assets/chunk-FWX5IMBZ-BF_P2-Do.js +0 -2
  235. package/dist/public/assets/chunk-ICXQ74PX-Bb8zaHde.js +0 -2
  236. package/dist/public/assets/chunk-JG7HCLWE-BtAXK3iQ.js +0 -2
  237. package/dist/public/assets/chunk-KEIR6QF5-DEvma7oi.js +0 -161
  238. package/dist/public/assets/chunk-MOZMSUNE-5FIqIBsY.js +0 -1
  239. package/dist/public/assets/chunk-OGEWGWER-BVIFy9xz.js +0 -1
  240. package/dist/public/assets/chunk-OSBZ3O6U-Cfd7kf1R.js +0 -1
  241. package/dist/public/assets/chunk-PUDLZKDR-Db3FSNR9.js +0 -156
  242. package/dist/public/assets/chunk-Q4XR5HBZ-BuKFRUzR.js +0 -70
  243. package/dist/public/assets/chunk-QBLGF6JB-DUGZXFh-.js +0 -1
  244. package/dist/public/assets/chunk-R7FJI6CG-D7mUd-qN.js +0 -1
  245. package/dist/public/assets/chunk-RYQCIY6F-C_3rESBd.js +0 -1
  246. package/dist/public/assets/chunk-U6XO7XAA-C3UhlwA1.js +0 -2
  247. package/dist/public/assets/chunk-VAUOI2AC-C-GBw18h.js +0 -1
  248. package/dist/public/assets/chunk-WYO6CB5R-BQoO62-B.js +0 -127
  249. package/dist/public/assets/chunk-XXDRQBXY-Co8n4ZHT.js +0 -1
  250. package/dist/public/assets/chunk-YOTPTUD7-DhCRKU1A.js +0 -1
  251. package/dist/public/assets/chunk-ZGVPDNZ5-hpz2Ryq5.js +0 -62
  252. package/dist/public/assets/chunk-ZIRB5QZD-BpeS1aZ7.js +0 -32
  253. package/dist/public/assets/classDiagram-OUVF2IWQ-CXdVorPK.js +0 -1
  254. package/dist/public/assets/classDiagram-v2-EOCWNBFH-CXdVorPK.js +0 -1
  255. package/dist/public/assets/colors-Cg5Vh3br.js +0 -1
  256. package/dist/public/assets/cose-bilkent-JH36ORCC-4GoRbloS.js +0 -1
  257. package/dist/public/assets/cynefin-VYW2F7L2-BPH-25fI.js +0 -1
  258. package/dist/public/assets/cynefinDiagram-TSTJHNR4-PEf16euv.js +0 -62
  259. package/dist/public/assets/cytoscape.esm-C3UvhD5t.js +0 -321
  260. package/dist/public/assets/dagre-Buvkdvvj.js +0 -1
  261. package/dist/public/assets/dagre-VKFMJZFB-DPsCMBF1.js +0 -4
  262. package/dist/public/assets/diagram-G47NLZAW-CzUoYkFf.js +0 -24
  263. package/dist/public/assets/diagram-NH7WQ7WH-MhGnE2fh.js +0 -24
  264. package/dist/public/assets/diagram-OA4YK3LP-CsQ9aFR_.js +0 -30
  265. package/dist/public/assets/diagram-WEI45ONY-Er3q49ew.js +0 -41
  266. package/dist/public/assets/dist-BzwexiH1.js +0 -1
  267. package/dist/public/assets/ebnfDiagram-CCIWWBDH-AnJAsk14.js +0 -1
  268. package/dist/public/assets/erDiagram-Q63AITRT-DulA16my.js +0 -85
  269. package/dist/public/assets/eventmodeling-45OFAUF4-CoIhTpHU.js +0 -1
  270. package/dist/public/assets/flowDiagram-23GEKE2U-BGMXUq18.js +0 -1
  271. package/dist/public/assets/ganttDiagram-NO4QXBWP-DAvCPT7_.js +0 -292
  272. package/dist/public/assets/gitGraph-TEB2WS4Q-BcPsZts5.js +0 -1
  273. package/dist/public/assets/index-H1CkT-JT.js +0 -447
  274. package/dist/public/assets/info-DKCQHKI2-7VGzrAVB.js +0 -1
  275. package/dist/public/assets/infoDiagram-FWYZ7A6U-D_by7lSL.js +0 -2
  276. package/dist/public/assets/journeyDiagram-5HDEW3XC-DpvFmk7c.js +0 -139
  277. package/dist/public/assets/linear-BWTvbP1l.js +0 -1
  278. package/dist/public/assets/map-BaFkSB1l.js +0 -1
  279. package/dist/public/assets/mermaid-parser.core--8614tkK.js +0 -4
  280. package/dist/public/assets/ordinal-BdBDtYTt.js +0 -1
  281. package/dist/public/assets/packet-7NZHBO7P-KYt33H0C.js +0 -1
  282. package/dist/public/assets/path-HTXttWil.js +0 -1
  283. package/dist/public/assets/pegDiagram-2B236MQR-BQNFxYz2.js +0 -1
  284. package/dist/public/assets/pie-RZYD4A2V-xKz9s9I4.js +0 -1
  285. package/dist/public/assets/pieDiagram-ENE6RG2P-Cy13tg8_.js +0 -39
  286. package/dist/public/assets/radar-I7S5WNFK-B4QTX-fX.js +0 -1
  287. package/dist/public/assets/railroad-3IZDKUUU-Co_9rPVC.js +0 -1
  288. package/dist/public/assets/railroad-abnf-AHOZXSZD-Bhy_c3ol.js +0 -1
  289. package/dist/public/assets/railroad-ebnf-EBAXGLYW-B9ENjG34.js +0 -1
  290. package/dist/public/assets/railroad-peg-LSFZ7HO6-CyJxDBsB.js +0 -1
  291. package/dist/public/assets/railroadDiagram-RFXS5EU6-M2j5SJF2.js +0 -1
  292. package/dist/public/assets/range-EplFIxc7.js +0 -1
  293. package/dist/public/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +0 -1
  294. package/dist/public/assets/src-DOh7_en_.js +0 -1
  295. package/dist/public/assets/stateDiagram-2N3HPSRC-a9IdkSQG.js +0 -1
  296. package/dist/public/assets/stateDiagram-v2-6OUMAXLB-s2blPtZ-.js +0 -1
  297. package/dist/public/assets/swimlanes-5IMT3BWC-5w0Cdxk6.js +0 -2
  298. package/dist/public/assets/swimlanesDiagram-G3AALYLV-BWa-KRed.js +0 -8
  299. package/dist/public/assets/time-BM2d9MsQ.js +0 -1
  300. package/dist/public/assets/timeline-definition-FHXFAJF6-CvXlv_4Y.js +0 -120
  301. package/dist/public/assets/treeView-QDETBFTQ-B9cxjfpB.js +0 -1
  302. package/dist/public/assets/treemap-6X3UGDF4-BplEq4hB.js +0 -1
  303. package/dist/public/assets/treemap-BfjIY-m6.js +0 -1
  304. package/dist/public/assets/wardley-OPB4EBWU-BX2ghg5e.js +0 -1
  305. package/src/domain/cards/presence.ts +0 -124
package/src/overlay.ts ADDED
@@ -0,0 +1,175 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2026
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. This program is distributed in the hope that it
7
+ will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
+ See the GNU Affero General Public License for more details.
10
+ 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
+ */
13
+
14
+ /**
15
+ * Which projects, or the whole instance, are read-only.
16
+ *
17
+ * Polled on a timer so no request waits for it, and permissive on every
18
+ * uncertain path: a freeze arriving late beats an outage. Unset
19
+ * CYBERISMO_OVERLAY_URL means no policy, which is the standalone default.
20
+ */
21
+
22
+ import { z } from 'zod';
23
+ import type { ProjectProvider } from '@cyberismo/data-handler';
24
+
25
+ const POLL_INTERVAL_MS = 10_000;
26
+ const FETCH_TIMEOUT_MS = 2_000;
27
+
28
+ const policySchema = z
29
+ .object({
30
+ readOnly: z.boolean().catch(false),
31
+ projects: z
32
+ .record(z.string(), z.object({ readOnly: z.boolean().catch(false) }))
33
+ .catch({}),
34
+ })
35
+ .catch(() => EMPTY);
36
+
37
+ export type Policy = z.infer<typeof policySchema>;
38
+
39
+ const EMPTY: Policy = { readOnly: false, projects: {} };
40
+
41
+ let current: Policy = EMPTY;
42
+
43
+ export function getPolicy(): Policy {
44
+ return current;
45
+ }
46
+
47
+ export function setPolicy(policy: Policy): void {
48
+ current = policy;
49
+ }
50
+
51
+ export function isProjectReadOnly(prefix: string): boolean {
52
+ return current.readOnly || current.projects[prefix]?.readOnly === true;
53
+ }
54
+
55
+ /** `/api/projects/<prefix>/…` is the only request shape naming a project. */
56
+ export function isReadOnly(path: string): boolean {
57
+ if (current.readOnly) return true;
58
+ const match = /^\/api\/projects\/([^/?#]+)/.exec(path);
59
+ if (!match) return false;
60
+ let prefix: string;
61
+ try {
62
+ prefix = decodeURIComponent(match[1]);
63
+ } catch {
64
+ prefix = match[1];
65
+ }
66
+ return isProjectReadOnly(prefix);
67
+ }
68
+
69
+ /**
70
+ * Temporary: the app is the source of truth for which projects exist, so it
71
+ * tells overlay. That inverts once projects are created in overlay's admin
72
+ * views, after which overlay reports them and this goes away.
73
+ */
74
+ async function reportProjects(
75
+ base: string,
76
+ token: string | undefined,
77
+ projects: { prefix: string }[],
78
+ ): Promise<void> {
79
+ const response = await fetch(`${base.replace(/\/$/, '')}/projects`, {
80
+ method: 'PUT',
81
+ headers: {
82
+ 'Content-Type': 'application/json',
83
+ ...(token ? { 'X-Overlay-Token': token } : {}),
84
+ },
85
+ body: JSON.stringify({ projects }),
86
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
87
+ });
88
+ if (!response.ok) {
89
+ throw new Error(`responded ${response.status}`);
90
+ }
91
+ }
92
+
93
+ export function startPolicyPolling(
94
+ projects: () => { prefix: string }[] = () => [],
95
+ ): void {
96
+ const base = process.env.CYBERISMO_OVERLAY_URL;
97
+ if (!base) return;
98
+ const token = process.env.CYBERISMO_OVERLAY_TOKEN;
99
+ const url = `${base.replace(/\/$/, '')}/tenant`;
100
+
101
+ let lastFailure: string | undefined;
102
+
103
+ const poll = async () => {
104
+ try {
105
+ const response = await fetch(url, {
106
+ headers: token ? { 'X-Overlay-Token': token } : {},
107
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
108
+ });
109
+ if (!response.ok) {
110
+ throw new Error(`responded ${response.status}`);
111
+ }
112
+ setPolicy(policySchema.parse(await response.json()));
113
+ if (lastFailure) {
114
+ console.error(`overlay: ${url} is reachable again`);
115
+ lastFailure = undefined;
116
+ }
117
+ } catch (error) {
118
+ const reason = error instanceof Error ? error.message : String(error);
119
+ if (reason !== lastFailure) {
120
+ lastFailure = reason;
121
+ console.error(`overlay: ${url} ${reason}, keeping the previous policy`);
122
+ }
123
+ }
124
+ };
125
+
126
+ // Reported every tick from a fresh list, so a project created after start-up
127
+ // is registered within one interval.
128
+ let lastReportFailure: string | undefined;
129
+ const report = async () => {
130
+ const current = projects();
131
+ if (current.length === 0) return;
132
+ try {
133
+ await reportProjects(base, token, current);
134
+ lastReportFailure = undefined;
135
+ } catch (error) {
136
+ const reason = error instanceof Error ? error.message : String(error);
137
+ if (reason !== lastReportFailure) {
138
+ lastReportFailure = reason;
139
+ console.error(`overlay: could not report projects, ${reason}`);
140
+ }
141
+ }
142
+ };
143
+
144
+ // setInterval does not wait for the previous run, so skip a tick rather than
145
+ // letting two overlap.
146
+ let running = false;
147
+ const tick = async () => {
148
+ if (running) return;
149
+ running = true;
150
+ try {
151
+ await poll();
152
+ await report();
153
+ } finally {
154
+ running = false;
155
+ }
156
+ };
157
+
158
+ void tick();
159
+ setInterval(() => void tick(), POLL_INTERVAL_MS).unref();
160
+ }
161
+
162
+ /**
163
+ * Hide read-only projects from MCP.
164
+ *
165
+ * MCP takes the project as an argument rather than in the path, so the role cap
166
+ * cannot see which one a call touches. Making a frozen project unresolvable
167
+ * fails closed, at the cost of hiding it from reads and from administrators too.
168
+ */
169
+ export function writableProjects(provider: ProjectProvider): ProjectProvider {
170
+ return {
171
+ get: (prefix) =>
172
+ isProjectReadOnly(prefix) ? undefined : provider.get(prefix),
173
+ list: () => provider.list().filter((p) => !isProjectReadOnly(p.prefix)),
174
+ };
175
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2026
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
+ */
13
+
14
+ export interface ProjectErrors {
15
+ prefix: string;
16
+ errors: string[];
17
+ }
18
+
19
+ /** Formats errors as one block per project, capping each at `limit` lines. */
20
+ export function formatProjectErrors(
21
+ groups: ProjectErrors[],
22
+ limit: number = 10,
23
+ ): string {
24
+ const heading = `${groups.length} ${groups.length === 1 ? 'project has' : 'projects have'} errors:`;
25
+ const blocks = groups.map(({ prefix, errors }) => {
26
+ const lines = errors.slice(0, limit).map((e) => ` ${e}`);
27
+ if (errors.length > limit) {
28
+ lines.push(` … ${errors.length - limit} more`);
29
+ }
30
+ return `${prefix} (${errors.length}):\n${lines.join('\n')}`;
31
+ });
32
+ return [heading, ...blocks].join('\n\n');
33
+ }
@@ -12,6 +12,8 @@
12
12
  */
13
13
 
14
14
  import { CommandManager, type ProjectProvider } from '@cyberismo/data-handler';
15
+ import { ProjectEvents } from './domain/events/project-events.js';
16
+ import type { ProjectErrors } from './project-errors.js';
15
17
 
16
18
  export type ProjectRegistryEntry = {
17
19
  prefix: string;
@@ -34,6 +36,7 @@ export interface ScannedProject {
34
36
 
35
37
  export class ProjectRegistry implements ProjectProvider {
36
38
  private projects: Map<string, CommandManager> = new Map();
39
+ private events = new Map<CommandManager, ProjectEvents>();
37
40
  readonly options: ConstructorParameters<typeof CommandManager>[1];
38
41
 
39
42
  constructor(
@@ -61,6 +64,18 @@ export class ProjectRegistry implements ProjectProvider {
61
64
  this.projects.set(prefix, commands);
62
65
  }
63
66
 
67
+ eventsFor(commands: CommandManager): ProjectEvents {
68
+ let events = this.events.get(commands);
69
+ if (!events) {
70
+ if (![...this.projects.values()].includes(commands)) {
71
+ throw new Error('Project is not registered');
72
+ }
73
+ events = new ProjectEvents();
74
+ this.events.set(commands, events);
75
+ }
76
+ return events;
77
+ }
78
+
64
79
  list(): ProjectListItem[] {
65
80
  return Array.from(this.projects.entries()).map(([prefix, commands]) => ({
66
81
  prefix,
@@ -81,6 +96,10 @@ export class ProjectRegistry implements ProjectProvider {
81
96
  }
82
97
 
83
98
  dispose(): void {
99
+ for (const events of this.events.values()) {
100
+ events.dispose();
101
+ }
102
+ this.events.clear();
84
103
  for (const commands of this.projects.values()) {
85
104
  commands.project.dispose();
86
105
  }
@@ -93,12 +112,9 @@ export class ProjectRegistry implements ProjectProvider {
93
112
  * reset endpoint to swap project state without restarting the Hono app.
94
113
  */
95
114
  async replace(entries: ProjectRegistryEntry[]): Promise<void> {
96
- for (const commands of this.projects.values()) {
97
- commands.project.dispose();
98
- }
99
- this.projects.clear();
115
+ this.dispose();
100
116
  for (const entry of entries) {
101
- this.projects.set(entry.prefix, entry.commands);
117
+ this.add(entry.prefix, entry.commands);
102
118
  }
103
119
  }
104
120
 
@@ -114,17 +130,32 @@ export class ProjectRegistry implements ProjectProvider {
114
130
 
115
131
  /**
116
132
  * Build a registry from scanned project entries, initializing each CommandManager.
133
+ * A project that fails to load is left out and reported in `failed`.
117
134
  */
118
135
  static async fromScannedProjects(
119
136
  projects: ScannedProject[],
120
137
  options?: ConstructorParameters<typeof CommandManager>[1],
121
- ): Promise<ProjectRegistry> {
138
+ ): Promise<{ registry: ProjectRegistry; failed: ProjectErrors[] }> {
122
139
  const entries: ProjectRegistryEntry[] = [];
140
+ const failed: ProjectErrors[] = [];
123
141
  for (const project of projects) {
124
- const commands = new CommandManager(project.path, options);
125
- await commands.initialize();
126
- entries.push({ prefix: project.prefix, commands });
142
+ let commands: CommandManager | undefined;
143
+ try {
144
+ commands = new CommandManager(project.path, options);
145
+ await commands.initialize();
146
+ entries.push({ prefix: project.prefix, commands });
147
+ } catch (error) {
148
+ commands?.project.dispose();
149
+ failed.push({
150
+ prefix: project.prefix,
151
+ errors: [
152
+ `Failed to load project (${project.path}): ${
153
+ error instanceof Error ? error.message : String(error)
154
+ }`,
155
+ ],
156
+ });
157
+ }
127
158
  }
128
- return new ProjectRegistry(entries, options);
159
+ return { registry: new ProjectRegistry(entries, options), failed };
129
160
  }
130
161
  }
package/src/utils.ts CHANGED
@@ -61,3 +61,13 @@ function testPort(port: number) {
61
61
  }, 2000);
62
62
  });
63
63
  }
64
+
65
+ export function gitOptionsFromEnv(): {
66
+ autocommit: boolean;
67
+ autopush: boolean;
68
+ } {
69
+ return {
70
+ autocommit: process.env.CYBERISMO_AUTOCOMMIT === 'true',
71
+ autopush: process.env.CYBERISMO_AUTOPUSH === 'true',
72
+ };
73
+ }
@@ -1,50 +0,0 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2026
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. This program is distributed in the hope that it
7
- will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
- See the GNU Affero General Public License for more details.
10
- 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
- */
13
- import type { UserInfo } from '../../types.js';
14
- import type { SSEMessage } from 'hono/streaming';
15
- export interface PresenceEntry {
16
- userId: string;
17
- userName: string;
18
- mode: 'viewing' | 'editing';
19
- }
20
- /**
21
- * In-memory presence tracker for card editing/viewing.
22
- * Tracks which users are currently looking at or editing each card,
23
- * and notifies all connected clients via SSE when presence changes.
24
- */
25
- declare class PresenceStore {
26
- private connections;
27
- private nextId;
28
- /**
29
- * Add a user connection for a card. Returns a connection ID for later removal.
30
- */
31
- add(cardKey: string, user: UserInfo, mode: 'viewing' | 'editing', send: (message: SSEMessage) => void): string;
32
- /**
33
- * Remove a connection and broadcast updated presence.
34
- */
35
- remove(cardKey: string, connId: string): void;
36
- /**
37
- * Get current presence list for a card.
38
- */
39
- getPresence(cardKey: string): PresenceEntry[];
40
- /**
41
- * Broadcast current presence to all connected clients for a card.
42
- */
43
- private broadcast;
44
- /**
45
- * Remove all connections. Intended for test cleanup.
46
- */
47
- removeAll(): void;
48
- }
49
- export declare const presenceStore: PresenceStore;
50
- export {};
@@ -1,93 +0,0 @@
1
- /**
2
- Cyberismo
3
- Copyright © Cyberismo Ltd and contributors 2026
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. This program is distributed in the hope that it
7
- will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
- See the GNU Affero General Public License for more details.
10
- 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
- */
13
- /**
14
- * In-memory presence tracker for card editing/viewing.
15
- * Tracks which users are currently looking at or editing each card,
16
- * and notifies all connected clients via SSE when presence changes.
17
- */
18
- class PresenceStore {
19
- // cardKey -> connectionId -> Connection
20
- connections = new Map();
21
- nextId = 0;
22
- /**
23
- * Add a user connection for a card. Returns a connection ID for later removal.
24
- */
25
- add(cardKey, user, mode, send) {
26
- const connId = String(this.nextId++);
27
- if (!this.connections.has(cardKey)) {
28
- this.connections.set(cardKey, new Map());
29
- }
30
- this.connections.get(cardKey).set(connId, { user, mode, send });
31
- this.broadcast(cardKey);
32
- return connId;
33
- }
34
- /**
35
- * Remove a connection and broadcast updated presence.
36
- */
37
- remove(cardKey, connId) {
38
- const cardConns = this.connections.get(cardKey);
39
- if (!cardConns)
40
- return;
41
- cardConns.delete(connId);
42
- if (cardConns.size === 0) {
43
- this.connections.delete(cardKey);
44
- }
45
- else {
46
- this.broadcast(cardKey);
47
- }
48
- }
49
- /**
50
- * Get current presence list for a card.
51
- */
52
- getPresence(cardKey) {
53
- const cardConns = this.connections.get(cardKey);
54
- if (!cardConns)
55
- return [];
56
- // Deduplicate by userId — if a user has multiple connections,
57
- // prefer the 'editing' mode
58
- const byUser = new Map();
59
- for (const conn of cardConns.values()) {
60
- const existing = byUser.get(conn.user.id);
61
- if (!existing || conn.mode === 'editing') {
62
- byUser.set(conn.user.id, {
63
- userId: conn.user.id,
64
- userName: conn.user.name,
65
- mode: conn.mode,
66
- });
67
- }
68
- }
69
- return Array.from(byUser.values());
70
- }
71
- /**
72
- * Broadcast current presence to all connected clients for a card.
73
- */
74
- broadcast(cardKey) {
75
- const cardConns = this.connections.get(cardKey);
76
- if (!cardConns)
77
- return;
78
- const presence = this.getPresence(cardKey);
79
- const data = JSON.stringify({ editors: presence });
80
- const message = { event: 'presence', data };
81
- for (const conn of cardConns.values()) {
82
- conn.send(message);
83
- }
84
- }
85
- /**
86
- * Remove all connections. Intended for test cleanup.
87
- */
88
- removeAll() {
89
- this.connections.clear();
90
- }
91
- }
92
- export const presenceStore = new PresenceStore();
93
- //# sourceMappingURL=presence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presence.js","sourceRoot":"","sources":["../../../src/domain/cards/presence.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- import"./chunk-WYO6CB5R-BQoO62-B.js";import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{O as t}from"./src-DOh7_en_.js";import"./chunk-VAUOI2AC-C-GBw18h.js";import{n}from"./chunk-5HE753X5-Dxz40rzH.js";import{n as r,r as i,t as a}from"./chunk-MOJQB5TN-D1shKbMs.js";import{t as o}from"./chunk-JWPE2WC7-DVXcaiue.js";import{t as s}from"./mermaid-parser.core--8614tkK.js";var c=n().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{o(e,a),e.title&&a.setTitle(e.title),e.rules.map(e=>a.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{a.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new s(n);let r=n.value;t.debug(`[ABNF Parser] Parsed rules:`,r.rules.length),h(r),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:a}},db:a,renderer:i,styles:r};export{g as diagram};
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,f as r,i,l as a,m as o,n as s,o as c,p as l,r as u,u as d}from"./dist-BzwexiH1.js";import{n as f,t as p}from"./path-HTXttWil.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,o,s){var c=e-n,u=t-r,d=(s?o:-o)/l(c*c+u*u),f=d*u,p=-d*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-o,w=m*_-g*h,T=(x<0?-1:1)*l(a(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var a=m,x=h,S=f(0),C=null,w=g,T=_,E=v,D=null,O=p(k);function k(){var f,p,m=+a.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-t,_=T.apply(this,arguments)-t,v=s(_-g),k=_>g;if(D||=f=O(),h<m&&(p=h,h=m,m=p),!(h>1e-12))D.moveTo(0,0);else if(v>o-1e-12)D.moveTo(h*c(g),h*r(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*c(_),m*r(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):l(m*m+h*h)),R=d(s(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=i(L/m*r(I)),W=i(L/h*r(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*c(A),K=h*r(A),q=m*c(N),J=m*r(N);if(R>1e-12){var Y=h*c(j),X=h*r(j),Z=m*c(M),Q=m*r(M),$;if(v<n)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/r(u((ee*ne+te*re)/(l(ee*ee+te*te)*l(ne*ne+re*re)))/2),ae=l($[0]*$[0]+$[1]*$[1]);z=d(R,(m-ae)/(ie-1)),B=d(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,e(V.y01,V.x01),e(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,e(V.y01,V.x01),e(V.y11,V.x11),!k),D.arc(0,0,h,e(V.cy+V.y11,V.cx+V.x11),e(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,e(H.y11,H.x11),e(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,e(V.y01,V.x01),e(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,e(V.y01,V.x01),e(V.y11,V.x11),!k),D.arc(0,0,m,e(V.cy+V.y11,V.cx+V.x11),e(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,e(H.y11,H.x11),e(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),f)return D=null,f+``||null}return k.centroid=function(){var e=(+a.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-n/2;return[c(t)*e,r(t)*e]},k.innerRadius=function(e){return arguments.length?(a=typeof e==`function`?e:f(+e),k):a},k.outerRadius=function(e){return arguments.length?(x=typeof e==`function`?e:f(+e),k):x},k.cornerRadius=function(e){return arguments.length?(S=typeof e==`function`?e:f(+e),k):S},k.padRadius=function(e){return arguments.length?(C=e==null?null:typeof e==`function`?e:f(+e),k):C},k.startAngle=function(e){return arguments.length?(w=typeof e==`function`?e:f(+e),k):w},k.endAngle=function(e){return arguments.length?(T=typeof e==`function`?e:f(+e),k):T},k.padAngle=function(e){return arguments.length?(E=typeof e==`function`?e:f(+e),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -1 +0,0 @@
1
- import"./chunk-KEIR6QF5-DEvma7oi.js";import{n as e}from"./chunk-MOZMSUNE-5FIqIBsY.js";export{e as createArchitectureServices};