@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bomFormat":"CycloneDX","specVersion":"1.6","components":[{"type":"library","name":"react","version":"19.3.0","purl":"pkg:npm/react@19.3.0"},{"type":"library","name":"scheduler","version":"0.28.0","purl":"pkg:npm/scheduler@0.28.0"},{"type":"library","name":"react-dom","version":"19.3.0","purl":"pkg:npm/react-dom@19.3.0"},{"type":"library","name":"react-router","version":"8.4.0","purl":"pkg:npm/react-router@8.4.0"},{"type":"library","name":"@mui/joy","version":"5.0.0-beta.52","purl":"pkg:npm/%40mui/joy@5.0.0-beta.52"},{"type":"library","name":"@mui/utils","version":"5.17.1","purl":"pkg:npm/%40mui/utils@5.17.1"},{"type":"library","name":"@babel/runtime","version":"7.29.7","purl":"pkg:npm/%40babel/runtime@7.29.7"},{"type":"library","name":"@emotion/sheet","version":"1.4.0","purl":"pkg:npm/%40emotion/sheet@1.4.0"},{"type":"library","name":"stylis","version":"4.2.0","purl":"pkg:npm/stylis@4.2.0"},{"type":"library","name":"@emotion/memoize","version":"0.9.0","purl":"pkg:npm/%40emotion/memoize@0.9.0"},{"type":"library","name":"@emotion/cache","version":"11.14.0","purl":"pkg:npm/%40emotion/cache@11.14.0"},{"type":"library","name":"react-is","version":"16.13.1","purl":"pkg:npm/react-is@16.13.1"},{"type":"library","name":"hoist-non-react-statics","version":"3.3.2","purl":"pkg:npm/hoist-non-react-statics@3.3.2"},{"type":"library","name":"@emotion/utils","version":"1.4.2","purl":"pkg:npm/%40emotion/utils@1.4.2"},{"type":"library","name":"@emotion/hash","version":"0.9.2","purl":"pkg:npm/%40emotion/hash@0.9.2"},{"type":"library","name":"@emotion/unitless","version":"0.10.0","purl":"pkg:npm/%40emotion/unitless@0.10.0"},{"type":"library","name":"@emotion/serialize","version":"1.3.3","purl":"pkg:npm/%40emotion/serialize@1.3.3"},{"type":"library","name":"@emotion/use-insertion-effect-with-fallbacks","version":"1.2.0","purl":"pkg:npm/%40emotion/use-insertion-effect-with-fallbacks@1.2.0"},{"type":"library","name":"@emotion/react","version":"11.14.0","purl":"pkg:npm/%40emotion/react@11.14.0"},{"type":"library","name":"@emotion/is-prop-valid","version":"1.4.0","purl":"pkg:npm/%40emotion/is-prop-valid@1.4.0"},{"type":"library","name":"@emotion/styled","version":"11.14.1","purl":"pkg:npm/%40emotion/styled@11.14.1"},{"type":"library","name":"@mui/styled-engine","version":"5.18.0","purl":"pkg:npm/%40mui/styled-engine@5.18.0"},{"type":"library","name":"@mui/system","version":"5.18.0","purl":"pkg:npm/%40mui/system@5.18.0"},{"type":"library","name":"clsx","version":"2.1.1","purl":"pkg:npm/clsx@2.1.1"},{"type":"library","name":"@mui/private-theming","version":"5.17.1","purl":"pkg:npm/%40mui/private-theming@5.17.1"},{"type":"library","name":"@mui/base","version":"5.0.0-beta.40-1","purl":"pkg:npm/%40mui/base@5.0.0-beta.40-1"},{"type":"library","name":"@popperjs/core","version":"2.11.8","purl":"pkg:npm/%40popperjs/core@2.11.8"},{"type":"library","name":"use-sync-external-store","version":"1.6.0","purl":"pkg:npm/use-sync-external-store@1.6.0"},{"type":"library","name":"dequal","version":"2.0.3","purl":"pkg:npm/dequal@2.0.3"},{"type":"library","name":"swr","version":"2.5.1","purl":"pkg:npm/swr@2.5.1"},{"type":"library","name":"react-hook-form","version":"7.89.0","purl":"pkg:npm/react-hook-form@7.89.0"},{"type":"library","name":"@cyberismo/data-handler","version":"1.2.0","purl":"pkg:npm/%40cyberismo/data-handler@1.2.0"},{"type":"library","name":"redux","version":"5.0.1","purl":"pkg:npm/redux@5.0.1"},{"type":"library","name":"immer","version":"11.1.8","purl":"pkg:npm/immer@11.1.8"},{"type":"library","name":"redux-thunk","version":"3.1.0","purl":"pkg:npm/redux-thunk@3.1.0"},{"type":"library","name":"@reduxjs/toolkit","version":"2.12.0","purl":"pkg:npm/%40reduxjs/toolkit@2.12.0"},{"type":"library","name":"@lezer/common","version":"1.5.2","purl":"pkg:npm/%40lezer/common@1.5.2"},{"type":"library","name":"@lezer/highlight","version":"1.2.3","purl":"pkg:npm/%40lezer/highlight@1.2.3"},{"type":"library","name":"@marijn/find-cluster-break","version":"1.0.3","purl":"pkg:npm/%40marijn/find-cluster-break@1.0.3"},{"type":"library","name":"@codemirror/state","version":"6.7.6","purl":"pkg:npm/%40codemirror/state@6.7.6"},{"type":"library","name":"style-mod","version":"4.1.3","purl":"pkg:npm/style-mod@4.1.3"},{"type":"library","name":"w3c-keyname","version":"2.2.8","purl":"pkg:npm/w3c-keyname@2.2.8"},{"type":"library","name":"crelt","version":"1.0.7","purl":"pkg:npm/crelt@1.0.7"},{"type":"library","name":"@codemirror/view","version":"6.43.13","purl":"pkg:npm/%40codemirror/view@6.43.13"},{"type":"library","name":"@codemirror/language","version":"6.12.4","purl":"pkg:npm/%40codemirror/language@6.12.4"},{"type":"library","name":"@uiw/codemirror-themes","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-themes@4.25.12"},{"type":"library","name":"@uiw/codemirror-theme-vscode","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-theme-vscode@4.25.12"},{"type":"library","name":"@uiw/codemirror-theme-github","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-theme-github@4.25.12"},{"type":"library","name":"redux-persist","version":"6.0.0","purl":"pkg:npm/redux-persist@6.0.0"},{"type":"library","name":"@mui/material","version":"9.4.0","purl":"pkg:npm/%40mui/material@9.4.0"},{"type":"library","name":"react-redux","version":"9.3.0","purl":"pkg:npm/react-redux@9.3.0"},{"type":"library","name":"i18next","version":"26.4.2","purl":"pkg:npm/i18next@26.4.2"},{"type":"library","name":"html-parse-stringify","version":"4.0.1","purl":"pkg:npm/html-parse-stringify@4.0.1"},{"type":"library","name":"react-i18next","version":"17.0.15","purl":"pkg:npm/react-i18next@17.0.15"},{"type":"library","name":"@mui/icons-material","version":"9.4.0","purl":"pkg:npm/%40mui/icons-material@9.4.0"},{"type":"library","name":"@asciidoctor/core","version":"4.1.1","purl":"pkg:npm/%40asciidoctor/core@4.1.1"},{"type":"library","name":"date-fns","version":"4.4.0","purl":"pkg:npm/date-fns@4.4.0"},{"type":"library","name":"react-arborist","version":"3.16.0","purl":"pkg:npm/react-arborist@3.16.0"},{"type":"library","name":"memoize-one","version":"5.2.1","purl":"pkg:npm/memoize-one@5.2.1"},{"type":"library","name":"react-window","version":"1.8.11","purl":"pkg:npm/react-window@1.8.11"},{"type":"library","name":"react-dnd","version":"14.0.5","purl":"pkg:npm/react-dnd@14.0.5"},{"type":"library","name":"dnd-core","version":"14.0.1","purl":"pkg:npm/dnd-core@14.0.1"},{"type":"library","name":"@react-dnd/invariant","version":"2.0.0","purl":"pkg:npm/%40react-dnd/invariant@2.0.0"},{"type":"library","name":"@react-dnd/asap","version":"4.0.1","purl":"pkg:npm/%40react-dnd/asap@4.0.1"},{"type":"library","name":"@react-dnd/shallowequal","version":"2.0.0","purl":"pkg:npm/%40react-dnd/shallowequal@2.0.0"},{"type":"library","name":"fast-deep-equal","version":"3.1.3","purl":"pkg:npm/fast-deep-equal@3.1.3"},{"type":"library","name":"react-dnd-html5-backend","version":"14.1.0","purl":"pkg:npm/react-dnd-html5-backend@14.1.0"},{"type":"library","name":"semver","version":"7.8.5","purl":"pkg:npm/semver@7.8.5"},{"type":"library","name":"react-resizable-panels","version":"4.14.2","purl":"pkg:npm/react-resizable-panels@4.14.2"},{"type":"library","name":"node-html-parser","version":"9.0.4","purl":"pkg:npm/node-html-parser@9.0.4"},{"type":"library","name":"html-dom-parser","version":"8.0.2","purl":"pkg:npm/html-dom-parser@8.0.2"},{"type":"library","name":"react-property","version":"2.0.2","purl":"pkg:npm/react-property@2.0.2"},{"type":"library","name":"inline-style-parser","version":"0.2.9","purl":"pkg:npm/inline-style-parser@0.2.9"},{"type":"library","name":"style-to-object","version":"2.0.2","purl":"pkg:npm/style-to-object@2.0.2"},{"type":"library","name":"style-to-js","version":"2.0.2","purl":"pkg:npm/style-to-js@2.0.2"},{"type":"library","name":"html-react-parser","version":"6.1.8","purl":"pkg:npm/html-react-parser@6.1.8"},{"type":"library","name":"domelementtype","version":"3.0.0","purl":"pkg:npm/domelementtype@3.0.0"},{"type":"library","name":"domhandler","version":"6.0.1","purl":"pkg:npm/domhandler@6.0.1"},{"type":"library","name":"d3-array","version":"3.2.4","purl":"pkg:npm/d3-array@3.2.4"},{"type":"library","name":"internmap","version":"2.0.3","purl":"pkg:npm/internmap@2.0.3"},{"type":"library","name":"d3-color","version":"3.1.0","purl":"pkg:npm/d3-color@3.1.0"},{"type":"library","name":"d3-interpolate","version":"3.0.1","purl":"pkg:npm/d3-interpolate@3.0.1"},{"type":"library","name":"d3-timer","version":"3.0.1","purl":"pkg:npm/d3-timer@3.0.1"},{"type":"library","name":"d3-ease","version":"3.0.1","purl":"pkg:npm/d3-ease@3.0.1"},{"type":"library","name":"robust-predicates","version":"3.0.3","purl":"pkg:npm/robust-predicates@3.0.3"},{"type":"library","name":"delaunator","version":"5.1.0","purl":"pkg:npm/delaunator@5.1.0"},{"type":"library","name":"d3-delaunay","version":"6.0.4","purl":"pkg:npm/d3-delaunay@6.0.4"},{"type":"library","name":"d3-dsv","version":"3.0.1","purl":"pkg:npm/d3-dsv@3.0.1"},{"type":"library","name":"d3-force","version":"3.0.0","purl":"pkg:npm/d3-force@3.0.0"},{"type":"library","name":"d3-quadtree","version":"3.0.1","purl":"pkg:npm/d3-quadtree@3.0.1"},{"type":"library","name":"d3-geo","version":"3.1.1","purl":"pkg:npm/d3-geo@3.1.1"},{"type":"library","name":"d3-hierarchy","version":"3.1.2","purl":"pkg:npm/d3-hierarchy@3.1.2"},{"type":"library","name":"d3-scale","version":"4.0.2","purl":"pkg:npm/d3-scale@4.0.2"},{"type":"library","name":"d3-time","version":"3.1.0","purl":"pkg:npm/d3-time@3.1.0"},{"type":"library","name":"d3-time-format","version":"4.1.0","purl":"pkg:npm/d3-time-format@4.1.0"},{"type":"library","name":"d3-scale-chromatic","version":"3.1.0","purl":"pkg:npm/d3-scale-chromatic@3.1.0"},{"type":"library","name":"d3-shape","version":"3.2.0","purl":"pkg:npm/d3-shape@3.2.0"},{"type":"library","name":"mermaid","version":"11.17.2","purl":"pkg:npm/mermaid@11.17.2"},{"type":"library","name":"es-toolkit","version":"1.52.0","purl":"pkg:npm/es-toolkit@1.52.0"},{"type":"library","name":"json-stringify-pretty-compact","version":"4.0.0","purl":"pkg:npm/json-stringify-pretty-compact@4.0.0"},{"type":"library","name":"vega-util","version":"2.1.3","purl":"pkg:npm/vega-util@2.1.3"},{"type":"library","name":"topojson-client","version":"3.1.0","purl":"pkg:npm/topojson-client@3.1.0"},{"type":"library","name":"vega-time","version":"3.3.0","purl":"pkg:npm/vega-time@3.3.0"},{"type":"library","name":"vega-format","version":"2.1.3","purl":"pkg:npm/vega-format@2.1.3"},{"type":"library","name":"vega-loader","version":"5.1.3","purl":"pkg:npm/vega-loader@5.1.3"},{"type":"library","name":"vega-dataflow","version":"6.1.3","purl":"pkg:npm/vega-dataflow@6.1.3"},{"type":"library","name":"vega-statistics","version":"2.0.0","purl":"pkg:npm/vega-statistics@2.0.0"},{"type":"library","name":"vega-transforms","version":"5.2.2","purl":"pkg:npm/vega-transforms@5.2.2"},{"type":"library","name":"vega-canvas","version":"2.0.0","purl":"pkg:npm/vega-canvas@2.0.0"},{"type":"library","name":"vega-scale","version":"8.1.3","purl":"pkg:npm/vega-scale@8.1.3"},{"type":"library","name":"vega-scenegraph","version":"5.3.0","purl":"pkg:npm/vega-scenegraph@5.3.0"},{"type":"library","name":"vega-view-transforms","version":"5.2.2","purl":"pkg:npm/vega-view-transforms@5.2.2"},{"type":"library","name":"vega-encode","version":"5.2.2","purl":"pkg:npm/vega-encode@5.2.2"},{"type":"library","name":"d3-geo-projection","version":"4.0.0","purl":"pkg:npm/d3-geo-projection@4.0.0"},{"type":"library","name":"vega-projection","version":"2.1.3","purl":"pkg:npm/vega-projection@2.1.3"},{"type":"library","name":"vega-geo","version":"5.1.3","purl":"pkg:npm/vega-geo@5.1.3"},{"type":"library","name":"vega-force","version":"5.1.3","purl":"pkg:npm/vega-force@5.1.3"},{"type":"library","name":"vega-hierarchy","version":"5.1.3","purl":"pkg:npm/vega-hierarchy@5.1.3"},{"type":"library","name":"vega-label","version":"2.1.3","purl":"pkg:npm/vega-label@2.1.3"},{"type":"library","name":"vega-regression","version":"2.1.3","purl":"pkg:npm/vega-regression@2.1.3"},{"type":"library","name":"vega-voronoi","version":"5.1.3","purl":"pkg:npm/vega-voronoi@5.1.3"},{"type":"library","name":"vega-wordcloud","version":"5.1.3","purl":"pkg:npm/vega-wordcloud@5.1.3"},{"type":"library","name":"vega-crossfilter","version":"5.1.3","purl":"pkg:npm/vega-crossfilter@5.1.3"},{"type":"library","name":"vega-expression","version":"6.2.2","purl":"pkg:npm/vega-expression@6.2.2"},{"type":"library","name":"vega-selections","version":"6.1.5","purl":"pkg:npm/vega-selections@6.1.5"},{"type":"library","name":"vega-functions","version":"6.2.0","purl":"pkg:npm/vega-functions@6.2.0"},{"type":"library","name":"vega-runtime","version":"7.1.3","purl":"pkg:npm/vega-runtime@7.1.3"},{"type":"library","name":"vega-view","version":"6.2.0","purl":"pkg:npm/vega-view@6.2.0"},{"type":"library","name":"vega-event-selector","version":"4.0.0","purl":"pkg:npm/vega-event-selector@4.0.0"},{"type":"library","name":"vega-parser","version":"7.1.3","purl":"pkg:npm/vega-parser@7.1.3"},{"type":"library","name":"vega","version":"6.4.0","purl":"pkg:npm/vega@6.4.0"},{"type":"library","name":"vega-interpreter","version":"2.3.1","purl":"pkg:npm/vega-interpreter@2.3.1"},{"type":"library","name":"vega-lite","version":"6.4.3","purl":"pkg:npm/vega-lite@6.4.3"},{"type":"library","name":"vega-schema-url-parser","version":"3.0.2","purl":"pkg:npm/vega-schema-url-parser@3.0.2"},{"type":"library","name":"vega-themes","version":"3.0.0","purl":"pkg:npm/vega-themes@3.0.0"},{"type":"library","name":"vega-tooltip","version":"1.0.0","purl":"pkg:npm/vega-tooltip@1.0.0"},{"type":"library","name":"vega-embed","version":"7.1.0","purl":"pkg:npm/vega-embed@7.1.0"},{"type":"library","name":"react-vega","version":"8.0.0","purl":"pkg:npm/react-vega@8.0.0"},{"type":"library","name":"@codemirror/commands","version":"6.11.1","purl":"pkg:npm/%40codemirror/commands@6.11.1"},{"type":"library","name":"@codemirror/search","version":"6.7.0","purl":"pkg:npm/%40codemirror/search@6.7.0"},{"type":"library","name":"@codemirror/autocomplete","version":"6.20.2","purl":"pkg:npm/%40codemirror/autocomplete@6.20.2"},{"type":"library","name":"@codemirror/lint","version":"6.9.6","purl":"pkg:npm/%40codemirror/lint@6.9.6"},{"type":"library","name":"@uiw/codemirror-extensions-basic-setup","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-extensions-basic-setup@4.25.12"},{"type":"library","name":"@codemirror/theme-one-dark","version":"6.1.3","purl":"pkg:npm/%40codemirror/theme-one-dark@6.1.3"},{"type":"library","name":"@uiw/react-codemirror","version":"4.25.12","purl":"pkg:npm/%40uiw/react-codemirror@4.25.12"},{"type":"library","name":"codemirror-asciidoc","version":"2.0.1","purl":"pkg:npm/codemirror-asciidoc@2.0.1"},{"type":"library","name":"marked","version":"18.0.14","purl":"pkg:npm/marked@18.0.14"},{"type":"library","name":"@hookform/resolvers","version":"5.9.1","purl":"pkg:npm/%40hookform/resolvers@5.9.1"},{"type":"library","name":"zod","version":"4.6.5","purl":"pkg:npm/zod@4.6.5"},{"type":"library","name":"khroma","version":"2.1.0","purl":"pkg:npm/khroma@2.1.0"},{"type":"library","name":"@upsetjs/venn.js","version":"2.0.0","purl":"pkg:npm/%40upsetjs/venn.js@2.0.0"},{"type":"library","name":"d3-sankey","version":"0.12.3","purl":"pkg:npm/d3-sankey@0.12.3"},{"type":"library","name":"d3-path","version":"1.0.9","purl":"pkg:npm/d3-path@1.0.9"},{"type":"library","name":"uuid","version":"14.0.2","purl":"pkg:npm/uuid@14.0.2"},{"type":"library","name":"d3-axis","version":"3.0.0","purl":"pkg:npm/d3-axis@3.0.0"},{"type":"library","name":"dayjs","version":"1.11.23","purl":"pkg:npm/dayjs@1.11.23"},{"type":"library","name":"layout-base","version":"1.0.2","purl":"pkg:npm/layout-base@1.0.2"},{"type":"library","name":"cose-base","version":"1.0.3","purl":"pkg:npm/cose-base@1.0.3"},{"type":"library","name":"cytoscape-cose-bilkent","version":"4.1.0","purl":"pkg:npm/cytoscape-cose-bilkent@4.1.0"},{"type":"library","name":"cytoscape-fcose","version":"2.2.0","purl":"pkg:npm/cytoscape-fcose@2.2.0"},{"type":"library","name":"katex","version":"0.16.47","purl":"pkg:npm/katex@0.16.47"},{"type":"library","name":"dompurify","version":"3.4.16","purl":"pkg:npm/dompurify@3.4.16"},{"type":"library","name":"d3-dispatch","version":"3.0.1","purl":"pkg:npm/d3-dispatch@3.0.1"},{"type":"library","name":"d3-selection","version":"3.0.0","purl":"pkg:npm/d3-selection@3.0.0"},{"type":"library","name":"d3-transition","version":"3.0.1","purl":"pkg:npm/d3-transition@3.0.1"},{"type":"library","name":"d3-brush","version":"3.0.0","purl":"pkg:npm/d3-brush@3.0.0"},{"type":"library","name":"d3-zoom","version":"3.0.0","purl":"pkg:npm/d3-zoom@3.0.0"},{"type":"library","name":"d3-format","version":"3.1.2","purl":"pkg:npm/d3-format@3.1.2"},{"type":"library","name":"@braintree/sanitize-url","version":"7.1.2","purl":"pkg:npm/%40braintree/sanitize-url@7.1.2"},{"type":"library","name":"@iconify/utils","version":"3.1.4","purl":"pkg:npm/%40iconify/utils@3.1.4"},{"type":"library","name":"fastdom","version":"1.0.12","purl":"pkg:npm/fastdom@1.0.12"},{"type":"library","name":"ts-dedent","version":"2.3.0","purl":"pkg:npm/ts-dedent@2.3.0"},{"type":"library","name":"roughjs","version":"4.6.6","purl":"pkg:npm/roughjs@4.6.6"},{"type":"library","name":"lodash-es","version":"4.18.1","purl":"pkg:npm/lodash-es@4.18.1"},{"type":"library","name":"dagre-d3-es","version":"7.0.14","purl":"pkg:npm/dagre-d3-es@7.0.14"},{"type":"library","name":"@mermaid-js/parser","version":"1.2.1","purl":"pkg:npm/%40mermaid-js/parser@1.2.1"},{"type":"library","name":"cytoscape","version":"3.34.2","purl":"pkg:npm/cytoscape@3.34.2"}]}
|
|
1
|
+
{"bomFormat":"CycloneDX","specVersion":"1.6","components":[{"type":"library","name":"react","version":"19.3.1","purl":"pkg:npm/react@19.3.1"},{"type":"library","name":"scheduler","version":"0.28.0","purl":"pkg:npm/scheduler@0.28.0"},{"type":"library","name":"react-dom","version":"19.3.1","purl":"pkg:npm/react-dom@19.3.1"},{"type":"library","name":"react-router","version":"8.5.1","purl":"pkg:npm/react-router@8.5.1"},{"type":"library","name":"@mui/joy","version":"5.0.0-beta.52","purl":"pkg:npm/%40mui/joy@5.0.0-beta.52"},{"type":"library","name":"@mui/utils","version":"5.17.1","purl":"pkg:npm/%40mui/utils@5.17.1"},{"type":"library","name":"@babel/runtime","version":"7.29.7","purl":"pkg:npm/%40babel/runtime@7.29.7"},{"type":"library","name":"@emotion/sheet","version":"1.4.0","purl":"pkg:npm/%40emotion/sheet@1.4.0"},{"type":"library","name":"stylis","version":"4.2.0","purl":"pkg:npm/stylis@4.2.0"},{"type":"library","name":"@emotion/memoize","version":"0.9.0","purl":"pkg:npm/%40emotion/memoize@0.9.0"},{"type":"library","name":"@emotion/cache","version":"11.14.0","purl":"pkg:npm/%40emotion/cache@11.14.0"},{"type":"library","name":"react-is","version":"16.13.1","purl":"pkg:npm/react-is@16.13.1"},{"type":"library","name":"hoist-non-react-statics","version":"3.3.2","purl":"pkg:npm/hoist-non-react-statics@3.3.2"},{"type":"library","name":"@emotion/utils","version":"1.4.2","purl":"pkg:npm/%40emotion/utils@1.4.2"},{"type":"library","name":"@emotion/hash","version":"0.9.2","purl":"pkg:npm/%40emotion/hash@0.9.2"},{"type":"library","name":"@emotion/unitless","version":"0.10.0","purl":"pkg:npm/%40emotion/unitless@0.10.0"},{"type":"library","name":"@emotion/serialize","version":"1.3.3","purl":"pkg:npm/%40emotion/serialize@1.3.3"},{"type":"library","name":"@emotion/use-insertion-effect-with-fallbacks","version":"1.2.0","purl":"pkg:npm/%40emotion/use-insertion-effect-with-fallbacks@1.2.0"},{"type":"library","name":"@emotion/react","version":"11.14.0","purl":"pkg:npm/%40emotion/react@11.14.0"},{"type":"library","name":"@emotion/is-prop-valid","version":"1.4.0","purl":"pkg:npm/%40emotion/is-prop-valid@1.4.0"},{"type":"library","name":"@emotion/styled","version":"11.14.1","purl":"pkg:npm/%40emotion/styled@11.14.1"},{"type":"library","name":"@mui/styled-engine","version":"5.18.0","purl":"pkg:npm/%40mui/styled-engine@5.18.0"},{"type":"library","name":"@mui/system","version":"5.18.0","purl":"pkg:npm/%40mui/system@5.18.0"},{"type":"library","name":"clsx","version":"2.1.1","purl":"pkg:npm/clsx@2.1.1"},{"type":"library","name":"@mui/private-theming","version":"5.17.1","purl":"pkg:npm/%40mui/private-theming@5.17.1"},{"type":"library","name":"@mui/base","version":"5.0.0-beta.40-1","purl":"pkg:npm/%40mui/base@5.0.0-beta.40-1"},{"type":"library","name":"@popperjs/core","version":"2.11.8","purl":"pkg:npm/%40popperjs/core@2.11.8"},{"type":"library","name":"use-sync-external-store","version":"1.6.0","purl":"pkg:npm/use-sync-external-store@1.6.0"},{"type":"library","name":"dequal","version":"2.0.3","purl":"pkg:npm/dequal@2.0.3"},{"type":"library","name":"swr","version":"2.5.1","purl":"pkg:npm/swr@2.5.1"},{"type":"library","name":"react-hook-form","version":"7.91.0","purl":"pkg:npm/react-hook-form@7.91.0"},{"type":"library","name":"@cyberismo/model","version":"1.2.0","purl":"pkg:npm/%40cyberismo/model@1.2.0"},{"type":"library","name":"redux","version":"5.0.1","purl":"pkg:npm/redux@5.0.1"},{"type":"library","name":"immer","version":"11.1.8","purl":"pkg:npm/immer@11.1.8"},{"type":"library","name":"redux-thunk","version":"3.1.0","purl":"pkg:npm/redux-thunk@3.1.0"},{"type":"library","name":"@reduxjs/toolkit","version":"2.13.0","purl":"pkg:npm/%40reduxjs/toolkit@2.13.0"},{"type":"library","name":"@lezer/common","version":"1.5.2","purl":"pkg:npm/%40lezer/common@1.5.2"},{"type":"library","name":"@lezer/highlight","version":"1.2.3","purl":"pkg:npm/%40lezer/highlight@1.2.3"},{"type":"library","name":"@marijn/find-cluster-break","version":"1.0.3","purl":"pkg:npm/%40marijn/find-cluster-break@1.0.3"},{"type":"library","name":"@codemirror/state","version":"6.7.6","purl":"pkg:npm/%40codemirror/state@6.7.6"},{"type":"library","name":"style-mod","version":"4.1.3","purl":"pkg:npm/style-mod@4.1.3"},{"type":"library","name":"w3c-keyname","version":"2.2.8","purl":"pkg:npm/w3c-keyname@2.2.8"},{"type":"library","name":"crelt","version":"1.0.7","purl":"pkg:npm/crelt@1.0.7"},{"type":"library","name":"@codemirror/view","version":"6.43.15","purl":"pkg:npm/%40codemirror/view@6.43.15"},{"type":"library","name":"@codemirror/streamparser","version":"6.0.0","purl":"pkg:npm/%40codemirror/streamparser@6.0.0"},{"type":"library","name":"@codemirror/language","version":"6.13.1","purl":"pkg:npm/%40codemirror/language@6.13.1"},{"type":"library","name":"@uiw/codemirror-themes","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-themes@4.25.12"},{"type":"library","name":"@uiw/codemirror-theme-vscode","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-theme-vscode@4.25.12"},{"type":"library","name":"@uiw/codemirror-theme-github","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-theme-github@4.25.12"},{"type":"library","name":"redux-persist","version":"6.0.0","purl":"pkg:npm/redux-persist@6.0.0"},{"type":"library","name":"@mui/material","version":"9.5.0","purl":"pkg:npm/%40mui/material@9.5.0"},{"type":"library","name":"react-redux","version":"9.3.1","purl":"pkg:npm/react-redux@9.3.1"},{"type":"library","name":"i18next","version":"26.5.12","purl":"pkg:npm/i18next@26.5.12"},{"type":"library","name":"html-parse-stringify","version":"4.0.1","purl":"pkg:npm/html-parse-stringify@4.0.1"},{"type":"library","name":"react-i18next","version":"17.1.9","purl":"pkg:npm/react-i18next@17.1.9"},{"type":"library","name":"@mui/icons-material","version":"9.5.0","purl":"pkg:npm/%40mui/icons-material@9.5.0"},{"type":"library","name":"@asciidoctor/core","version":"4.1.1","purl":"pkg:npm/%40asciidoctor/core@4.1.1"},{"type":"library","name":"date-fns","version":"4.4.0","purl":"pkg:npm/date-fns@4.4.0"},{"type":"library","name":"react-dnd","version":"16.0.1","purl":"pkg:npm/react-dnd@16.0.1"},{"type":"library","name":"@react-dnd/invariant","version":"4.0.2","purl":"pkg:npm/%40react-dnd/invariant@4.0.2"},{"type":"library","name":"dnd-core","version":"16.0.1","purl":"pkg:npm/dnd-core@16.0.1"},{"type":"library","name":"@react-dnd/asap","version":"5.0.2","purl":"pkg:npm/%40react-dnd/asap@5.0.2"},{"type":"library","name":"fast-deep-equal","version":"3.1.3","purl":"pkg:npm/fast-deep-equal@3.1.3"},{"type":"library","name":"@react-dnd/shallowequal","version":"4.0.2","purl":"pkg:npm/%40react-dnd/shallowequal@4.0.2"},{"type":"library","name":"react-arborist","version":"4.0.1","purl":"pkg:npm/react-arborist@4.0.1"},{"type":"library","name":"memoize-one","version":"5.2.1","purl":"pkg:npm/memoize-one@5.2.1"},{"type":"library","name":"react-window","version":"1.8.11","purl":"pkg:npm/react-window@1.8.11"},{"type":"library","name":"react-dnd-html5-backend","version":"16.0.1","purl":"pkg:npm/react-dnd-html5-backend@16.0.1"},{"type":"library","name":"semver","version":"7.8.5","purl":"pkg:npm/semver@7.8.5"},{"type":"library","name":"react-resizable-panels","version":"4.15.2","purl":"pkg:npm/react-resizable-panels@4.15.2"},{"type":"library","name":"node-html-parser","version":"9.0.6","purl":"pkg:npm/node-html-parser@9.0.6"},{"type":"library","name":"html-dom-parser","version":"8.0.2","purl":"pkg:npm/html-dom-parser@8.0.2"},{"type":"library","name":"react-property","version":"2.0.2","purl":"pkg:npm/react-property@2.0.2"},{"type":"library","name":"inline-style-parser","version":"0.2.9","purl":"pkg:npm/inline-style-parser@0.2.9"},{"type":"library","name":"style-to-object","version":"2.0.2","purl":"pkg:npm/style-to-object@2.0.2"},{"type":"library","name":"style-to-js","version":"2.0.2","purl":"pkg:npm/style-to-js@2.0.2"},{"type":"library","name":"html-react-parser","version":"6.1.9","purl":"pkg:npm/html-react-parser@6.1.9"},{"type":"library","name":"domelementtype","version":"3.0.0","purl":"pkg:npm/domelementtype@3.0.0"},{"type":"library","name":"domhandler","version":"6.0.1","purl":"pkg:npm/domhandler@6.0.1"},{"type":"library","name":"d3-array","version":"3.2.4","purl":"pkg:npm/d3-array@3.2.4"},{"type":"library","name":"internmap","version":"2.0.3","purl":"pkg:npm/internmap@2.0.3"},{"type":"library","name":"d3-color","version":"3.1.0","purl":"pkg:npm/d3-color@3.1.0"},{"type":"library","name":"d3-interpolate","version":"3.0.1","purl":"pkg:npm/d3-interpolate@3.0.1"},{"type":"library","name":"d3-timer","version":"3.0.1","purl":"pkg:npm/d3-timer@3.0.1"},{"type":"library","name":"d3-ease","version":"3.0.1","purl":"pkg:npm/d3-ease@3.0.1"},{"type":"library","name":"robust-predicates","version":"3.0.3","purl":"pkg:npm/robust-predicates@3.0.3"},{"type":"library","name":"delaunator","version":"5.1.0","purl":"pkg:npm/delaunator@5.1.0"},{"type":"library","name":"d3-delaunay","version":"6.0.4","purl":"pkg:npm/d3-delaunay@6.0.4"},{"type":"library","name":"d3-dsv","version":"3.0.1","purl":"pkg:npm/d3-dsv@3.0.1"},{"type":"library","name":"d3-force","version":"3.0.0","purl":"pkg:npm/d3-force@3.0.0"},{"type":"library","name":"d3-quadtree","version":"3.0.1","purl":"pkg:npm/d3-quadtree@3.0.1"},{"type":"library","name":"d3-geo","version":"3.1.1","purl":"pkg:npm/d3-geo@3.1.1"},{"type":"library","name":"d3-hierarchy","version":"3.1.2","purl":"pkg:npm/d3-hierarchy@3.1.2"},{"type":"library","name":"d3-scale","version":"4.0.2","purl":"pkg:npm/d3-scale@4.0.2"},{"type":"library","name":"d3-time","version":"3.1.0","purl":"pkg:npm/d3-time@3.1.0"},{"type":"library","name":"d3-time-format","version":"4.1.0","purl":"pkg:npm/d3-time-format@4.1.0"},{"type":"library","name":"d3-scale-chromatic","version":"3.1.0","purl":"pkg:npm/d3-scale-chromatic@3.1.0"},{"type":"library","name":"d3-shape","version":"3.2.0","purl":"pkg:npm/d3-shape@3.2.0"},{"type":"library","name":"mermaid","version":"12.2.0","purl":"pkg:npm/mermaid@12.2.0"},{"type":"library","name":"es-toolkit","version":"1.52.0","purl":"pkg:npm/es-toolkit@1.52.0"},{"type":"library","name":"json-stringify-pretty-compact","version":"4.0.0","purl":"pkg:npm/json-stringify-pretty-compact@4.0.0"},{"type":"library","name":"vega-util","version":"2.1.3","purl":"pkg:npm/vega-util@2.1.3"},{"type":"library","name":"topojson-client","version":"3.1.0","purl":"pkg:npm/topojson-client@3.1.0"},{"type":"library","name":"vega-time","version":"3.3.0","purl":"pkg:npm/vega-time@3.3.0"},{"type":"library","name":"vega-format","version":"2.1.3","purl":"pkg:npm/vega-format@2.1.3"},{"type":"library","name":"vega-loader","version":"5.1.3","purl":"pkg:npm/vega-loader@5.1.3"},{"type":"library","name":"vega-dataflow","version":"6.1.3","purl":"pkg:npm/vega-dataflow@6.1.3"},{"type":"library","name":"vega-statistics","version":"2.0.0","purl":"pkg:npm/vega-statistics@2.0.0"},{"type":"library","name":"vega-transforms","version":"5.2.2","purl":"pkg:npm/vega-transforms@5.2.2"},{"type":"library","name":"vega-canvas","version":"2.0.0","purl":"pkg:npm/vega-canvas@2.0.0"},{"type":"library","name":"vega-scale","version":"8.1.3","purl":"pkg:npm/vega-scale@8.1.3"},{"type":"library","name":"vega-scenegraph","version":"5.3.0","purl":"pkg:npm/vega-scenegraph@5.3.0"},{"type":"library","name":"vega-view-transforms","version":"5.2.2","purl":"pkg:npm/vega-view-transforms@5.2.2"},{"type":"library","name":"vega-encode","version":"5.2.2","purl":"pkg:npm/vega-encode@5.2.2"},{"type":"library","name":"d3-geo-projection","version":"4.0.0","purl":"pkg:npm/d3-geo-projection@4.0.0"},{"type":"library","name":"vega-projection","version":"2.1.3","purl":"pkg:npm/vega-projection@2.1.3"},{"type":"library","name":"vega-geo","version":"5.1.3","purl":"pkg:npm/vega-geo@5.1.3"},{"type":"library","name":"vega-force","version":"5.1.3","purl":"pkg:npm/vega-force@5.1.3"},{"type":"library","name":"vega-hierarchy","version":"5.1.3","purl":"pkg:npm/vega-hierarchy@5.1.3"},{"type":"library","name":"vega-label","version":"2.1.3","purl":"pkg:npm/vega-label@2.1.3"},{"type":"library","name":"vega-regression","version":"2.1.3","purl":"pkg:npm/vega-regression@2.1.3"},{"type":"library","name":"vega-voronoi","version":"5.1.3","purl":"pkg:npm/vega-voronoi@5.1.3"},{"type":"library","name":"vega-wordcloud","version":"5.1.3","purl":"pkg:npm/vega-wordcloud@5.1.3"},{"type":"library","name":"vega-crossfilter","version":"5.1.3","purl":"pkg:npm/vega-crossfilter@5.1.3"},{"type":"library","name":"vega-expression","version":"6.2.2","purl":"pkg:npm/vega-expression@6.2.2"},{"type":"library","name":"vega-selections","version":"6.1.5","purl":"pkg:npm/vega-selections@6.1.5"},{"type":"library","name":"vega-functions","version":"6.2.0","purl":"pkg:npm/vega-functions@6.2.0"},{"type":"library","name":"vega-runtime","version":"7.1.3","purl":"pkg:npm/vega-runtime@7.1.3"},{"type":"library","name":"vega-view","version":"6.2.0","purl":"pkg:npm/vega-view@6.2.0"},{"type":"library","name":"vega-event-selector","version":"4.0.0","purl":"pkg:npm/vega-event-selector@4.0.0"},{"type":"library","name":"vega-parser","version":"7.1.3","purl":"pkg:npm/vega-parser@7.1.3"},{"type":"library","name":"vega","version":"6.4.0","purl":"pkg:npm/vega@6.4.0"},{"type":"library","name":"vega-interpreter","version":"2.3.1","purl":"pkg:npm/vega-interpreter@2.3.1"},{"type":"library","name":"vega-lite","version":"6.5.0","purl":"pkg:npm/vega-lite@6.5.0"},{"type":"library","name":"vega-schema-url-parser","version":"3.0.2","purl":"pkg:npm/vega-schema-url-parser@3.0.2"},{"type":"library","name":"vega-themes","version":"3.0.0","purl":"pkg:npm/vega-themes@3.0.0"},{"type":"library","name":"vega-tooltip","version":"1.0.0","purl":"pkg:npm/vega-tooltip@1.0.0"},{"type":"library","name":"vega-embed","version":"7.1.0","purl":"pkg:npm/vega-embed@7.1.0"},{"type":"library","name":"react-vega","version":"8.0.0","purl":"pkg:npm/react-vega@8.0.0"},{"type":"library","name":"@codemirror/commands","version":"6.11.1","purl":"pkg:npm/%40codemirror/commands@6.11.1"},{"type":"library","name":"@codemirror/search","version":"6.7.0","purl":"pkg:npm/%40codemirror/search@6.7.0"},{"type":"library","name":"@codemirror/autocomplete","version":"6.20.2","purl":"pkg:npm/%40codemirror/autocomplete@6.20.2"},{"type":"library","name":"@codemirror/lint","version":"6.9.6","purl":"pkg:npm/%40codemirror/lint@6.9.6"},{"type":"library","name":"@uiw/codemirror-extensions-basic-setup","version":"4.25.12","purl":"pkg:npm/%40uiw/codemirror-extensions-basic-setup@4.25.12"},{"type":"library","name":"@codemirror/theme-one-dark","version":"6.1.3","purl":"pkg:npm/%40codemirror/theme-one-dark@6.1.3"},{"type":"library","name":"@uiw/react-codemirror","version":"4.25.12","purl":"pkg:npm/%40uiw/react-codemirror@4.25.12"},{"type":"library","name":"codemirror-asciidoc","version":"2.0.1","purl":"pkg:npm/codemirror-asciidoc@2.0.1"},{"type":"library","name":"marked","version":"18.1.2","purl":"pkg:npm/marked@18.1.2"},{"type":"library","name":"@hookform/resolvers","version":"6.0.2","purl":"pkg:npm/%40hookform/resolvers@6.0.2"},{"type":"library","name":"zod","version":"4.6.7","purl":"pkg:npm/zod@4.6.7"},{"type":"library","name":"khroma","version":"2.1.0","purl":"pkg:npm/khroma@2.1.0"},{"type":"library","name":"@upsetjs/venn.js","version":"2.0.0","purl":"pkg:npm/%40upsetjs/venn.js@2.0.0"},{"type":"library","name":"@chevrotain/utils","version":"13.2.0","purl":"pkg:npm/%40chevrotain/utils@13.2.0"},{"type":"library","name":"@chevrotain/gast","version":"13.2.0","purl":"pkg:npm/%40chevrotain/gast@13.2.0"},{"type":"library","name":"chevrotain","version":"13.2.0","purl":"pkg:npm/chevrotain@13.2.0"},{"type":"library","name":"@chevrotain/regexp-to-ast","version":"13.2.0","purl":"pkg:npm/%40chevrotain/regexp-to-ast@13.2.0"},{"type":"library","name":"d3-sankey","version":"0.12.3","purl":"pkg:npm/d3-sankey@0.12.3"},{"type":"library","name":"d3-path","version":"1.0.9","purl":"pkg:npm/d3-path@1.0.9"},{"type":"library","name":"uuid","version":"14.0.2","purl":"pkg:npm/uuid@14.0.2"},{"type":"library","name":"d3-axis","version":"3.0.0","purl":"pkg:npm/d3-axis@3.0.0"},{"type":"library","name":"dayjs","version":"1.11.23","purl":"pkg:npm/dayjs@1.11.23"},{"type":"library","name":"layout-base","version":"1.0.2","purl":"pkg:npm/layout-base@1.0.2"},{"type":"library","name":"cose-base","version":"1.0.3","purl":"pkg:npm/cose-base@1.0.3"},{"type":"library","name":"cytoscape-cose-bilkent","version":"4.1.0","purl":"pkg:npm/cytoscape-cose-bilkent@4.1.0"},{"type":"library","name":"lodash-es","version":"4.18.1","purl":"pkg:npm/lodash-es@4.18.1"},{"type":"library","name":"dagre-d3-es","version":"7.0.14","purl":"pkg:npm/dagre-d3-es@7.0.14"},{"type":"library","name":"elkjs","version":"0.9.3","purl":"pkg:npm/elkjs@0.9.3"},{"type":"library","name":"cytoscape-fcose","version":"2.2.0","purl":"pkg:npm/cytoscape-fcose@2.2.0"},{"type":"library","name":"katex","version":"0.18.10","purl":"pkg:npm/katex@0.18.10"},{"type":"library","name":"dompurify","version":"3.4.17","purl":"pkg:npm/dompurify@3.4.17"},{"type":"library","name":"d3-dispatch","version":"3.0.1","purl":"pkg:npm/d3-dispatch@3.0.1"},{"type":"library","name":"d3-selection","version":"3.0.0","purl":"pkg:npm/d3-selection@3.0.0"},{"type":"library","name":"d3-transition","version":"3.0.1","purl":"pkg:npm/d3-transition@3.0.1"},{"type":"library","name":"d3-brush","version":"3.0.0","purl":"pkg:npm/d3-brush@3.0.0"},{"type":"library","name":"d3-zoom","version":"3.0.0","purl":"pkg:npm/d3-zoom@3.0.0"},{"type":"library","name":"d3-format","version":"3.1.2","purl":"pkg:npm/d3-format@3.1.2"},{"type":"library","name":"@braintree/sanitize-url","version":"7.1.2","purl":"pkg:npm/%40braintree/sanitize-url@7.1.2"},{"type":"library","name":"@iconify/utils","version":"3.1.4","purl":"pkg:npm/%40iconify/utils@3.1.4"},{"type":"library","name":"ts-dedent","version":"2.3.0","purl":"pkg:npm/ts-dedent@2.3.0"},{"type":"library","name":"roughjs","version":"4.6.6","purl":"pkg:npm/roughjs@4.6.6"},{"type":"library","name":"@mermaid-js/parser","version":"2.0.1","purl":"pkg:npm/%40mermaid-js/parser@2.0.1"},{"type":"library","name":"cytoscape","version":"3.34.2","purl":"pkg:npm/cytoscape@3.34.2"}]}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
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
|
-
*/
|
|
13
1
|
import type { Context } from 'hono';
|
|
14
2
|
export interface ResourceFileContentResponse {
|
|
15
3
|
content: string;
|
package/dist/types.js
CHANGED
|
@@ -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
|
* User roles - checked directly in middleware
|
|
15
5
|
* Role hierarchy: Admin > Editor > Reader
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,yCAAyC;AAiBzC;;;;;;;;GAQG;AACH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,mCAAuB,CAAA;AACzB,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
|
+
import { serve, type ServerType } from '@hono/node-server';
|
|
1
2
|
/**
|
|
2
3
|
* The relative path to the static frontend directory.
|
|
3
4
|
*/
|
|
4
5
|
export declare const staticFrontendDirRelative: string;
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @param
|
|
9
|
-
* @
|
|
7
|
+
* Starts the server, moving to the next port while the current one is taken.
|
|
8
|
+
* The bind itself is the check, so a port can't be taken between check and use.
|
|
9
|
+
* @param fetch - Request handler.
|
|
10
|
+
* @param port - The first port to try.
|
|
11
|
+
* @param host - The host to bind.
|
|
12
|
+
* @param maxPort - The last port to try; defaults to `port` (no retry).
|
|
13
|
+
* @returns The listening server and the port it bound.
|
|
10
14
|
*/
|
|
11
|
-
export declare function
|
|
15
|
+
export declare function listen(fetch: Parameters<typeof serve>[0]['fetch'], port: number, host: string, maxPort?: number): Promise<{
|
|
16
|
+
server: ServerType;
|
|
17
|
+
port: number;
|
|
18
|
+
}>;
|
|
12
19
|
export declare function gitOptionsFromEnv(): {
|
|
13
20
|
autocommit: boolean;
|
|
14
21
|
autopush: boolean;
|
package/dist/utils.js
CHANGED
|
@@ -1,57 +1,32 @@
|
|
|
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
|
import path from 'node:path';
|
|
14
|
-
import {
|
|
4
|
+
import { serve } from '@hono/node-server';
|
|
15
5
|
/**
|
|
16
6
|
* The relative path to the static frontend directory.
|
|
17
7
|
*/
|
|
18
8
|
export const staticFrontendDirRelative = path.relative(process.cwd(), path.resolve(import.meta.dirname, 'public'));
|
|
19
9
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @param
|
|
23
|
-
* @
|
|
10
|
+
* Starts the server, moving to the next port while the current one is taken.
|
|
11
|
+
* The bind itself is the check, so a port can't be taken between check and use.
|
|
12
|
+
* @param fetch - Request handler.
|
|
13
|
+
* @param port - The first port to try.
|
|
14
|
+
* @param host - The host to bind.
|
|
15
|
+
* @param maxPort - The last port to try; defaults to `port` (no retry).
|
|
16
|
+
* @returns The listening server and the port it bound.
|
|
24
17
|
*/
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (err instanceof Error && err.message.includes('EADDRINUSE')) {
|
|
33
|
-
console.log(`Port ${i} is already in use, trying next port...`);
|
|
18
|
+
export function listen(fetch, port, host, maxPort = port) {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
const server = serve({ fetch, port, hostname: host }, (info) => resolve({ server, port: info.port }));
|
|
21
|
+
server.once('error', (err) => {
|
|
22
|
+
if (err.code === 'EADDRINUSE' && port < maxPort) {
|
|
23
|
+
console.log(`Port ${port} is already in use, trying next port...`);
|
|
24
|
+
resolve(listen(fetch, port + 1, host, maxPort));
|
|
34
25
|
}
|
|
35
26
|
else {
|
|
36
|
-
|
|
27
|
+
reject(err);
|
|
37
28
|
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
throw new Error('Failed to find free port');
|
|
41
|
-
}
|
|
42
|
-
function testPort(port) {
|
|
43
|
-
return new Promise((resolve, reject) => {
|
|
44
|
-
const server = createServer();
|
|
45
|
-
server.listen(port, () => {
|
|
46
|
-
server.close();
|
|
47
|
-
resolve(true);
|
|
48
|
-
});
|
|
49
|
-
server.on('error', (err) => {
|
|
50
|
-
reject(err);
|
|
51
29
|
});
|
|
52
|
-
setTimeout(() => {
|
|
53
|
-
reject(new Error('Timed out waiting for port to be free'));
|
|
54
|
-
}, 2000);
|
|
55
30
|
});
|
|
56
31
|
}
|
|
57
32
|
export function gitOptionsFromEnv() {
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,yCAAyC;AAEzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAmB,MAAM,mBAAmB,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CACpD,OAAO,CAAC,GAAG,EAAE,EACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC5C,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CACpB,KAA2C,EAC3C,IAAY,EACZ,IAAY,EACZ,UAAkB,IAAI;IAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CACrC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAClD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,yCAAyC,CAAC,CAAC;gBACnE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB;IAI/B,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM;QACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;KACpD,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyberismo/backend",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Express backend for Cyberismo",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"keywords": [],
|
|
7
7
|
"author": "sami.merila@cyberismo.com",
|
|
8
|
-
"license": "AGPL-3.0",
|
|
8
|
+
"license": "AGPL-3.0-only",
|
|
9
9
|
"homepage": "https://github.com/CyberismoCom/cyberismo",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
@@ -16,19 +16,20 @@
|
|
|
16
16
|
"node": ">=22"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@cyberismo/assets": "1.
|
|
20
|
-
"@cyberismo/data-handler": "1.
|
|
21
|
-
"@cyberismo/mcp": "1.
|
|
22
|
-
"@
|
|
23
|
-
"@hono/
|
|
19
|
+
"@cyberismo/assets": "1.3.0",
|
|
20
|
+
"@cyberismo/data-handler": "1.3.0",
|
|
21
|
+
"@cyberismo/mcp": "1.3.0",
|
|
22
|
+
"@cyberismo/model": "1.2.0",
|
|
23
|
+
"@hono/mcp": "^0.3.5",
|
|
24
|
+
"@hono/node-server": "^2.1.5",
|
|
24
25
|
"@hono/zod-validator": "^0.9.1",
|
|
25
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
26
|
+
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
26
27
|
"@types/mime-types": "^3.0.1",
|
|
27
|
-
"dotenv": "^18.0.
|
|
28
|
-
"hono": "^4.13.
|
|
29
|
-
"jose": "^6.2.
|
|
28
|
+
"dotenv": "^18.0.9",
|
|
29
|
+
"hono": "^4.13.14",
|
|
30
|
+
"jose": "^6.2.14",
|
|
30
31
|
"mime-types": "^3.0.2",
|
|
31
|
-
"zod": "^4.6.
|
|
32
|
+
"zod": "^4.6.7"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"@cyberismo/app": "0.0.2"
|
package/src/app.ts
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
3
|
+
|
|
13
4
|
import { Hono, type MiddlewareHandler } from 'hono';
|
|
14
|
-
import {
|
|
5
|
+
import { staticFrontendDirRelative } from './utils.js';
|
|
15
6
|
import { serveStatic } from '@hono/node-server/serve-static';
|
|
16
|
-
import {
|
|
7
|
+
import { attachProjectDirectory } from './middleware/commandManager.js';
|
|
8
|
+
import { errorResponse } from './common/errors.js';
|
|
17
9
|
import calculationsRouter from './domain/calculations/index.js';
|
|
18
10
|
import cardsRouter from './domain/cards/index.js';
|
|
19
11
|
import cardTypesRouter from './domain/cardTypes/index.js';
|
|
@@ -45,8 +37,8 @@ import { createAuthRouter } from './domain/auth/index.js';
|
|
|
45
37
|
import { createAuthMiddleware } from './middleware/auth.js';
|
|
46
38
|
import type { AuthProvider } from './auth/types.js';
|
|
47
39
|
import { MockAuthProvider } from './auth/mock.js';
|
|
48
|
-
import type {
|
|
49
|
-
import {
|
|
40
|
+
import type { ProjectDirectory } from '@cyberismo/data-handler';
|
|
41
|
+
import { EventsByProject } from './domain/events/events-by-project.js';
|
|
50
42
|
import { createProjectsRouter } from './domain/projects/index.js';
|
|
51
43
|
import { simpleMcpAuthRouter } from '@hono/mcp';
|
|
52
44
|
|
|
@@ -82,16 +74,20 @@ function createProjectScopedRoutes(
|
|
|
82
74
|
/**
|
|
83
75
|
* Create the Hono app for the backend
|
|
84
76
|
* @param authProvider - Authentication provider
|
|
85
|
-
* @param
|
|
77
|
+
* @param directory - Directory the projects are opened from
|
|
78
|
+
* @param exportPrefixes - The projects a static export serves; set only in
|
|
79
|
+
* export mode
|
|
86
80
|
*/
|
|
87
81
|
export function createApp(
|
|
88
82
|
authProvider: AuthProvider,
|
|
89
|
-
|
|
83
|
+
directory: ProjectDirectory,
|
|
90
84
|
opts?: TreeOptions,
|
|
91
|
-
|
|
85
|
+
exportPrefixes?: string[],
|
|
92
86
|
multiProjectRoot?: string,
|
|
93
87
|
) {
|
|
94
88
|
const app = new Hono<{ Variables: AppVars }>();
|
|
89
|
+
const exportMode = exportPrefixes !== undefined;
|
|
90
|
+
const events = new EventsByProject(directory);
|
|
95
91
|
|
|
96
92
|
// Public — no auth middleware (MCP clients call this before they have a token)
|
|
97
93
|
// RFC 9728 resource metadata & OAuth authorization server metadata via @hono/mcp
|
|
@@ -130,12 +126,12 @@ export function createApp(
|
|
|
130
126
|
app.use('/mcp', createAuthMiddleware(authProvider));
|
|
131
127
|
app.use('/mcp/*', createAuthMiddleware(authProvider));
|
|
132
128
|
|
|
133
|
-
// Global routes (no project
|
|
129
|
+
// Global routes (no project handle needed)
|
|
134
130
|
app.route('/api/auth', createAuthRouter());
|
|
135
|
-
app.route('/api/projects', createProjectsRouter(
|
|
131
|
+
app.route('/api/projects', createProjectsRouter(directory, multiProjectRoot));
|
|
136
132
|
|
|
137
133
|
// Test-mode reset endpoint: wipes the project dir, restores it from the
|
|
138
|
-
// golden snapshot, and
|
|
134
|
+
// golden snapshot, and reopens its projects in place. Used by the
|
|
139
135
|
// Playwright e2e harness to restore the project between spec files.
|
|
140
136
|
// Gated by NODE_ENV so it never ships in production.
|
|
141
137
|
if (process.env.NODE_ENV === 'test') {
|
|
@@ -175,7 +171,7 @@ export function createApp(
|
|
|
175
171
|
retryDelay: 100,
|
|
176
172
|
});
|
|
177
173
|
await fs.cp(goldenPath, resolvedProject, { recursive: true });
|
|
178
|
-
const projects = await
|
|
174
|
+
const projects = await directory.list();
|
|
179
175
|
|
|
180
176
|
if (projects.length === 0) {
|
|
181
177
|
return c.json(
|
|
@@ -185,13 +181,10 @@ export function createApp(
|
|
|
185
181
|
500,
|
|
186
182
|
);
|
|
187
183
|
}
|
|
188
|
-
const entries = [];
|
|
189
184
|
for (const project of projects) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
entries.push({ prefix: project.prefix, commands });
|
|
185
|
+
await directory.replace(project.prefix);
|
|
186
|
+
events.drop(project.prefix);
|
|
193
187
|
}
|
|
194
|
-
await registry.replace(entries);
|
|
195
188
|
return c.body(null, 204);
|
|
196
189
|
});
|
|
197
190
|
}
|
|
@@ -209,23 +202,25 @@ export function createApp(
|
|
|
209
202
|
}
|
|
210
203
|
});
|
|
211
204
|
|
|
212
|
-
if (
|
|
205
|
+
if (exportPrefixes) {
|
|
213
206
|
// Export mode: mount at each concrete prefix so SSG sees
|
|
214
207
|
// static routes instead of dynamic :prefix patterns it would skip.
|
|
215
|
-
for (const
|
|
208
|
+
for (const prefix of exportPrefixes) {
|
|
216
209
|
const scoped = createProjectScopedRoutes(
|
|
217
|
-
|
|
210
|
+
attachProjectDirectory(directory, events, prefix),
|
|
218
211
|
);
|
|
219
212
|
app.route(`/api/projects/${prefix}`, scoped);
|
|
220
213
|
}
|
|
221
214
|
} else {
|
|
222
215
|
// Normal mode: dynamic :prefix param
|
|
223
|
-
const scoped = createProjectScopedRoutes(
|
|
216
|
+
const scoped = createProjectScopedRoutes(
|
|
217
|
+
attachProjectDirectory(directory, events),
|
|
218
|
+
);
|
|
224
219
|
app.route('/api/projects/:prefix', scoped);
|
|
225
220
|
}
|
|
226
221
|
|
|
227
222
|
// MCP endpoint for AI assistant integration
|
|
228
|
-
app.route('/mcp', createMcpRouter(writableProjects(
|
|
223
|
+
app.route('/mcp', createMcpRouter(writableProjects(directory)));
|
|
229
224
|
|
|
230
225
|
app.use(
|
|
231
226
|
'*',
|
|
@@ -248,18 +243,13 @@ export function createApp(
|
|
|
248
243
|
return c.html(file.toString());
|
|
249
244
|
});
|
|
250
245
|
// Error handling
|
|
246
|
+
// Only server faults are logged; client errors are answered, not logged.
|
|
251
247
|
app.onError((err, c) => {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
248
|
+
const { status, body } = errorResponse(err);
|
|
249
|
+
if (status >= 500 && !isSSGContext(c) && process.env.NODE_ENV !== 'test') {
|
|
250
|
+
console.error(err.stack);
|
|
256
251
|
}
|
|
257
|
-
return c.json(
|
|
258
|
-
{
|
|
259
|
-
error: err.message || 'Internal Server Error',
|
|
260
|
-
},
|
|
261
|
-
500,
|
|
262
|
-
);
|
|
252
|
+
return c.json(body, status);
|
|
263
253
|
});
|
|
264
254
|
|
|
265
255
|
return app;
|
package/src/auth/index.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
*/
|
|
1
|
+
// SPDX-FileCopyrightText: Cyberismo Ltd and contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
13
3
|
|
|
14
4
|
export type { AuthProvider } from './types.js';
|
|
15
5
|
export { MockAuthProvider } from './mock.js';
|
package/src/auth/keycloak.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
*/
|
|
1
|
+
// SPDX-FileCopyrightText: Cyberismo Ltd and contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
13
3
|
|
|
14
4
|
import { createRemoteJWKSet, jwtVerify } from 'jose';
|
|
15
5
|
import type { JWTPayload } from 'jose';
|
package/src/auth/mock.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
*/
|
|
1
|
+
// SPDX-FileCopyrightText: Cyberismo Ltd and contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
13
3
|
|
|
14
4
|
import type { Context, MiddlewareHandler } from 'hono';
|
|
15
5
|
import { setCookie } from 'hono/cookie';
|
package/src/auth/types.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
*/
|
|
1
|
+
// SPDX-FileCopyrightText: Cyberismo Ltd and contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
13
3
|
|
|
14
4
|
import type { UserInfo } from '../types.js';
|
|
15
5
|
|