@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.
- package/dist/app.d.ts +5 -15
- package/dist/app.js +28 -38
- package/dist/app.js.map +1 -1
- package/dist/auth/index.d.ts +0 -12
- package/dist/auth/index.js +2 -12
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keycloak.d.ts +0 -12
- package/dist/auth/keycloak.js +2 -12
- package/dist/auth/keycloak.js.map +1 -1
- package/dist/auth/mock.d.ts +0 -12
- package/dist/auth/mock.js +2 -12
- package/dist/auth/mock.js.map +1 -1
- package/dist/auth/types.d.ts +0 -12
- package/dist/auth/types.js +2 -12
- package/dist/auth/types.js.map +1 -1
- package/dist/common/errors.d.ts +12 -0
- package/dist/common/errors.js +31 -0
- package/dist/common/errors.js.map +1 -0
- package/dist/common/validationSchemas.d.ts +0 -12
- package/dist/common/validationSchemas.js +2 -12
- package/dist/common/validationSchemas.js.map +1 -1
- package/dist/domain/auth/index.d.ts +0 -12
- package/dist/domain/auth/index.js +2 -12
- package/dist/domain/auth/index.js.map +1 -1
- package/dist/domain/calculations/index.d.ts +0 -12
- package/dist/domain/calculations/index.js +4 -14
- package/dist/domain/calculations/index.js.map +1 -1
- package/dist/domain/calculations/schema.d.ts +0 -12
- package/dist/domain/calculations/schema.js +2 -12
- package/dist/domain/calculations/schema.js.map +1 -1
- package/dist/domain/calculations/service.d.ts +2 -14
- package/dist/domain/calculations/service.js +7 -17
- package/dist/domain/calculations/service.js.map +1 -1
- package/dist/domain/cardTypes/index.d.ts +0 -12
- package/dist/domain/cardTypes/index.js +10 -20
- package/dist/domain/cardTypes/index.js.map +1 -1
- package/dist/domain/cardTypes/schema.d.ts +0 -12
- package/dist/domain/cardTypes/schema.js +2 -12
- package/dist/domain/cardTypes/schema.js.map +1 -1
- package/dist/domain/cardTypes/service.d.ts +4 -16
- package/dist/domain/cardTypes/service.js +17 -25
- package/dist/domain/cardTypes/service.js.map +1 -1
- package/dist/domain/cards/index.d.ts +0 -12
- package/dist/domain/cards/index.js +120 -102
- package/dist/domain/cards/index.js.map +1 -1
- package/dist/domain/cards/lib.d.ts +6 -23
- package/dist/domain/cards/lib.js +7 -126
- package/dist/domain/cards/lib.js.map +1 -1
- package/dist/domain/cards/mermaid.d.ts +8 -0
- package/dist/domain/cards/mermaid.js +23 -0
- package/dist/domain/cards/mermaid.js.map +1 -0
- package/dist/domain/cards/schema.d.ts +6 -12
- package/dist/domain/cards/schema.js +6 -12
- package/dist/domain/cards/schema.js.map +1 -1
- package/dist/domain/cards/service.d.ts +28 -32
- package/dist/domain/cards/service.js +119 -83
- package/dist/domain/cards/service.js.map +1 -1
- package/dist/domain/connectors/index.d.ts +0 -12
- package/dist/domain/connectors/index.js +4 -14
- package/dist/domain/connectors/index.js.map +1 -1
- package/dist/domain/connectors/service.d.ts +2 -14
- package/dist/domain/connectors/service.js +4 -14
- package/dist/domain/connectors/service.js.map +1 -1
- package/dist/domain/events/events-by-project.d.ts +19 -0
- package/dist/domain/events/events-by-project.js +57 -0
- package/dist/domain/events/events-by-project.js.map +1 -0
- package/dist/domain/events/index.d.ts +0 -12
- package/dist/domain/events/index.js +3 -13
- package/dist/domain/events/index.js.map +1 -1
- package/dist/domain/events/lifetime.d.ts +0 -12
- package/dist/domain/events/lifetime.js +2 -12
- package/dist/domain/events/lifetime.js.map +1 -1
- package/dist/domain/events/project-events.d.ts +10 -14
- package/dist/domain/events/project-events.js +22 -18
- package/dist/domain/events/project-events.js.map +1 -1
- package/dist/domain/events/schema.d.ts +0 -12
- package/dist/domain/events/schema.js +2 -12
- package/dist/domain/events/schema.js.map +1 -1
- package/dist/domain/fieldTypes/index.d.ts +0 -12
- package/dist/domain/fieldTypes/index.js +6 -16
- package/dist/domain/fieldTypes/index.js.map +1 -1
- package/dist/domain/fieldTypes/schema.d.ts +0 -12
- package/dist/domain/fieldTypes/schema.js +2 -12
- package/dist/domain/fieldTypes/schema.js.map +1 -1
- package/dist/domain/fieldTypes/service.d.ts +4 -16
- package/dist/domain/fieldTypes/service.js +7 -17
- package/dist/domain/fieldTypes/service.js.map +1 -1
- package/dist/domain/graphModels/index.d.ts +0 -12
- package/dist/domain/graphModels/index.js +4 -14
- package/dist/domain/graphModels/index.js.map +1 -1
- package/dist/domain/graphModels/schema.d.ts +0 -12
- package/dist/domain/graphModels/schema.js +2 -12
- package/dist/domain/graphModels/schema.js.map +1 -1
- package/dist/domain/graphModels/service.d.ts +2 -14
- package/dist/domain/graphModels/service.js +4 -14
- package/dist/domain/graphModels/service.js.map +1 -1
- package/dist/domain/graphViews/index.d.ts +0 -12
- package/dist/domain/graphViews/index.js +4 -14
- package/dist/domain/graphViews/index.js.map +1 -1
- package/dist/domain/graphViews/schema.js +2 -0
- package/dist/domain/graphViews/schema.js.map +1 -1
- package/dist/domain/graphViews/service.d.ts +2 -14
- package/dist/domain/graphViews/service.js +4 -14
- package/dist/domain/graphViews/service.js.map +1 -1
- package/dist/domain/labels/index.d.ts +0 -12
- package/dist/domain/labels/index.js +4 -14
- package/dist/domain/labels/index.js.map +1 -1
- package/dist/domain/labels/service.d.ts +3 -15
- package/dist/domain/labels/service.js +5 -15
- package/dist/domain/labels/service.js.map +1 -1
- package/dist/domain/linkTypes/index.d.ts +0 -12
- package/dist/domain/linkTypes/index.js +6 -16
- package/dist/domain/linkTypes/index.js.map +1 -1
- package/dist/domain/linkTypes/schema.d.ts +0 -12
- package/dist/domain/linkTypes/schema.js +2 -12
- package/dist/domain/linkTypes/schema.js.map +1 -1
- package/dist/domain/linkTypes/service.d.ts +3 -15
- package/dist/domain/linkTypes/service.js +7 -17
- package/dist/domain/linkTypes/service.js.map +1 -1
- package/dist/domain/logicPrograms/index.d.ts +0 -12
- package/dist/domain/logicPrograms/index.js +4 -14
- package/dist/domain/logicPrograms/index.js.map +1 -1
- package/dist/domain/logicPrograms/service.d.ts +2 -14
- package/dist/domain/logicPrograms/service.js +5 -3
- package/dist/domain/logicPrograms/service.js.map +1 -1
- package/dist/domain/mcp/index.d.ts +3 -15
- package/dist/domain/mcp/index.js +27 -21
- package/dist/domain/mcp/index.js.map +1 -1
- package/dist/domain/project/index.d.ts +0 -12
- package/dist/domain/project/index.js +30 -40
- package/dist/domain/project/index.js.map +1 -1
- package/dist/domain/project/schema.d.ts +0 -12
- package/dist/domain/project/schema.js +2 -12
- package/dist/domain/project/schema.js.map +1 -1
- package/dist/domain/project/service.d.ts +16 -28
- package/dist/domain/project/service.js +48 -58
- package/dist/domain/project/service.js.map +1 -1
- package/dist/domain/projects/index.d.ts +2 -14
- package/dist/domain/projects/index.js +19 -36
- package/dist/domain/projects/index.js.map +1 -1
- package/dist/domain/projects/schema.d.ts +1 -12
- package/dist/domain/projects/schema.js +3 -12
- package/dist/domain/projects/schema.js.map +1 -1
- package/dist/domain/projects/service.d.ts +9 -35
- package/dist/domain/projects/service.js +12 -48
- package/dist/domain/projects/service.js.map +1 -1
- package/dist/domain/reports/index.d.ts +0 -12
- package/dist/domain/reports/index.js +4 -14
- package/dist/domain/reports/index.js.map +1 -1
- package/dist/domain/reports/schema.d.ts +0 -12
- package/dist/domain/reports/schema.js +2 -12
- package/dist/domain/reports/schema.js.map +1 -1
- package/dist/domain/reports/service.d.ts +2 -14
- package/dist/domain/reports/service.js +4 -14
- package/dist/domain/reports/service.js.map +1 -1
- package/dist/domain/resources/index.d.ts +0 -12
- package/dist/domain/resources/index.js +19 -26
- package/dist/domain/resources/index.js.map +1 -1
- package/dist/domain/resources/schema.js +2 -0
- package/dist/domain/resources/schema.js.map +1 -1
- package/dist/domain/resources/service.d.ts +11 -23
- package/dist/domain/resources/service.js +48 -59
- package/dist/domain/resources/service.js.map +1 -1
- package/dist/domain/skills/index.d.ts +0 -12
- package/dist/domain/skills/index.js +4 -14
- package/dist/domain/skills/index.js.map +1 -1
- package/dist/domain/skills/schema.d.ts +0 -12
- package/dist/domain/skills/schema.js +2 -12
- package/dist/domain/skills/schema.js.map +1 -1
- package/dist/domain/skills/service.d.ts +2 -14
- package/dist/domain/skills/service.js +4 -14
- package/dist/domain/skills/service.js.map +1 -1
- package/dist/domain/templates/index.d.ts +0 -12
- package/dist/domain/templates/index.js +8 -18
- package/dist/domain/templates/index.js.map +1 -1
- package/dist/domain/templates/schema.d.ts +0 -12
- package/dist/domain/templates/schema.js +2 -12
- package/dist/domain/templates/schema.js.map +1 -1
- package/dist/domain/templates/service.d.ts +4 -16
- package/dist/domain/templates/service.js +8 -18
- package/dist/domain/templates/service.js.map +1 -1
- package/dist/domain/tree/index.d.ts +0 -12
- package/dist/domain/tree/index.js +4 -14
- package/dist/domain/tree/index.js.map +1 -1
- package/dist/domain/tree/service.d.ts +3 -15
- package/dist/domain/tree/service.js +8 -15
- package/dist/domain/tree/service.js.map +1 -1
- package/dist/domain/workflows/index.d.ts +0 -12
- package/dist/domain/workflows/index.js +4 -14
- package/dist/domain/workflows/index.js.map +1 -1
- package/dist/domain/workflows/schema.d.ts +0 -12
- package/dist/domain/workflows/schema.js +2 -12
- package/dist/domain/workflows/schema.js.map +1 -1
- package/dist/domain/workflows/service.d.ts +2 -14
- package/dist/domain/workflows/service.js +4 -14
- package/dist/domain/workflows/service.js.map +1 -1
- package/dist/export.d.ts +6 -20
- package/dist/export.js +19 -29
- package/dist/export.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.js +19 -43
- package/dist/index.js.map +1 -1
- package/dist/main.js +19 -30
- package/dist/main.js.map +1 -1
- package/dist/middleware/auth.d.ts +0 -12
- package/dist/middleware/auth.js +2 -12
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/commandManager.d.ts +15 -20
- package/dist/middleware/commandManager.js +27 -36
- package/dist/middleware/commandManager.js.map +1 -1
- package/dist/middleware/tree.js +2 -0
- package/dist/middleware/tree.js.map +1 -1
- package/dist/middleware/zvalidator.js +2 -0
- package/dist/middleware/zvalidator.js.map +1 -1
- package/dist/overlay.d.ts +4 -16
- package/dist/overlay.js +22 -17
- package/dist/overlay.js.map +1 -1
- package/dist/public/THIRD-PARTY.txt +1397 -286
- package/dist/public/assets/__vite-browser-external-DGgK3jMU.js +1 -0
- package/dist/public/assets/abnfDiagram-WEYOIA3C-B3qq7PKv.js +1 -0
- package/dist/public/assets/architecture-WOLXFQ4H-Bzau2LI0.js +1 -0
- package/dist/public/assets/architectureDiagram-ZHVYKT53-Bg0cUwdb.js +36 -0
- package/dist/public/assets/blockDiagram-RJAE7QA3-0RJB-ra-.js +140 -0
- package/dist/public/assets/c4Diagram-XDPPPE54-BzoQcLvf.js +38 -0
- package/dist/public/assets/channel-6BNdw4Ax.js +1 -0
- package/dist/public/assets/{chunk-SVP7TREG-CIQMl7hl.js → chunk-2E7WHVMD-6aqPk-Hk.js} +4 -4
- package/dist/public/assets/chunk-4EMNKR2T-vovNSAaE.js +1 -0
- package/dist/public/assets/{chunk-F27PBJKO-tDfs6zeO.js → chunk-55XCU76K-DXkKnt2y.js} +1 -1
- package/dist/public/assets/chunk-7S6XSTFO-B9bfO0l3.js +2 -0
- package/dist/public/assets/chunk-AQDTSKZB-ilLy_cYP.js +72 -0
- package/dist/public/assets/chunk-DSNLSHJZ-DAudglXu.js +129 -0
- package/dist/public/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/public/assets/chunk-HAGFOTED-CSKFgs6b.js +62 -0
- package/dist/public/assets/chunk-HNE4Q36P-Cu5gPBVk.js +1 -0
- package/dist/public/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/public/assets/chunk-NGNAAXSQ-DI_UYJZ4.js +136 -0
- package/dist/public/assets/chunk-NQOKRVIF-Bpcvhq1n.js +213 -0
- package/dist/public/assets/chunk-UHW7PFBP-BDjvOaTH.js +1 -0
- package/dist/public/assets/chunk-VQ5W62QI-DHTcO93W.js +1 -0
- package/dist/public/assets/chunk-WQQL4CDK-H6nAhuck.js +10 -0
- package/dist/public/assets/{chunk-XXDRQBXY-B7bWyHjt.js → chunk-XXDRQBXY-BUghdEVl.js} +1 -1
- package/dist/public/assets/chunk-YZO67HFG-D13E0_Yh.js +1 -0
- package/dist/public/assets/chunk-ZAUX2LTX-Dp5y-2wt.js +1 -0
- package/dist/public/assets/chunk-ZCHMQSOR-RJjlln1D.js +2 -0
- package/dist/public/assets/classDiagram-v2-4MYWR3UA-CAqiFCSv.js +217 -0
- package/dist/public/assets/cose-bilkent-JH36ORCC-C_VOHzoP.js +1 -0
- package/dist/public/assets/cynefin-EF2NZ3EQ-Dyk4ZPjK.js +1 -0
- package/dist/public/assets/{cynefinDiagram-5FMLGOSQ-_V_nrIhD.js → cynefinDiagram-WF24UDRP-b_Ia8gQX.js} +1 -1
- package/dist/public/assets/cytoscape.esm-GRKmfDkD.js +321 -0
- package/dist/public/assets/dagre-NK4GIZVX-CH1K1yF8.js +4 -0
- package/dist/public/assets/{diagram-VX7I27RA-De_UQv8C.js → diagram-CBK3MWTC-OaKd5avy.js} +13 -13
- package/dist/public/assets/diagram-I5XIIV2D-Cmu5z1ad.js +24 -0
- package/dist/public/assets/{diagram-S7CK7UJ4-25IjIKyo.js → diagram-ODIL2UCW-Cz1kkDDX.js} +7 -7
- package/dist/public/assets/diagram-PFBEJUXE-faMkmqUW.js +3 -0
- package/dist/public/assets/{diagram-UQ7AKVKN-C5VvsV7x.js → diagram-RJA3I4VV-nycvfte-.js} +2 -2
- package/dist/public/assets/diagram-TYUNFSNR-CjEv5QCm.js +200 -0
- package/dist/public/assets/{dist-BDCdLWk4.js → dist-DGs_yUrP.js} +1 -1
- package/dist/public/assets/ebnfDiagram-V4P3TTPT-DN-IIxCy.js +1 -0
- package/dist/public/assets/elk-QONTBCTQ-Bsam88GP.js +27 -0
- package/dist/public/assets/erDiagram-KYQIGQAA-DEU_qqNK.js +99 -0
- package/dist/public/assets/eventmodeling-K75KTNOO-Bl6NCM9E.js +1 -0
- package/dist/public/assets/flowDiagram-IUGLLWBU-Cl4qZ-36.js +1 -0
- package/dist/public/assets/ganttDiagram-R7GPNTJY-BmMd4aGi.js +292 -0
- package/dist/public/assets/gitGraph-VSP46ZUC-Q0H2PWek.js +1 -0
- package/dist/public/assets/gitGraphDiagram-PDYL7XHY-BlCTBYTj.js +106 -0
- package/dist/public/assets/index-CuBJ0hof.css +1 -0
- package/dist/public/assets/index-D701BZPh.js +2219 -0
- package/dist/public/assets/info-OHQRW6UA-D0TMPJxW.js +1 -0
- package/dist/public/assets/infoDiagram-MVDRKAX5-CljbtJXu.js +2 -0
- package/dist/public/assets/{ishikawaDiagram-5VMMS53U-KvT4DU1u.js → ishikawaDiagram-HPEHV2GE-_Y3Fr0hu.js} +6 -6
- package/dist/public/assets/{journeyDiagram-3NMN7TZE-PhGRkXkq.js → journeyDiagram-BOSHW7O7-Bo55jJ4m.js} +39 -39
- package/dist/public/assets/kanban-definition-FNSA4HC5-Cd-10MtF.js +89 -0
- package/dist/public/assets/katex-MEuSR36T.js +257 -0
- package/dist/public/assets/line-BDmh4sWC.js +1 -0
- package/dist/public/assets/linear-Dt7xjMrI.js +1 -0
- package/dist/public/assets/mermaid-parser.core-BJ1yyzvV.js +7 -0
- package/dist/public/assets/mindmap-definition-6OY57UG3-CRgumPuN.js +98 -0
- package/dist/public/assets/packet-JDAUHWVQ-DsTMT3Kw.js +1 -0
- package/dist/public/assets/pegDiagram-ECIUJNBX-BEGI5k3m.js +1 -0
- package/dist/public/assets/pie-XZMESJXO-COyqzA3N.js +1 -0
- package/dist/public/assets/pieDiagram-GNMPY74T-CrLJhZJJ.js +39 -0
- package/dist/public/assets/{quadrantDiagram-AXDQQJYC-B9dlNtZl.js → quadrantDiagram-D57K4MC3-Fl7HMHxK.js} +6 -6
- package/dist/public/assets/radar-ABXABTNO-DeXHKowk.js +1 -0
- package/dist/public/assets/railroad-I3PHUGI6-CUjKUdPz.js +1 -0
- package/dist/public/assets/railroad-abnf-LNEFI6M7-B1aEgHE6.js +1 -0
- package/dist/public/assets/railroad-ebnf-DWYD2UWJ-DmmI3Voz.js +1 -0
- package/dist/public/assets/railroad-peg-JR7BVNR7-BHzi9m7r.js +1 -0
- package/dist/public/assets/railroadDiagram-Y72NRBL7-D1oeE5fy.js +1 -0
- package/dist/public/assets/requirementDiagram-EQYSW5RA-BJDKK1aS.js +84 -0
- package/dist/public/assets/rolldown-runtime-BCiCTKAo.js +1 -0
- package/dist/public/assets/{sankeyDiagram-P5KCCOFB-C4rb2pZ9.js → sankeyDiagram-SY24JHO5-C4g0OwZ9.js} +7 -7
- package/dist/public/assets/sequenceDiagram-BLEHNHQU-CEvy4P-b.js +169 -0
- package/dist/public/assets/src-MPsEqXxq.js +1 -0
- package/dist/public/assets/stateDiagram-v2-A6IESKWZ-BFhvw4Gl.js +291 -0
- package/dist/public/assets/swimlanes-B3ENRKFQ-BIl_Q-FM.js +1 -0
- package/dist/public/assets/swimlanesDiagram-AYQRV4AK-rvDbKEHQ.js +8 -0
- package/dist/public/assets/timeline-definition-JXYKGLGB-qAoWTH4N.js +120 -0
- package/dist/public/assets/treeView-D4JQ5SDB-vq16JKkJ.js +1 -0
- package/dist/public/assets/treemap-SAJKECNS-C0IZTaDk.js +1 -0
- package/dist/public/assets/usecaseDiagram-WPOLBNNX-Dq8iz49r.js +328 -0
- package/dist/public/assets/vennDiagram-Q3Y3IDCW-Br4JmRjM.js +34 -0
- package/dist/public/assets/wardley-7MLQ67FV-CEPlAQ79.js +1 -0
- package/dist/public/assets/{wardleyDiagram-VM6X3IG4-BOXpwLCv.js → wardleyDiagram-IVAIDKWA-DURB7Ue6.js} +4 -4
- package/dist/public/assets/xychartDiagram-4URNHDU4-BiZywfhy.js +7 -0
- package/dist/public/index.html +27 -21
- package/dist/public/sbom.cdx.json +1 -1
- package/dist/types.d.ts +0 -12
- package/dist/types.js +2 -12
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +12 -5
- package/dist/utils.js +18 -43
- package/dist/utils.js.map +1 -1
- package/package.json +13 -12
- package/src/app.ts +33 -43
- package/src/auth/index.ts +2 -12
- package/src/auth/keycloak.ts +2 -12
- package/src/auth/mock.ts +2 -12
- package/src/auth/types.ts +2 -12
- package/src/common/errors.ts +45 -0
- package/src/common/validationSchemas.ts +3 -12
- package/src/domain/auth/index.ts +2 -12
- package/src/domain/calculations/index.ts +4 -14
- package/src/domain/calculations/schema.ts +2 -12
- package/src/domain/calculations/service.ts +8 -21
- package/src/domain/cardTypes/index.ts +10 -20
- package/src/domain/cardTypes/schema.ts +3 -12
- package/src/domain/cardTypes/service.ts +22 -29
- package/src/domain/cards/index.ts +158 -128
- package/src/domain/cards/lib.ts +9 -161
- package/src/domain/cards/mermaid.ts +25 -0
- package/src/domain/cards/schema.ts +8 -12
- package/src/domain/cards/service.ts +165 -118
- package/src/domain/connectors/index.ts +5 -14
- package/src/domain/connectors/service.ts +5 -20
- package/src/domain/events/events-by-project.ts +59 -0
- package/src/domain/events/index.ts +3 -13
- package/src/domain/events/lifetime.ts +2 -12
- package/src/domain/events/project-events.ts +30 -18
- package/src/domain/events/schema.ts +2 -12
- package/src/domain/fieldTypes/index.ts +6 -16
- package/src/domain/fieldTypes/schema.ts +3 -12
- package/src/domain/fieldTypes/service.ts +9 -21
- package/src/domain/graphModels/index.ts +4 -14
- package/src/domain/graphModels/schema.ts +3 -12
- package/src/domain/graphModels/service.ts +5 -18
- package/src/domain/graphViews/index.ts +4 -14
- package/src/domain/graphViews/schema.ts +3 -0
- package/src/domain/graphViews/service.ts +5 -18
- package/src/domain/labels/index.ts +4 -14
- package/src/domain/labels/service.ts +6 -16
- package/src/domain/linkTypes/index.ts +6 -16
- package/src/domain/linkTypes/schema.ts +2 -12
- package/src/domain/linkTypes/service.ts +8 -21
- package/src/domain/logicPrograms/index.ts +5 -17
- package/src/domain/logicPrograms/service.ts +7 -16
- package/src/domain/mcp/index.ts +33 -24
- package/src/domain/project/index.ts +34 -40
- package/src/domain/project/schema.ts +2 -12
- package/src/domain/project/service.ts +56 -71
- package/src/domain/projects/index.ts +34 -50
- package/src/domain/projects/schema.ts +3 -12
- package/src/domain/projects/service.ts +18 -88
- package/src/domain/reports/index.ts +4 -14
- package/src/domain/reports/schema.ts +2 -12
- package/src/domain/reports/service.ts +5 -18
- package/src/domain/resources/index.ts +19 -30
- package/src/domain/resources/schema.ts +3 -0
- package/src/domain/resources/service.ts +55 -90
- package/src/domain/skills/index.ts +4 -14
- package/src/domain/skills/schema.ts +2 -12
- package/src/domain/skills/service.ts +5 -15
- package/src/domain/templates/index.ts +8 -18
- package/src/domain/templates/schema.ts +2 -12
- package/src/domain/templates/service.ts +9 -22
- package/src/domain/tree/index.ts +4 -14
- package/src/domain/tree/service.ts +10 -21
- package/src/domain/workflows/index.ts +4 -14
- package/src/domain/workflows/schema.ts +2 -12
- package/src/domain/workflows/service.ts +5 -18
- package/src/export.ts +24 -33
- package/src/index.ts +29 -48
- package/src/main.ts +25 -35
- package/src/middleware/auth.ts +2 -12
- package/src/middleware/commandManager.ts +35 -50
- package/src/middleware/tree.ts +3 -0
- package/src/middleware/zvalidator.ts +3 -0
- package/src/overlay.ts +29 -19
- package/src/types.ts +2 -12
- package/src/utils.ts +26 -46
- package/dist/project-errors.d.ts +0 -18
- package/dist/project-errors.js +0 -25
- package/dist/project-errors.js.map +0 -1
- package/dist/project-registry.d.ts +0 -65
- package/dist/project-registry.js +0 -121
- package/dist/project-registry.js.map +0 -1
- package/dist/public/assets/__vite-browser-external-PaJ7c2l8.js +0 -1
- package/dist/public/assets/abnfDiagram-VCTEODGH-DB2dfOGe.js +0 -1
- package/dist/public/assets/architecture-7GRP2DOG-2V0X8hxt.js +0 -1
- package/dist/public/assets/architectureDiagram-5GKGNRK7-CRhUR2Ul.js +0 -36
- package/dist/public/assets/blockDiagram-I7D4REHJ-DJKsYF1v.js +0 -129
- package/dist/public/assets/c4Diagram-7LVT6UL2-BTwMzoAF.js +0 -38
- package/dist/public/assets/channel-C0JtPpMA.js +0 -1
- package/dist/public/assets/chunk-4HAMMTFA-DjjgrBsB.js +0 -62
- package/dist/public/assets/chunk-75Z2AOVW-CKqXRGJV.js +0 -2
- package/dist/public/assets/chunk-DU6HZSFF-iJGdiRt7.js +0 -127
- package/dist/public/assets/chunk-FOHPRMQF-DzxwRta7.js +0 -161
- package/dist/public/assets/chunk-GMAD6QVW-DxHVEaGj.js +0 -72
- package/dist/public/assets/chunk-GVQU2GXP-AMxD4_Ta.js +0 -1
- package/dist/public/assets/chunk-IMKFNOWR-0rz8QrYC.js +0 -231
- package/dist/public/assets/chunk-L3NEJ4N5-BK3KAKMe.js +0 -1
- package/dist/public/assets/chunk-OSK3NFVY-B8MdrI_M.js +0 -10
- package/dist/public/assets/chunk-P2QGCYS3-D3J5AcHg.js +0 -1
- package/dist/public/assets/chunk-POPQ4Y6H-CsYg_XkK.js +0 -1
- package/dist/public/assets/chunk-PWAF6VOD-D9cdEIZp.js +0 -1
- package/dist/public/assets/chunk-SHT3W25Y-1jjokCf3.js +0 -168
- package/dist/public/assets/chunk-TICWLB2K-Ccsy2PYz.js +0 -206
- package/dist/public/assets/classDiagram-ZZMXUADV-mWyXNAXi.js +0 -1
- package/dist/public/assets/classDiagram-v2-VYDZK3BY-mWyXNAXi.js +0 -1
- package/dist/public/assets/cose-bilkent-JH36ORCC-DPzc3Pv4.js +0 -1
- package/dist/public/assets/cynefin-OW5HDTMX-BIVDCYOU.js +0 -1
- package/dist/public/assets/cytoscape.esm-NgwPT4ez.js +0 -321
- package/dist/public/assets/dagre-C-rnJpZF.js +0 -1
- package/dist/public/assets/dagre-GXQ25YYZ-CJc0wc6f.js +0 -4
- package/dist/public/assets/diagram-VSXAHHWV-Dw3rKVL_.js +0 -3
- package/dist/public/assets/diagram-Z3DM3KII-Bd-65QQW.js +0 -24
- package/dist/public/assets/ebnfDiagram-PWID7BFC-CrxdET5U.js +0 -1
- package/dist/public/assets/erDiagram-RLTQ6QDP-BKo0Uyna.js +0 -99
- package/dist/public/assets/eventmodeling-NTZA5JFV-DKkAdJZd.js +0 -1
- package/dist/public/assets/flowDiagram-HODETNUW-CEE2wjdt.js +0 -1
- package/dist/public/assets/ganttDiagram-EL5Y4UJY-BHFn8vk0.js +0 -292
- package/dist/public/assets/gitGraph-4MIJSDKK-Bpvnb45u.js +0 -1
- package/dist/public/assets/gitGraphDiagram-WWUBYQGX-Bw0EoxBY.js +0 -106
- package/dist/public/assets/index-D3HS7YxF.js +0 -2228
- package/dist/public/assets/index-Sv3WxZ_8.css +0 -1
- package/dist/public/assets/info-A6RAGUB7-BvvG_zrk.js +0 -1
- package/dist/public/assets/infoDiagram-27XIBGKW-CtpdJmtL.js +0 -2
- package/dist/public/assets/kanban-definition-UXKFOSKX-Oyx5QgRq.js +0 -89
- package/dist/public/assets/katex-ZlcWpGUi.js +0 -257
- package/dist/public/assets/line-Dr41HTk1.js +0 -1
- package/dist/public/assets/linear-DDBi9FwZ.js +0 -1
- package/dist/public/assets/mermaid-parser.core-DsIAxDBa.js +0 -7
- package/dist/public/assets/mindmap-definition-YA3MSWOX-r8hvd6gP.js +0 -96
- package/dist/public/assets/packet-AYTQ26CC-B0EpJ2Sc.js +0 -1
- package/dist/public/assets/pegDiagram-XKGWAZYB-DaNkQTQF.js +0 -1
- package/dist/public/assets/pie-WAS4IAKB-Dt2zttL9.js +0 -1
- package/dist/public/assets/pieDiagram-E7YTZNPT-x0XWEGbd.js +0 -39
- package/dist/public/assets/radar-RG4KPBEZ-DjbR4-5l.js +0 -1
- package/dist/public/assets/railroad-74A4TZTK-Bk3B5r_R.js +0 -1
- package/dist/public/assets/railroad-abnf-HS5TGJTU-DxaWfACD.js +0 -1
- package/dist/public/assets/railroad-ebnf-LZEXJU2U-DscxXZO0.js +0 -1
- package/dist/public/assets/railroad-peg-WCYAUIDC-BCWzRFzw.js +0 -1
- package/dist/public/assets/railroadDiagram-O6MQD6OU-DhwsoX6A.js +0 -1
- package/dist/public/assets/requirementDiagram-BXWQKSXE-BiqZ6axf.js +0 -84
- package/dist/public/assets/rolldown-runtime-B0Z9INg1.js +0 -1
- package/dist/public/assets/sequenceDiagram-WJ2MYXX4-DRKTnGD7.js +0 -162
- package/dist/public/assets/src-an_qrnIj.js +0 -1
- package/dist/public/assets/stateDiagram-D77RDMKH-xxdybg5Z.js +0 -1
- package/dist/public/assets/stateDiagram-v2-MP3YSRHH-CXzmJy_a.js +0 -1
- package/dist/public/assets/swimlanes-42K2YHIH-DyGI1gI6.js +0 -1
- package/dist/public/assets/swimlanesDiagram-VR7AAH4N-7hqb6VoW.js +0 -8
- package/dist/public/assets/timeline-definition-24CTP7MA-C2pIp77Q.js +0 -120
- package/dist/public/assets/treeView-Q6P3EWNA-CxRtaaB8.js +0 -1
- package/dist/public/assets/treemap-WGGIJYW6-G1IHiwTa.js +0 -1
- package/dist/public/assets/vennDiagram-4TSXK5OY-CwimQRR9.js +0 -34
- package/dist/public/assets/wardley-WFR3VGLG-DkQ3TjZX.js +0 -1
- package/dist/public/assets/xychartDiagram-S5SC5T6Z-ChOPYsHc.js +0 -7
- package/src/project-errors.ts +0 -33
- package/src/project-registry.ts +0 -161
package/src/domain/mcp/index.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
|
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
|
|
80
|
+
* Create an MCP HTTP router that serves all projects of the given directory.
|
|
78
81
|
*/
|
|
79
82
|
export function createMcpRouter(
|
|
80
|
-
|
|
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 (
|
|
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 (
|
|
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(
|
|
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
|
-
|
|
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
|
|
24
|
+
const ws = c.get('ws');
|
|
35
25
|
|
|
36
|
-
const project = await projectService.getProject(
|
|
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
|
|
35
|
+
const ws = c.get('ws');
|
|
46
36
|
const updates = c.req.valid('json');
|
|
47
37
|
|
|
48
|
-
const project = await projectService.updateProject(
|
|
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
|
|
55
|
-
await projectService.updateAllModules(
|
|
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
|
|
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(
|
|
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
|
|
74
|
+
const ws = c.get('ws');
|
|
81
75
|
const target = c.req.valid('query');
|
|
82
|
-
return c.json(await projectService.listModuleVersions(
|
|
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
|
|
92
|
-
return c.json(await projectService.getUpdatePlan(
|
|
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
|
|
98
|
-
const modules = await projectService.getImportableModules(
|
|
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
|
|
101
|
+
const ws = c.get('ws');
|
|
108
102
|
const { source, range } = c.req.valid('json');
|
|
109
|
-
await projectService.importModule(
|
|
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
|
|
113
|
+
const ws = c.get('ws');
|
|
120
114
|
const { module } = c.req.valid('param');
|
|
121
|
-
await projectService.deleteModule(
|
|
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
|
|
128
|
-
const hubs = await projectService.getHubs(
|
|
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
|
|
131
|
+
const ws = c.get('ws');
|
|
138
132
|
const { location } = c.req.valid('json');
|
|
139
|
-
const unreachable = await projectService.addHub(
|
|
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
|
|
143
|
+
const ws = c.get('ws');
|
|
150
144
|
const { location } = c.req.valid('query');
|
|
151
|
-
await projectService.removeHub(
|
|
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
|
|
158
|
-
const unreachable = await projectService.fetchHubs(
|
|
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
|
|
164
|
+
const ws = c.get('ws');
|
|
171
165
|
const { dryRun } = c.req.valid('json');
|
|
172
|
-
const result = await projectService.cleanProject(
|
|
166
|
+
const result = await projectService.cleanProject(ws, dryRun);
|
|
173
167
|
return c.json(result);
|
|
174
168
|
},
|
|
175
169
|
);
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
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/
|
|
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
|
-
|
|
50
|
+
ws: Workspace,
|
|
63
51
|
row: ProjectModuleInfo,
|
|
64
52
|
): Promise<ProjectModule> {
|
|
65
53
|
try {
|
|
66
|
-
const data = await
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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(
|
|
70
|
+
modules.map((row) => toModuleInfo(ws, row)),
|
|
85
71
|
);
|
|
86
72
|
|
|
87
|
-
const gitRemoteUrl = (await
|
|
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
|
-
|
|
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
|
|
93
|
+
await ws.atomic(async () => {
|
|
107
94
|
if (cardKeyPrefix) {
|
|
108
|
-
await
|
|
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
|
|
103
|
+
await ws.settings.setName(name);
|
|
112
104
|
}
|
|
113
105
|
if (description !== undefined) {
|
|
114
|
-
await
|
|
106
|
+
await ws.settings.setDescription(description);
|
|
115
107
|
}
|
|
116
108
|
if (category !== undefined) {
|
|
117
|
-
await
|
|
109
|
+
await ws.settings.setCategory(category);
|
|
118
110
|
}
|
|
119
111
|
}, 'Update project settings');
|
|
120
112
|
|
|
121
113
|
if (gitRemoteUrl !== undefined) {
|
|
122
|
-
await
|
|
114
|
+
await ws.settings.setGitRemoteUrl(gitRemoteUrl);
|
|
123
115
|
}
|
|
124
116
|
|
|
125
|
-
return getProject(
|
|
117
|
+
return getProject(ws);
|
|
126
118
|
}
|
|
127
119
|
|
|
128
120
|
export async function updateModule(
|
|
129
|
-
|
|
121
|
+
ws: Workspace,
|
|
130
122
|
module: string,
|
|
131
123
|
range?: string,
|
|
132
124
|
) {
|
|
133
|
-
await
|
|
125
|
+
await ws.modules.update(range ? { module, range } : { module });
|
|
134
126
|
}
|
|
135
127
|
|
|
136
|
-
export async function updateAllModules(
|
|
137
|
-
await
|
|
128
|
+
export async function updateAllModules(ws: Workspace) {
|
|
129
|
+
await ws.modules.update({});
|
|
138
130
|
}
|
|
139
131
|
|
|
140
|
-
export async function getUpdatePlan(
|
|
141
|
-
|
|
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
|
-
|
|
137
|
+
ws: Workspace,
|
|
148
138
|
target: { module?: string; source?: string },
|
|
149
139
|
): Promise<string[]> {
|
|
150
|
-
return
|
|
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(
|
|
158
|
-
await
|
|
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(
|
|
153
|
+
async function populateHubCache(ws: Workspace) {
|
|
164
154
|
try {
|
|
165
|
-
await
|
|
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
|
-
|
|
163
|
+
ws: Workspace,
|
|
174
164
|
): Promise<ModuleSettingFromHub[]> {
|
|
175
|
-
await populateHubCache(
|
|
176
|
-
return
|
|
165
|
+
await populateHubCache(ws);
|
|
166
|
+
return ws.modules.importable(false, true);
|
|
177
167
|
}
|
|
178
168
|
|
|
179
169
|
export async function importModule(
|
|
180
|
-
|
|
170
|
+
ws: Workspace,
|
|
181
171
|
source: string,
|
|
182
172
|
range?: string,
|
|
183
173
|
): Promise<void> {
|
|
184
|
-
await
|
|
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(
|
|
191
|
-
await populateHubCache(
|
|
192
|
-
const hubs = await
|
|
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
|
|
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
|
-
|
|
197
|
+
ws: Workspace,
|
|
211
198
|
location: string,
|
|
212
199
|
): Promise<HubFetchFailure[]> {
|
|
213
|
-
await
|
|
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
|
|
203
|
+
return ws.modules.fetchHubs(true);
|
|
217
204
|
}
|
|
218
205
|
|
|
219
|
-
export async function removeHub(
|
|
220
|
-
await
|
|
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
|
-
|
|
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
|
-
|
|
215
|
+
ws: Workspace,
|
|
231
216
|
dryRun: boolean,
|
|
232
217
|
): Promise<CleanResult> {
|
|
233
|
-
return
|
|
218
|
+
return ws.clean.run(dryRun);
|
|
234
219
|
}
|