diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 466881258..e0e936890 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@astrojs/node': specifier: ^9.2.0 - version: 9.2.0(astro@5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.39.0)(tsx@4.19.3)(typescript@5.8.3)) + version: 9.2.0(astro@5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.19.3)(typescript@5.8.3)) '@astrojs/react': specifier: ^4.2.4 version: 4.2.4(@types/node@18.19.86)(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(jiti@2.4.2)(lightningcss@1.29.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tsx@4.19.3) @@ -49,7 +49,7 @@ importers: version: 19.1.2(@types/react@19.1.2) astro: specifier: ^5.7.4 - version: 5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.39.0)(tsx@4.19.3)(typescript@5.8.3) + version: 5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.19.3)(typescript@5.8.3) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -148,7 +148,7 @@ importers: version: 0.34.1 shiki: specifier: ^3.2.2 - version: 3.2.2 + version: 3.3.0 slugify: specifier: ^1.6.6 version: 1.6.6 @@ -173,7 +173,7 @@ importers: devDependencies: '@ai-sdk/google': specifier: ^1.2.12 - version: 1.2.12(zod@3.24.2) + version: 1.2.12(zod@3.24.3) '@playwright/test': specifier: ^1.52.0 version: 1.52.0 @@ -209,7 +209,7 @@ importers: version: 5.0.5 ai: specifier: ^4.3.9 - version: 4.3.9(react@19.1.0)(zod@3.24.2) + version: 4.3.9(react@19.1.0)(zod@3.24.3) csv-parser: specifier: ^3.2.0 version: 3.2.0 @@ -224,7 +224,7 @@ importers: version: 14.1.0 openai: specifier: ^4.95.1 - version: 4.95.1(zod@3.24.2) + version: 4.95.1(zod@3.24.3) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -241,25 +241,25 @@ importers: packages/editor: dependencies: '@xyflow/react': - specifier: ^12.6.0 + specifier: ^12.4.2 version: 12.6.0(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) clsx: specifier: ^2.1.1 version: 2.1.1 lucide-react: - specifier: ^0.503.0 - version: 0.503.0(react@19.1.0) + specifier: ^0.474.0 + version: 0.474.0(react@19.1.0) nanoid: - specifier: ^5.1.5 + specifier: ^5.0.9 version: 5.1.5 react: - specifier: ^19.1.0 + specifier: ^19.0.0 version: 19.1.0 remark-parse: specifier: ^11.0.0 version: 11.0.0 tailwind-merge: - specifier: ^3.2.0 + specifier: ^3.0.1 version: 3.2.0 unified: specifier: ^11.0.5 @@ -269,25 +269,25 @@ importers: version: 5.0.3(@types/react@19.1.2)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) devDependencies: '@tailwindcss/postcss': - specifier: ^4.1.4 + specifier: ^4.0.3 version: 4.1.4 '@types/react': - specifier: ^19.1.2 + specifier: ^19.0.8 version: 19.1.2 postcss: - specifier: ^8.5.3 + specifier: ^8.5.1 version: 8.5.3 postcss-replace: specifier: ^2.0.1 version: 2.0.1(postcss@8.5.3) tailwindcss: - specifier: ^4.1.4 + specifier: ^4.0.3 version: 4.1.4 tsup: - specifier: ^8.4.0 + specifier: ^8.3.6 version: 8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3) typescript: - specifier: ^5.8.3 + specifier: ^5.7.3 version: 5.8.3 packages: @@ -452,14 +452,14 @@ packages: '@capsizecss/unpack@2.4.0': resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} - '@emnapi/core@1.4.0': - resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==} + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} - '@emnapi/runtime@1.4.0': - resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==} + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} '@esbuild/aix-ppc64@0.25.2': resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} @@ -948,8 +948,8 @@ packages: resolution: {integrity: sha512-CvTC3XL5/BzHaVkJOZy31xOJLNSY3rBuUIQixaE/LwEQNSUdaxWa9gUyUkC9lUekkUp26CzaLLj2w7l7bxB1ag==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@0.2.8': - resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==} + '@napi-rs/wasm-runtime@0.2.9': + resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1067,123 +1067,123 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.39.0': - resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.39.0': - resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.39.0': - resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.39.0': - resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.39.0': - resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.39.0': - resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.39.0': - resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.39.0': - resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.39.0': - resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.39.0': - resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.39.0': - resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': - resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.39.0': - resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.39.0': - resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.39.0': - resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.39.0': - resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.39.0': - resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.39.0': - resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.39.0': - resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.39.0': - resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} cpu: [x64] os: [win32] - '@shikijs/core@3.2.2': - resolution: {integrity: sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==} + '@shikijs/core@3.3.0': + resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==} - '@shikijs/engine-javascript@3.2.2': - resolution: {integrity: sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==} + '@shikijs/engine-javascript@3.3.0': + resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==} - '@shikijs/engine-oniguruma@3.2.2': - resolution: {integrity: sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==} + '@shikijs/engine-oniguruma@3.3.0': + resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==} - '@shikijs/langs@3.2.2': - resolution: {integrity: sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==} + '@shikijs/langs@3.3.0': + resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==} - '@shikijs/themes@3.2.2': - resolution: {integrity: sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==} + '@shikijs/themes@3.3.0': + resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==} - '@shikijs/types@3.2.2': - resolution: {integrity: sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==} + '@shikijs/types@3.3.0': + resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1432,8 +1432,8 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-react@4.3.4': - resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + '@vitejs/plugin-react@4.4.1': + resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 @@ -1593,8 +1593,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001712: - resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} + caniuse-lite@1.0.30001715: + resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1816,8 +1816,8 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} deterministic-object-hash@2.0.2: @@ -1880,8 +1880,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.132: - resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} + electron-to-chromium@1.5.140: + resolution: {integrity: sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==} email-addresses@5.0.0: resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} @@ -1910,6 +1910,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1992,8 +1996,8 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2437,6 +2441,11 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.474.0: + resolution: {integrity: sha512-CmghgHkh0OJNmxGKWc0qfPJCYHASPMVSyGY8fj3xgk4v84ItqDg64JNKFZn5hC6E0vHi6gxnbCgwhyVB09wQtA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lucide-react@0.503.0: resolution: {integrity: sha512-HGGkdlPWQ0vTF8jJ5TdIqhQXZi6uh3LnNgfZ8MHiuxFfX3RZeA79r2MW2tHAZKlAVfoNE8esm3p+O6VkIvpj6w==} peerDependencies: @@ -2723,11 +2732,11 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - oniguruma-parser@0.5.4: - resolution: {integrity: sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==} + oniguruma-parser@0.11.2: + resolution: {integrity: sha512-F7Ld4oDZJCI5/wCZ8AOffQbqjSzIRpKH7I/iuSs1SkhZeCj0wS6PMZ4W6VA16TWHrAo0Y9bBKEJOe7tvwcTXnw==} - oniguruma-to-es@4.1.0: - resolution: {integrity: sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==} + oniguruma-to-es@4.2.0: + resolution: {integrity: sha512-MDPs6KSOLS0tKQ7joqg44dRIRZUyotfTy0r+7oEEs6VwWWP0+E2PPDYWMFN0aqOjRyWHBYq7RfKw9GQk2S2z5g==} openai@4.95.1: resolution: {integrity: sha512-IqJy+ymeW+k/Wq+2YVN3693OQMMcODRtHEYOlz263MdUwnN/Dwdl9c2EXSxLLtGEHkSHAfvzpDMHI5MaWJKXjQ==} @@ -2771,8 +2780,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.1.0: - resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} + package-manager-detector@1.2.0: + resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==} pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -2786,8 +2795,8 @@ packages: parse-srcset@1.0.2: resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -2956,11 +2965,11 @@ packages: prosemirror-collab@1.3.1: resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} - prosemirror-commands@1.7.0: - resolution: {integrity: sha512-6toodS4R/Aah5pdsrIwnTYPEjW70SlO5a66oo5Kk+CIrgJz3ukOoS+FYDGqvQlAX5PxoGWDX1oD++tn5X3pyRA==} + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} - prosemirror-dropcursor@1.8.1: - resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} + prosemirror-dropcursor@1.8.2: + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} prosemirror-gapcursor@1.3.2: resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} @@ -2977,11 +2986,11 @@ packages: prosemirror-markdown@1.13.2: resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} - prosemirror-menu@1.2.4: - resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} + prosemirror-menu@1.2.5: + resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==} - prosemirror-model@1.25.0: - resolution: {integrity: sha512-/8XUmxWf0pkj2BmtqZHYJipTBMHIdVjuvFzMvEoxrtyGNmfvdhBiRwYt/eFwy2wA9DtBW3RLqvZnjurEkHaFCw==} + prosemirror-model@1.25.1: + resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==} prosemirror-schema-basic@1.2.4: resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} @@ -2992,8 +3001,8 @@ packages: prosemirror-state@1.4.3: resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} - prosemirror-tables@1.6.4: - resolution: {integrity: sha512-TkDY3Gw52gRFRfRn2f4wJv5WOgAOXLJA2CQJYIJ5+kdFbfj3acR4JUW6LX2e1hiEBiUwvEhzH5a3cZ5YSztpIA==} + prosemirror-tables@1.7.1: + resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==} prosemirror-trailing-node@3.0.0: resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} @@ -3002,11 +3011,11 @@ packages: prosemirror-state: ^1.4.2 prosemirror-view: ^1.33.8 - prosemirror-transform@1.10.3: - resolution: {integrity: sha512-Nhh/+1kZGRINbEHmVu39oynhcap4hWTs/BlU7NnxWj3+l0qi8I1mu67v6mMdEe/ltD8hHvU4FV6PHiCw2VSpMw==} + prosemirror-transform@1.10.4: + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==} - prosemirror-view@1.39.1: - resolution: {integrity: sha512-GhLxH1xwnqa5VjhJ29LfcQITNDp+f1jzmMPXQfGW9oNrF0lfjPzKvV5y/bjIQkyKpwCX3Fp+GA4dBpMMk8g+ZQ==} + prosemirror-view@1.39.2: + resolution: {integrity: sha512-BmOkml0QWNob165gyUxXi5K5CVUgVPpqMEAAml/qzgKn9boLUWVPzQ6LtzXw8Cn1GtRQX4ELumPxqtLTDaAKtg==} punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} @@ -3045,8 +3054,8 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} react-resizable-panels@2.1.8: @@ -3147,8 +3156,8 @@ packages: roadmap-renderer@1.0.7: resolution: {integrity: sha512-qn06f17ChBD6JiCTivZPMdHro5U9w7dJymApid9e0yUBjPisVRPPNxs2N6sPcom74qic4+YDIJ/vUnkspJ2MdA==} - rollup@4.39.0: - resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3222,8 +3231,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@3.2.2: - resolution: {integrity: sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==} + shiki@3.3.0: + resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -3248,8 +3257,8 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} - smol-toml@1.3.1: - resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} + smol-toml@1.3.3: + resolution: {integrity: sha512-KMVLNWu490KlNfD0lbfDBUktJIEaZRBj1eeK0SMfdpO/rfyARIzlnPVI1Ge4l0vtSJmQUAiGKxMyLGrCT38iyA==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -3347,8 +3356,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} tiptap-markdown@0.8.10: @@ -3430,8 +3439,8 @@ packages: tween-functions@1.2.0: resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} - type-fest@4.39.1: - resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} + type-fest@4.40.0: + resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} engines: {node: '>=16'} typescript@5.8.3: @@ -3442,8 +3451,8 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} @@ -3715,8 +3724,8 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - yocto-spinner@0.2.1: - resolution: {integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==} + yocto-spinner@0.2.2: + resolution: {integrity: sha512-21rPcM3e4vCpOXThiFRByX8amU5By1R0wNS8Oex+DP3YgC8xdU0vEJ/K8cbPLiIJVosSSysgcFof6s6MSD5/Vw==} engines: {node: '>=18.19'} yoctocolors@2.1.1: @@ -3737,8 +3746,8 @@ packages: typescript: ^4.9.4 || ^5.0.2 zod: ^3 - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + zod@3.24.3: + resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} zustand@4.5.6: resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} @@ -3778,39 +3787,39 @@ packages: snapshots: - '@ai-sdk/google@1.2.12(zod@3.24.2)': + '@ai-sdk/google@1.2.12(zod@3.24.3)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.24.2) - zod: 3.24.2 + '@ai-sdk/provider-utils': 2.2.7(zod@3.24.3) + zod: 3.24.3 - '@ai-sdk/provider-utils@2.2.7(zod@3.24.2)': + '@ai-sdk/provider-utils@2.2.7(zod@3.24.3)': dependencies: '@ai-sdk/provider': 1.1.3 nanoid: 3.3.11 secure-json-parse: 2.7.0 - zod: 3.24.2 + zod: 3.24.3 '@ai-sdk/provider@1.1.3': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.2.9(react@19.1.0)(zod@3.24.2)': + '@ai-sdk/react@1.2.9(react@19.1.0)(zod@3.24.3)': dependencies: - '@ai-sdk/provider-utils': 2.2.7(zod@3.24.2) - '@ai-sdk/ui-utils': 1.2.8(zod@3.24.2) + '@ai-sdk/provider-utils': 2.2.7(zod@3.24.3) + '@ai-sdk/ui-utils': 1.2.8(zod@3.24.3) react: 19.1.0 swr: 2.3.3(react@19.1.0) throttleit: 2.1.0 optionalDependencies: - zod: 3.24.2 + zod: 3.24.3 - '@ai-sdk/ui-utils@1.2.8(zod@3.24.2)': + '@ai-sdk/ui-utils@1.2.8(zod@3.24.3)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.24.2) - zod: 3.24.2 - zod-to-json-schema: 3.24.5(zod@3.24.2) + '@ai-sdk/provider-utils': 2.2.7(zod@3.24.3) + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) '@alloc/quick-lru@5.2.0': {} @@ -3839,8 +3848,8 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.2.2 - smol-toml: 1.3.1 + shiki: 3.3.0 + smol-toml: 1.3.3 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -3849,10 +3858,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@9.2.0(astro@5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.39.0)(tsx@4.19.3)(typescript@5.8.3))': + '@astrojs/node@9.2.0(astro@5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.19.3)(typescript@5.8.3))': dependencies: '@astrojs/internal-helpers': 0.6.1 - astro: 5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.39.0)(tsx@4.19.3)(typescript@5.8.3) + astro: 5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.19.3)(typescript@5.8.3) send: 1.2.0 server-destroy: 1.0.1 transitivePeerDependencies: @@ -3866,7 +3875,7 @@ snapshots: dependencies: '@types/react': 19.1.2 '@types/react-dom': 19.1.2(@types/react@19.1.2) - '@vitejs/plugin-react': 4.3.4(vite@6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)) + '@vitejs/plugin-react': 4.4.1(vite@6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) ultrahtml: 1.6.0 @@ -3889,7 +3898,7 @@ snapshots: dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 - zod: 3.24.2 + zod: 3.24.3 '@astrojs/telemetry@3.2.0': dependencies: @@ -4025,18 +4034,18 @@ snapshots: transitivePeerDependencies: - encoding - '@emnapi/core@1.4.0': + '@emnapi/core@1.4.3': dependencies: - '@emnapi/wasi-threads': 1.0.1 + '@emnapi/wasi-threads': 1.0.2 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.0': + '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.1': + '@emnapi/wasi-threads@1.0.2': dependencies: tslib: 2.8.1 optional: true @@ -4264,12 +4273,12 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.0 + '@emnapi/runtime': 1.4.3 optional: true '@img/sharp-wasm32@0.34.1': dependencies: - '@emnapi/runtime': 1.4.0 + '@emnapi/runtime': 1.4.3 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -4348,7 +4357,7 @@ snapshots: '@napi-rs/image-wasm32-wasi@1.9.2': dependencies: - '@napi-rs/wasm-runtime': 0.2.8 + '@napi-rs/wasm-runtime': 0.2.9 optional: true '@napi-rs/image-win32-ia32-msvc@1.9.2': @@ -4372,10 +4381,10 @@ snapshots: '@napi-rs/image-win32-ia32-msvc': 1.9.2 '@napi-rs/image-win32-x64-msvc': 1.9.2 - '@napi-rs/wasm-runtime@0.2.8': + '@napi-rs/wasm-runtime@0.2.9': dependencies: - '@emnapi/core': 1.4.0 - '@emnapi/runtime': 1.4.0 + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 '@tybys/wasm-util': 0.9.0 optional: true @@ -4455,101 +4464,101 @@ snapshots: '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 '@resvg/resvg-js-win32-x64-msvc': 2.6.2 - '@rollup/pluginutils@5.1.4(rollup@4.39.0)': + '@rollup/pluginutils@5.1.4(rollup@4.40.0)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.0 - '@rollup/rollup-android-arm-eabi@4.39.0': + '@rollup/rollup-android-arm-eabi@4.40.0': optional: true - '@rollup/rollup-android-arm64@4.39.0': + '@rollup/rollup-android-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-arm64@4.39.0': + '@rollup/rollup-darwin-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-x64@4.39.0': + '@rollup/rollup-darwin-x64@4.40.0': optional: true - '@rollup/rollup-freebsd-arm64@4.39.0': + '@rollup/rollup-freebsd-arm64@4.40.0': optional: true - '@rollup/rollup-freebsd-x64@4.39.0': + '@rollup/rollup-freebsd-x64@4.40.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.39.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.39.0': + '@rollup/rollup-linux-arm64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.39.0': + '@rollup/rollup-linux-arm64-musl@4.40.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.39.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.39.0': + '@rollup/rollup-linux-riscv64-musl@4.40.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.39.0': + '@rollup/rollup-linux-s390x-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.39.0': + '@rollup/rollup-linux-x64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-musl@4.39.0': + '@rollup/rollup-linux-x64-musl@4.40.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.39.0': + '@rollup/rollup-win32-arm64-msvc@4.40.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.39.0': + '@rollup/rollup-win32-ia32-msvc@4.40.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.39.0': + '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true - '@shikijs/core@3.2.2': + '@shikijs/core@3.3.0': dependencies: - '@shikijs/types': 3.2.2 + '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.2.2': + '@shikijs/engine-javascript@3.3.0': dependencies: - '@shikijs/types': 3.2.2 + '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.1.0 + oniguruma-to-es: 4.2.0 - '@shikijs/engine-oniguruma@3.2.2': + '@shikijs/engine-oniguruma@3.3.0': dependencies: - '@shikijs/types': 3.2.2 + '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.2.2': + '@shikijs/langs@3.3.0': dependencies: - '@shikijs/types': 3.2.2 + '@shikijs/types': 3.3.0 - '@shikijs/themes@3.2.2': + '@shikijs/themes@3.3.0': dependencies: - '@shikijs/types': 3.2.2 + '@shikijs/types': 3.3.0 - '@shikijs/types@3.2.2': + '@shikijs/types@3.3.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -4661,22 +4670,22 @@ snapshots: dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 - prosemirror-commands: 1.7.0 - prosemirror-dropcursor: 1.8.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.2 prosemirror-gapcursor: 1.3.2 prosemirror-history: 1.4.1 prosemirror-inputrules: 1.5.0 prosemirror-keymap: 1.2.2 prosemirror-markdown: 1.13.2 - prosemirror-menu: 1.2.4 - prosemirror-model: 1.25.0 + prosemirror-menu: 1.2.5 + prosemirror-model: 1.25.1 prosemirror-schema-basic: 1.2.4 prosemirror-schema-list: 1.5.1 prosemirror-state: 1.4.3 - prosemirror-tables: 1.6.4 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.0)(prosemirror-state@1.4.3)(prosemirror-view@1.39.1) - prosemirror-transform: 1.10.3 - prosemirror-view: 1.39.1 + prosemirror-tables: 1.7.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2) + prosemirror-transform: 1.10.4 + prosemirror-view: 1.39.2 '@tybys/wasm-util@0.9.0': dependencies: @@ -4806,7 +4815,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 18.19.86 + '@types/node': 17.0.45 '@types/turndown@5.0.5': {} @@ -4814,13 +4823,13 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.3.4(vite@6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3))': + '@vitejs/plugin-react@4.4.1(vite@6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 + react-refresh: 0.17.0 vite: 6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3) transitivePeerDependencies: - supports-color @@ -4856,15 +4865,15 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ai@4.3.9(react@19.1.0)(zod@3.24.2): + ai@4.3.9(react@19.1.0)(zod@3.24.3): dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.24.2) - '@ai-sdk/react': 1.2.9(react@19.1.0)(zod@3.24.2) - '@ai-sdk/ui-utils': 1.2.8(zod@3.24.2) + '@ai-sdk/provider-utils': 2.2.7(zod@3.24.3) + '@ai-sdk/react': 1.2.9(react@19.1.0)(zod@3.24.3) + '@ai-sdk/ui-utils': 1.2.8(zod@3.24.3) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 - zod: 3.24.2 + zod: 3.24.3 optionalDependencies: react: 19.1.0 @@ -4903,7 +4912,7 @@ snapshots: array-union@2.1.0: {} - astro@5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.39.0)(tsx@4.19.3)(typescript@5.8.3): + astro@5.7.4(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.19.3)(typescript@5.8.3): dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/internal-helpers': 0.6.1 @@ -4911,7 +4920,7 @@ snapshots: '@astrojs/telemetry': 3.2.0 '@capsizecss/unpack': 2.4.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.0) acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -4942,14 +4951,14 @@ snapshots: neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.0 - package-manager-detector: 1.1.0 + package-manager-detector: 1.2.0 picomatch: 4.0.2 prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.1 - shiki: 3.2.2 + shiki: 3.3.0 tinyexec: 0.3.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 tsconfck: 3.1.5(typescript@5.8.3) ultrahtml: 1.6.0 unifont: 0.2.0 @@ -4960,10 +4969,10 @@ snapshots: vitefu: 1.0.6(vite@6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - yocto-spinner: 0.2.1 - zod: 3.24.2 - zod-to-json-schema: 3.24.5(zod@3.24.2) - zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.24.2) + yocto-spinner: 0.2.2 + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) + zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.24.3) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -5028,7 +5037,7 @@ snapshots: chalk: 5.4.1 cli-boxes: 3.0.0 string-width: 7.2.0 - type-fest: 4.39.1 + type-fest: 4.40.0 widest-line: 5.0.0 wrap-ansi: 9.0.0 @@ -5046,8 +5055,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001712 - electron-to-chromium: 1.5.132 + caniuse-lite: 1.0.30001715 + electron-to-chromium: 1.5.140 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -5067,7 +5076,7 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001712: {} + caniuse-lite@1.0.30001715: {} ccount@2.0.1: {} @@ -5244,7 +5253,7 @@ snapshots: destr@2.0.5: {} - detect-libc@2.0.3: {} + detect-libc@2.0.4: {} deterministic-object-hash@2.0.2: dependencies: @@ -5302,7 +5311,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.132: {} + electron-to-chromium@1.5.140: {} email-addresses@5.0.0: {} @@ -5323,6 +5332,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.0: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -5412,7 +5423,7 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.4.3(picomatch@4.0.2): + fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -5572,7 +5583,7 @@ snapshots: iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 has-symbols@1.1.0: {} @@ -5590,7 +5601,7 @@ snapshots: '@types/hast': 3.0.4 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 - parse5: 7.2.1 + parse5: 7.3.0 vfile: 6.0.3 vfile-message: 4.0.2 @@ -5622,7 +5633,7 @@ snapshots: hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - parse5: 7.2.1 + parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 @@ -5826,7 +5837,7 @@ snapshots: lightningcss@1.29.2: dependencies: - detect-libc: 2.0.3 + detect-libc: 2.0.4 optionalDependencies: lightningcss-darwin-arm64: 1.29.2 lightningcss-darwin-x64: 1.29.2 @@ -5878,6 +5889,10 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-react@0.474.0(react@19.1.0): + dependencies: + react: 19.1.0 + lucide-react@0.503.0(react@19.1.0): dependencies: react: 19.1.0 @@ -6315,7 +6330,7 @@ snapshots: dependencies: destr: 2.0.5 node-fetch-native: 1.6.6 - ufo: 1.5.4 + ufo: 1.6.1 ohash@2.0.11: {} @@ -6323,16 +6338,16 @@ snapshots: dependencies: ee-first: 1.1.1 - oniguruma-parser@0.5.4: {} + oniguruma-parser@0.11.2: {} - oniguruma-to-es@4.1.0: + oniguruma-to-es@4.2.0: dependencies: emoji-regex-xs: 1.0.0 - oniguruma-parser: 0.5.4 + oniguruma-parser: 0.11.2 regex: 6.0.1 regex-recursion: 6.0.2 - openai@4.95.1(zod@3.24.2): + openai@4.95.1(zod@3.24.3): dependencies: '@types/node': 18.19.86 '@types/node-fetch': 2.6.12 @@ -6342,7 +6357,7 @@ snapshots: formdata-node: 4.4.1 node-fetch: 2.7.0 optionalDependencies: - zod: 3.24.2 + zod: 3.24.3 transitivePeerDependencies: - encoding @@ -6371,7 +6386,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.1.0: {} + package-manager-detector@1.2.0: {} pako@0.2.9: {} @@ -6391,9 +6406,9 @@ snapshots: parse-srcset@1.0.2: {} - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.0 path-exists@4.0.0: {} @@ -6486,42 +6501,42 @@ snapshots: prosemirror-changeset@2.2.1: dependencies: - prosemirror-transform: 1.10.3 + prosemirror-transform: 1.10.4 prosemirror-collab@1.3.1: dependencies: prosemirror-state: 1.4.3 - prosemirror-commands@1.7.0: + prosemirror-commands@1.7.1: dependencies: - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 + prosemirror-transform: 1.10.4 - prosemirror-dropcursor@1.8.1: + prosemirror-dropcursor@1.8.2: dependencies: prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 - prosemirror-view: 1.39.1 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.39.2 prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.39.1 + prosemirror-view: 1.39.2 prosemirror-history@1.4.1: dependencies: prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 - prosemirror-view: 1.39.1 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.39.2 rope-sequence: 1.3.4 prosemirror-inputrules@1.5.0: dependencies: prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 + prosemirror-transform: 1.10.4 prosemirror-keymap@1.2.2: dependencies: @@ -6532,60 +6547,60 @@ snapshots: dependencies: '@types/markdown-it': 14.1.2 markdown-it: 14.1.0 - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 - prosemirror-menu@1.2.4: + prosemirror-menu@1.2.5: dependencies: crelt: 1.0.6 - prosemirror-commands: 1.7.0 + prosemirror-commands: 1.7.1 prosemirror-history: 1.4.1 prosemirror-state: 1.4.3 - prosemirror-model@1.25.0: + prosemirror-model@1.25.1: dependencies: orderedmap: 2.1.1 prosemirror-schema-basic@1.2.4: dependencies: - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-schema-list@1.5.1: dependencies: - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 + prosemirror-transform: 1.10.4 prosemirror-state@1.4.3: dependencies: - prosemirror-model: 1.25.0 - prosemirror-transform: 1.10.3 - prosemirror-view: 1.39.1 + prosemirror-model: 1.25.1 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.39.2 - prosemirror-tables@1.6.4: + prosemirror-tables@1.7.1: dependencies: prosemirror-keymap: 1.2.2 - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 - prosemirror-view: 1.39.1 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.39.2 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.0)(prosemirror-state@1.4.3)(prosemirror-view@1.39.1): + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2): dependencies: '@remirror/core-constants': 3.0.0 escape-string-regexp: 4.0.0 - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.39.1 + prosemirror-view: 1.39.2 - prosemirror-transform@1.10.3: + prosemirror-transform@1.10.4: dependencies: - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 - prosemirror-view@1.39.1: + prosemirror-view@1.39.2: dependencies: - prosemirror-model: 1.25.0 + prosemirror-model: 1.25.1 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.3 + prosemirror-transform: 1.10.4 punycode.js@2.3.1: {} @@ -6615,7 +6630,7 @@ snapshots: react-is@16.13.1: {} - react-refresh@0.14.2: {} + react-refresh@0.17.0: {} react-resizable-panels@2.1.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: @@ -6764,30 +6779,30 @@ snapshots: roadmap-renderer@1.0.7: {} - rollup@4.39.0: + rollup@4.40.0: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.39.0 - '@rollup/rollup-android-arm64': 4.39.0 - '@rollup/rollup-darwin-arm64': 4.39.0 - '@rollup/rollup-darwin-x64': 4.39.0 - '@rollup/rollup-freebsd-arm64': 4.39.0 - '@rollup/rollup-freebsd-x64': 4.39.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 - '@rollup/rollup-linux-arm-musleabihf': 4.39.0 - '@rollup/rollup-linux-arm64-gnu': 4.39.0 - '@rollup/rollup-linux-arm64-musl': 4.39.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 - '@rollup/rollup-linux-riscv64-gnu': 4.39.0 - '@rollup/rollup-linux-riscv64-musl': 4.39.0 - '@rollup/rollup-linux-s390x-gnu': 4.39.0 - '@rollup/rollup-linux-x64-gnu': 4.39.0 - '@rollup/rollup-linux-x64-musl': 4.39.0 - '@rollup/rollup-win32-arm64-msvc': 4.39.0 - '@rollup/rollup-win32-ia32-msvc': 4.39.0 - '@rollup/rollup-win32-x64-msvc': 4.39.0 + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 rope-sequence@1.3.4: {} @@ -6867,7 +6882,7 @@ snapshots: sharp@0.33.5: dependencies: color: 4.2.3 - detect-libc: 2.0.3 + detect-libc: 2.0.4 semver: 7.7.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 @@ -6894,7 +6909,7 @@ snapshots: sharp@0.34.1: dependencies: color: 4.2.3 - detect-libc: 2.0.3 + detect-libc: 2.0.4 semver: 7.7.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.1 @@ -6924,14 +6939,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.2.2: + shiki@3.3.0: dependencies: - '@shikijs/core': 3.2.2 - '@shikijs/engine-javascript': 3.2.2 - '@shikijs/engine-oniguruma': 3.2.2 - '@shikijs/langs': 3.2.2 - '@shikijs/themes': 3.2.2 - '@shikijs/types': 3.2.2 + '@shikijs/core': 3.3.0 + '@shikijs/engine-javascript': 3.3.0 + '@shikijs/engine-oniguruma': 3.3.0 + '@shikijs/langs': 3.3.0 + '@shikijs/themes': 3.3.0 + '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -6954,7 +6969,7 @@ snapshots: slugify@1.6.6: {} - smol-toml@1.3.1: {} + smol-toml@1.3.3: {} source-map-js@1.2.1: {} @@ -7049,9 +7064,9 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.12: + tinyglobby@0.2.13: dependencies: - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 tiptap-markdown@0.8.10(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)): @@ -7104,11 +7119,11 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3) resolve-from: 5.0.0 - rollup: 4.39.0 + rollup: 4.40.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 tree-kill: 1.2.2 optionalDependencies: postcss: 8.5.3 @@ -7132,13 +7147,13 @@ snapshots: tween-functions@1.2.0: {} - type-fest@4.39.1: {} + type-fest@4.40.0: {} typescript@5.8.3: {} uc.micro@2.1.0: {} - ufo@1.5.4: {} + ufo@1.6.1: {} ultrahtml@1.6.0: {} @@ -7224,7 +7239,7 @@ snapshots: lru-cache: 10.4.3 node-fetch-native: 1.6.6 ofetch: 1.4.1 - ufo: 1.5.4 + ufo: 1.6.1 update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: @@ -7275,11 +7290,11 @@ snapshots: vite@6.3.2(@types/node@18.19.86)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3): dependencies: esbuild: 0.25.2 - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.39.0 - tinyglobby: 0.2.12 + rollup: 4.40.0 + tinyglobby: 0.2.13 optionalDependencies: '@types/node': 18.19.86 fsevents: 2.3.3 @@ -7348,7 +7363,7 @@ snapshots: yocto-queue@1.2.1: {} - yocto-spinner@0.2.1: + yocto-spinner@0.2.2: dependencies: yoctocolors: 2.1.1 @@ -7356,16 +7371,16 @@ snapshots: yoga-wasm-web@0.3.3: {} - zod-to-json-schema@3.24.5(zod@3.24.2): + zod-to-json-schema@3.24.5(zod@3.24.3): dependencies: - zod: 3.24.2 + zod: 3.24.3 - zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.2): + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.3): dependencies: typescript: 5.8.3 - zod: 3.24.2 + zod: 3.24.3 - zod@3.24.2: {} + zod@3.24.3: {} zustand@4.5.6(@types/react@19.1.2)(react@19.1.0): dependencies: diff --git a/public/pdfs/roadmaps/ai-red-teaming.pdf b/public/pdfs/roadmaps/ai-red-teaming.pdf new file mode 100644 index 000000000..5cb36547f Binary files /dev/null and b/public/pdfs/roadmaps/ai-red-teaming.pdf differ diff --git a/public/roadmaps/ai-red-teaming.png b/public/roadmaps/ai-red-teaming.png new file mode 100644 index 000000000..3da81fa53 Binary files /dev/null and b/public/roadmaps/ai-red-teaming.png differ diff --git a/src/data/roadmaps/ai-red-teaming/ai-red-teaming.json b/src/data/roadmaps/ai-red-teaming/ai-red-teaming.json new file mode 100644 index 000000000..715675343 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/ai-red-teaming.json @@ -0,0 +1,3210 @@ +{ + "nodes": [ + { + "id": "jyFzaSxCTk4-SkVtAqXDV", + "type": "section", + "position": { "x": -611.5708359378116, "y": 1372.8104828019514 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": { + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + }, + "oldId": "H4Y1ce23KsYCYq82ivOV0" + }, + "zIndex": -999, + "width": 255, + "height": 246, + "style": { "width": 150, "height": 100 }, + "measured": { "width": 255, "height": 246 }, + "resizing": false, + "dragging": false, + "focusable": true + }, + { + "id": "H4Y1ce23KsYCYq82ivOV0", + "type": "section", + "position": { "x": -612.0708359378116, "y": 1609.6518935505305 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": { + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 256, + "height": 173, + "style": { "width": 150, "height": 100 }, + "measured": { "width": 256, "height": 173 }, + "resizing": false, + "dragging": false, + "focusable": true + }, + { + "id": "Rtu5ME2bE59I6aTleE5LW", + "type": "section", + "position": { "x": -231.66916540260297, "y": 803.6643439369004 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": { + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 254, + "height": 130, + "style": { "width": 150, "height": 100 }, + "measured": { "width": 254, "height": 130 }, + "resizing": false, + "dragging": false, + "focusable": true + }, + { + "id": "KY9r0pUBM5Ekknhlcmmea", + "type": "section", + "position": { "x": -231.66916540260297, "y": 959.3204930098123 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": { + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 254, + "height": 191, + "style": { "width": 150, "height": 100 }, + "measured": { "width": 254, "height": 191 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "8hmAWdzRHE4qqvBblYrFY", + "type": "horizontal", + "position": { "x": -362.4572811083598, "y": 558.0854351053018 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 174, + "height": 20, + "style": {}, + "measured": { "width": 174, "height": 20 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "t4IWddpRLqlm5vQgE-Cn0", + "type": "section", + "position": { "x": -614.4572811083598, "y": 501.47298193547056 }, + "width": 255, + "height": 164, + "style": { "width": 235, "height": 170 }, + "selected": true, + "data": { + "style": { "backgroundColor": "#ffffff", "borderColor": "#000000" } + }, + "measured": { "width": 255, "height": 164 }, + "focusable": true, + "resizing": false, + "dragging": false, + "selectable": true + }, + { + "id": "Wjwheg_zRNrTZj67PBG5l", + "type": "horizontal", + "position": { "x": 1.330834597397029, "y": 474.84080217184527 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "horizontal node", + "style": { "stroke": "#2B78E4", "strokeWidth": 3.5 } + }, + "zIndex": 999, + "width": 144, + "height": 20, + "style": {}, + "measured": { "width": 144, "height": 20 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "buH0t6fc1m7rIkFM_J-3a", + "type": "section", + "position": { "x": 168.28058268338464, "y": 592.5854351053018 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": { + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 261, + "height": 69, + "style": { "width": 150, "height": 100 }, + "measured": { "width": 261, "height": 69 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "width": 21, + "height": 76, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { "x": -115.16916540260297, "y": -235.7695706291704 }, + "selected": true, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" + }, + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { "x": -114.16916540260297, "y": -227.7695706291704 }, + "dragging": false, + "focusable": true, + "style": { "width": 21, "height": 76 }, + "resizing": false, + "selectable": true, + "measured": { "width": 21, "height": 76 } + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { "x": 109.84147172248669, "y": -241.7695706291704 }, + "selected": true, + "data": { + "label": "Find the detailed version of this roadmap and other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 329, + "height": 138, + "positionAbsolute": { "x": 110.84147172248669, "y": -233.7695706291704 }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { "width": 329, "height": 138 }, + "resizing": false, + "measured": { "width": 329, "height": 138 } + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { "x": 120.34147172248669, "y": -164.7840072114252 }, + "selected": true, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { "fontSize": 17 }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 308, + "height": 49, + "dragging": false, + "style": { "width": 308, "height": 49 }, + "resizing": false, + "positionAbsolute": { "x": 121.34147172248669, "y": -156.7840072114252 }, + "selectable": true, + "focusable": true, + "measured": { "width": 308, "height": 49 } + }, + { + "id": "R9DQNc0AyAQ2HLpP4HOk6", + "type": "subtopic", + "position": { "x": 129.89980850421182, "y": -49.63210941079885 }, + "selected": true, + "data": { + "label": "AI Security Fundamentals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 311, + "height": 49, + "style": { "width": 311, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": -41.63210941079885 }, + "dragging": false, + "selectable": true, + "focusable": true, + "measured": { "width": 311, "height": 49 } + }, + { + "id": "fNTb9y3zs1HPYclAmu_Wv", + "type": "subtopic", + "position": { "x": 129.89980850421182, "y": 3.367890589201153 }, + "selected": true, + "data": { + "label": "Why Red Team AI Systems?", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 311, + "height": 49, + "style": { "width": 311, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 11.367890589201153 }, + "dragging": false, + "selectable": true, + "focusable": true, + "measured": { "width": 311, "height": 49 } + }, + { + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { "x": -225.16916540260297, "y": -159.7695706291704 }, + "selected": true, + "data": { + "label": "AI Red Teaming", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { "x": -151.66916540260297, "y": -151.7695706291704 }, + "focusable": true, + "selectable": true, + "measured": { "width": 241, "height": 68 } + }, + { + "id": "HFJIYcI16OMyM77fAw9af", + "type": "topic", + "position": { "x": -192.66916540260297, "y": 26.367890589201124 }, + "selected": true, + "data": { + "label": "Introduction", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nhUKKWyBH80nyKfGT8ErC" + }, + "zIndex": 999, + "width": 176, + "height": 49, + "style": { "width": 247, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 176, "height": 49 } + }, + { + "id": "1gyuEV519LjN-KpROoVwv", + "type": "subtopic", + "position": { "x": 129.89980850421182, "y": 56.36789058920115 }, + "selected": true, + "data": { + "label": "Ethical Considerations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 311, + "height": 49, + "style": { "width": 311, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 311, "height": 49 } + }, + { + "id": "FcAeu8woDM7N51do6aiBV", + "type": "paragraph", + "position": { "x": -612.9219566015802, "y": -239.7695706291704 }, + "selected": true, + "data": { + "label": "Special thanks to \"Learn Prompting\" for their help in making this roadmap", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + }, + "oldId": "yHmHXymPNWwu8p1vvqD3o" + }, + "zIndex": 999, + "width": 322, + "height": 141, + "positionAbsolute": { "x": -611.9219566015802, "y": -122.7695706291704 }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { "width": 322, "height": 141 }, + "resizing": false, + "measured": { "width": 322, "height": 141 } + }, + { + "id": "5n6N956H6tfwlQ0vqXW7e", + "type": "button", + "position": { "x": -595.4219566015802, "y": -159.7695706291704 }, + "selected": true, + "data": { + "label": "learnprompting.org", + "href": "https://learnprompting.org", + "color": "#000000", + "backgroundColor": "#c4c4c4", + "style": { "fontSize": 17 }, + "oldId": "R_Fs6rdl2XtQ9aLOubMqL", + "borderColor": "#C4C4C4" + }, + "zIndex": 999, + "width": 286, + "height": 49, + "dragging": false, + "style": { "width": 286, "height": 49 }, + "resizing": false, + "positionAbsolute": { "x": -594.4219566015802, "y": -42.7695706291704 }, + "selectable": true, + "focusable": true, + "measured": { "width": 286, "height": 49 } + }, + { + "id": "Irkc9DgBfqSn72WaJqXEt", + "type": "subtopic", + "position": { "x": 129.89980850421182, "y": 109.36789058920115 }, + "selected": true, + "data": { + "label": "Role of Red Teams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 311, + "height": 49, + "style": { "width": 311, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 311, "height": 49 } + }, + { + "id": "EQrDljYCypm5zlzVmXane", + "type": "paragraph", + "position": { "x": -237.66916540260297, "y": 138.36789058920115 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Foundational Knowledge", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "wg_PryJK5Ucr8bZofa4z-" + }, + "zIndex": 999, + "measured": { "width": 266, "height": 55 }, + "dragging": false, + "focusable": true, + "width": 266, + "height": 55, + "resizing": false + }, + { + "id": "USnljlWi_1nOvc-zViBh7", + "type": "paragraph", + "position": { "x": -222.16916540260297, "y": 258.3678905892011 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "AI / ML Fundamentals", + "style": { + "fontSize": 17, + "borderColor": "#000000", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "wg_PryJK5Ucr8bZofa4z-" + }, + "zIndex": 999, + "measured": { "width": 235, "height": 47 }, + "dragging": false, + "focusable": true, + "width": 235, + "height": 47, + "resizing": false + }, + { + "id": "NvOJIv36Utpm7_kOZyr79", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 98.36789058920112 }, + "selected": true, + "data": { + "label": "Supervised Learning", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "887lc3tWCRH-sOHSxWgWJ" + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "ZC0yKsu-CJC-LZKKo2pLD", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 151.36789058920112 }, + "selected": true, + "data": { + "label": "Unsupervised Learning", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "Xqzc4mOKsVzwaUxLGjHya", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 204.36789058920112 }, + "selected": true, + "data": { + "label": "Reinforcement Learning", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "RuKzVhd1nZphCrlW1wZGL", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 257.3678905892011 }, + "selected": true, + "data": { + "label": "Neural Networks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "3XJ-g0KvHP75U18mxCqgw", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 310.3678905892011 }, + "selected": true, + "data": { + "label": "Generative Models", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "8K-wCn2cLc7Vs_V4sC3sE", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 363.3678905892011 }, + "selected": true, + "data": { + "label": "Large Language Models", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "gx4KaFqKgJX9n9_ZGMqlZ", + "type": "subtopic", + "position": { "x": -613.4219566015802, "y": 416.3678905892011 }, + "selected": true, + "data": { + "label": "Prompt Engineering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 255, + "height": 49, + "style": { "width": 277, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 255, "height": 49 } + }, + { + "id": "wg_PryJK5Ucr8bZofa4z-", + "type": "paragraph", + "position": { "x": -222.16916540260297, "y": 310.3678905892011 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Cybsecurity Principles", + "style": { + "fontSize": 17, + "borderColor": "#000000", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + } + }, + "zIndex": 999, + "measured": { "width": 235, "height": 47 }, + "dragging": false, + "focusable": true, + "width": 235, + "height": 47, + "resizing": false + }, + { + "id": "WZkIHZkV2qDYbYF9KBBRi", + "type": "subtopic", + "position": { "x": 131.57804339841982, "y": 201.36789058920112 }, + "selected": true, + "data": { + "label": "Confidentiality, Integrity, Availability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kgDsDlBk8W2aM6LyWpFY8" + }, + "zIndex": 999, + "width": 310, + "height": 49, + "style": { "width": 310, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 310, "height": 49 } + }, + { + "id": "RDOaTBWP3aIJPUp_kcafm", + "type": "subtopic", + "position": { "x": 131.57804339841982, "y": 254.36789058920112 }, + "selected": true, + "data": { + "label": "Threat Modeling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "887lc3tWCRH-sOHSxWgWJ" + }, + "zIndex": 999, + "width": 310, + "height": 49, + "style": { "width": 310, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 310, "height": 49 } + }, + { + "id": "MupRvk_8Io2Hn7yEvU663", + "type": "subtopic", + "position": { "x": 131.57804339841982, "y": 307.3678905892011 }, + "selected": true, + "data": { + "label": "Risk Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "887lc3tWCRH-sOHSxWgWJ" + }, + "zIndex": 999, + "width": 310, + "height": 49, + "style": { "width": 310, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 310, "height": 49 } + }, + { + "id": "887lc3tWCRH-sOHSxWgWJ", + "type": "subtopic", + "position": { "x": 131.57804339841982, "y": 360.3678905892011 }, + "selected": true, + "data": { + "label": "Vulnerability Assessment", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gx4KaFqKgJX9n9_ZGMqlZ" + }, + "zIndex": 999, + "width": 310, + "height": 49, + "style": { "width": 310, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 310, "height": 49 } + }, + { + "id": "Ds8pqn4y9Npo7z6ubunvc", + "type": "subtopic", + "position": { "x": 168.28058268338464, "y": 443.9408538465145 }, + "selected": true, + "data": { + "label": "Jailbreak Techniques", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kgDsDlBk8W2aM6LyWpFY8" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "style": { "width": 226, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 261, "height": 49 } + }, + { + "id": "j7uLLpt8MkZ1rqM7UBPW4", + "type": "subtopic", + "position": { "x": 168.28058268338464, "y": 496.9408538465145 }, + "selected": true, + "data": { + "label": "Safety Filter Bypasses", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kgDsDlBk8W2aM6LyWpFY8" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "style": { "width": 226, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 261, "height": 49 } + }, + { + "id": "XOrAPDRhBvde9R-znEipH", + "type": "subtopic", + "position": { "x": 168.28058268338464, "y": 549.9408538465145 }, + "selected": true, + "data": { + "label": "Prompt Injection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kgDsDlBk8W2aM6LyWpFY8" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "style": { "width": 226, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 261, "height": 49 } + }, + { + "id": "1Xr7mxVekeAHzTL7G4eAZ", + "type": "topic", + "position": { "x": -217.66916540260297, "y": 460.34080217184527 }, + "selected": true, + "data": { + "label": "Prompt Hacking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "uBXrri2bXVsNiM8fIHHOv" + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { "width": 247, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 226, "height": 49 } + }, + { + "id": "5zHow4KZVpfhch5Aabeft", + "type": "subtopic", + "position": { "x": 181.08203978352043, "y": 604.3070564234732 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Direct", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "style": { "width": 208 }, + "measured": { "width": 108, "height": 49 }, + "focusable": true, + "width": 108, + "height": 49, + "dragging": false, + "resizing": false + }, + { + "id": "3_gJRtJSdm2iAfkwmcv0e", + "type": "subtopic", + "position": { "x": 294.3414717224867, "y": 604.3070564234732 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Indirect", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 127, + "height": 49, + "style": { "width": 208 }, + "measured": { "width": 127, "height": 49 }, + "dragging": false, + "focusable": true, + "resizing": false + }, + { + "id": "G1u_Kq4NeUsGX2qnUTuJU", + "type": "subtopic", + "position": { "x": 168.28058268338464, "y": 666 }, + "selected": true, + "data": { + "label": "Countermeasures", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kgDsDlBk8W2aM6LyWpFY8" + }, + "zIndex": 999, + "width": 261, + "height": 49, + "style": { "width": 226, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 261, "height": 49 } + }, + { + "id": "vhBu5x8INTtqvx6vcYAhE", + "type": "topic", + "position": { "x": -231.66916540260297, "y": 764.990589013835 }, + "selected": true, + "data": { + "label": "Code Injection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nhUKKWyBH80nyKfGT8ErC" + }, + "zIndex": 999, + "width": 254, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 254, "height": 49 } + }, + { + "id": "EHWGhqS4g0fKsnF-on4VC", + "type": "vertical", + "position": { "x": 136.57804339841982, "y": 446.4408538465145 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "vertical node", + "style": { "stroke": "#2B78E4", "strokeWidth": 3.5 } + }, + "zIndex": 999, + "width": 20, + "height": 272, + "style": {}, + "measured": { "width": 20, "height": 272 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "uBXrri2bXVsNiM8fIHHOv", + "type": "topic", + "position": { "x": -217.66916540260297, "y": 543.5854351053018 }, + "selected": true, + "data": { + "label": "Model Vulnerabilities", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nhUKKWyBH80nyKfGT8ErC" + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { "width": 247, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 226, "height": 49 } + }, + { + "id": "QFzLx5nc4rCCD8WVc20mo", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 512.4729819354706 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Model Weight Stealing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "style": { "width": 219, "height": 49 }, + "measured": { "width": 234, "height": 49 }, + "focusable": true, + "width": 234, + "height": 49, + "resizing": false, + "dragging": false + }, + { + "id": "DQeOavZCoXpF3k_qRDABs", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 565.4729819354706 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Unauthorized Access", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { "width": 219, "height": 53 }, + "measured": { "width": 234, "height": 49 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "JMfZg9VvFMAZvIgfSpLCk", + "type": "label", + "position": { "x": -559.9572811083598, "y": 621.3958360247223 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Model Extraction", + "style": { "fontSize": 17 }, + "href": "", + "color": "#000000" + }, + "zIndex": 999, + "measured": { "width": 146, "height": 38 }, + "focusable": true, + "dragging": false + }, + { + "id": "hw4ErrC1Yy2KU-fdNwrM6", + "type": "section", + "position": { "x": -614.4572811083598, "y": 658.7270619394108 }, + "width": 255, + "height": 223, + "style": { "width": 235, "height": 170 }, + "selected": true, + "data": { + "style": { "backgroundColor": "#ffffff", "borderColor": "#000000" }, + "oldId": "t4IWddpRLqlm5vQgE-Cn0" + }, + "measured": { "width": 255, "height": 223 }, + "focusable": true, + "resizing": false, + "dragging": false, + "selectable": true + }, + { + "id": "nD0_64ELEeJSN-0aZiR7i", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 670.7270619394108 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Data Poisoning", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "QFzLx5nc4rCCD8WVc20mo" + }, + "zIndex": 999, + "style": { "width": 219, "height": 49 }, + "measured": { "width": 234, "height": 49 }, + "focusable": true, + "width": 234, + "height": 49, + "resizing": false, + "dragging": false + }, + { + "id": "xjlttOti-_laPRn8a2fVy", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 723.7270619394108 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Adversarial Examples", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iE5PcswBHnu_EBFIacib0" + }, + "zIndex": 999, + "width": 234, + "height": 53, + "style": { "width": 219, "height": 53 }, + "measured": { "width": 234, "height": 53 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "lhY7I24au9B1b7Wzr-6jR", + "type": "label", + "position": { "x": -570.4572811083598, "y": 836.6123885764944 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Model Manipulation", + "style": { "fontSize": 17 }, + "href": "", + "color": "#000000", + "oldId": "JMfZg9VvFMAZvIgfSpLCk" + }, + "zIndex": 999, + "measured": { "width": 167, "height": 38 }, + "focusable": true, + "dragging": false + }, + { + "id": "iE5PcswBHnu_EBFIacib0", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 780.7270619394108 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Model Inversion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "DQeOavZCoXpF3k_qRDABs" + }, + "zIndex": 999, + "width": 234, + "height": 53, + "style": { "width": 219, "height": 53 }, + "measured": { "width": 234, "height": 53 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "W-FfFY2KB_5u1sg-8h_Sv", + "type": "section", + "position": { "x": -614.4572811083598, "y": 876.8352736219604 }, + "width": 255, + "height": 223, + "style": { "width": 235, "height": 170 }, + "selected": true, + "data": { + "style": { "backgroundColor": "#ffffff", "borderColor": "#000000" }, + "oldId": "hw4ErrC1Yy2KU-fdNwrM6" + }, + "measured": { "width": 255, "height": 223 }, + "focusable": true, + "resizing": false, + "dragging": false, + "selectable": true + }, + { + "id": "2Y0ZO-etpv3XIvunDLu-W", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 888.8352736219604 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Adversarial Training", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nD0_64ELEeJSN-0aZiR7i" + }, + "zIndex": 999, + "style": { "width": 219, "height": 49 }, + "measured": { "width": 234, "height": 49 }, + "focusable": true, + "width": 234, + "height": 49, + "resizing": false, + "dragging": false + }, + { + "id": "6gEHMhh6BGJI-ZYN27YPW", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 941.8352736219604 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Robust Model Design", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "xjlttOti-_laPRn8a2fVy" + }, + "zIndex": 999, + "width": 234, + "height": 53, + "style": { "width": 219, "height": 53 }, + "measured": { "width": 234, "height": 53 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "AMtXkS3wOqxPGf9ib6bi8", + "type": "label", + "position": { "x": -568.9572811083598, "y": 1054.720600259044 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Defense Strategies", + "style": { "fontSize": 17 }, + "href": "", + "color": "#000000", + "oldId": "lhY7I24au9B1b7Wzr-6jR" + }, + "zIndex": 999, + "measured": { "width": 164, "height": 38 }, + "focusable": true, + "dragging": false + }, + { + "id": "7Km0mFpHguHYPs5UhHTsM", + "type": "subtopic", + "position": { "x": -603.9572811083598, "y": 998.8352736219604 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Continuous Monitoring", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "iE5PcswBHnu_EBFIacib0" + }, + "zIndex": 999, + "width": 234, + "height": 53, + "style": { "width": 219, "height": 53 }, + "measured": { "width": 234, "height": 53 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "YpDr02T3XuKdDFcA44B4F", + "type": "paragraph", + "position": { "x": -237.66916540260297, "y": 640.7270619394108 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "System Security", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "EQrDljYCypm5zlzVmXane" + }, + "zIndex": 999, + "measured": { "width": 266, "height": 55 }, + "dragging": false, + "focusable": true, + "width": 266, + "height": 55, + "resizing": false + }, + { + "id": "aKzai0A8J55-OBXTnQih1", + "type": "subtopic", + "position": { "x": -222.16916540260297, "y": 820.7530873990016 }, + "selected": true, + "data": { + "label": "Insecure Deserialization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "JQ3bR8odXJfd-1RCEf3-Q" + }, + "zIndex": 999, + "width": 235, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 235, "height": 49 } + }, + { + "id": "kgDsDlBk8W2aM6LyWpFY8", + "type": "subtopic", + "position": { "x": -222.16916540260297, "y": 873.7530873990016 }, + "selected": true, + "data": { + "label": "Remote Code Execution", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "887lc3tWCRH-sOHSxWgWJ" + }, + "zIndex": 999, + "width": 235, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 235, "height": 49 } + }, + { + "id": "nhUKKWyBH80nyKfGT8ErC", + "type": "topic", + "position": { "x": -231.66916540260297, "y": 930.7404921238303 }, + "selected": true, + "data": { + "label": "Infrastructure Security", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "JDDG4KfhtIlw1rkNCzUli" + }, + "zIndex": 999, + "width": 254, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 254, "height": 49 } + }, + { + "id": "Tszl26iNBnQBdBEWOueDA", + "type": "subtopic", + "position": { "x": -222.16916540260297, "y": 984.3446560991081 }, + "selected": true, + "data": { + "label": "API Protection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "JQ3bR8odXJfd-1RCEf3-Q" + }, + "zIndex": 999, + "width": 235, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 235, "height": 49 } + }, + { + "id": "J7gjlt2MBx7lOkOnfGvPF", + "type": "subtopic", + "position": { "x": -222.16916540260297, "y": 1037.344656099108 }, + "selected": true, + "data": { + "label": "Authentication", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "JQ3bR8odXJfd-1RCEf3-Q" + }, + "zIndex": 999, + "width": 235, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 235, "height": 49 } + }, + { + "id": "JQ3bR8odXJfd-1RCEf3-Q", + "type": "subtopic", + "position": { "x": -222.16916540260297, "y": 1090.344656099108 }, + "selected": true, + "data": { + "label": "Authentication", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kgDsDlBk8W2aM6LyWpFY8" + }, + "zIndex": 999, + "width": 235, + "height": 49, + "style": { "width": 236, "height": 49 }, + "positionAbsolute": { "x": 130.89980850421182, "y": 64.36789058920115 }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false, + "measured": { "width": 235, "height": 49 } + }, + { + "id": "ptbK6pLZbvotCcoaVOlhm", + "type": "paragraph", + "position": { "x": 170.78058268338464, "y": 761.990589013835 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Testing Methodologies", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "YpDr02T3XuKdDFcA44B4F" + }, + "zIndex": 999, + "measured": { "width": 256, "height": 55 }, + "dragging": false, + "focusable": true, + "width": 256, + "height": 55, + "resizing": false + }, + { + "id": "0bApnJTt-Z2IUf0X3OCYf", + "type": "subtopic", + "position": { "x": 191.78058268338464, "y": 884.4864121198897 }, + "selected": true, + "data": { + "label": "Black Box Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "65Lo60JQS5YlvvQ6KevXt" + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { "width": 214, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 214, "height": 49 } + }, + { + "id": "Mrk_js5UVn4dRDw-Yco3Y", + "type": "subtopic", + "position": { "x": 191.78058268338464, "y": 937.4864121198897 }, + "selected": true, + "data": { + "label": "White Box Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "65Lo60JQS5YlvvQ6KevXt" + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { "width": 214, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 214, "height": 49 } + }, + { + "id": "ZVNAMCP68XKRXVxF2-hBc", + "type": "subtopic", + "position": { "x": 191.78058268338464, "y": 990.4864121198897 }, + "selected": true, + "data": { + "label": "Grey Box Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "65Lo60JQS5YlvvQ6KevXt" + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { "width": 214, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 214, "height": 49 } + }, + { + "id": "LVdYN9hyCyNPYn2Lz1y9b", + "type": "subtopic", + "position": { "x": 191.78058268338464, "y": 1043.4864121198898 }, + "selected": true, + "data": { + "label": "Automated vs Manual", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "65Lo60JQS5YlvvQ6KevXt" + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { "width": 214, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 214, "height": 49 } + }, + { + "id": "65Lo60JQS5YlvvQ6KevXt", + "type": "subtopic", + "position": { "x": 191.78058268338464, "y": 1096.4864121198898 }, + "selected": true, + "data": { + "label": "Continuous Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "vhBu5x8INTtqvx6vcYAhE" + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { "width": 214, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 214, "height": 49 } + }, + { + "id": "zB-hhiDU8BPXoDZXlqPyW", + "type": "paragraph", + "position": { "x": 170.78058268338464, "y": 1203.4587419076465 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Tools and Frameworks", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "rpvQMyWGn7_7NzWOjBJCd" + }, + "zIndex": 999, + "measured": { "width": 256, "height": 55 }, + "dragging": false, + "focusable": true, + "width": 256, + "height": 55, + "resizing": false + }, + { + "id": "c8n8FcYKDOgPLQvV9xF5J", + "type": "subtopic", + "position": { "x": 187.28058268338464, "y": 1320.8008552818792 }, + "selected": true, + "data": { + "label": "Testing Platforms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "BLnfNlA0C4yzy1dvifjwx" + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { "width": 223, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 223, "height": 49 } + }, + { + "id": "59lkLcoqV4gq7f8Zm0X2p", + "type": "subtopic", + "position": { "x": 187.28058268338464, "y": 1373.8008552818792 }, + "selected": true, + "data": { + "label": "Monitoring Solutions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "BLnfNlA0C4yzy1dvifjwx" + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { "width": 223, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 223, "height": 49 } + }, + { + "id": "et1Xrr8ez-fmB0mAq8W_a", + "type": "subtopic", + "position": { "x": 187.28058268338464, "y": 1426.8008552818792 }, + "selected": true, + "data": { + "label": "Benchmark Datasets", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "BLnfNlA0C4yzy1dvifjwx" + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { "width": 223, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 223, "height": 49 } + }, + { + "id": "C1zO2xC0AqyV53p2YEPWg", + "type": "subtopic", + "position": { "x": 187.28058268338464, "y": 1479.8008552818792 }, + "selected": true, + "data": { + "label": "Custom Testing Scripts", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "BLnfNlA0C4yzy1dvifjwx" + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { "width": 223, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": true, + "measured": { "width": 223, "height": 49 } + }, + { + "id": "BLnfNlA0C4yzy1dvifjwx", + "type": "subtopic", + "position": { "x": 187.28058268338464, "y": 1532.8008552818792 }, + "selected": true, + "data": { + "label": "Reporting Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "65Lo60JQS5YlvvQ6KevXt" + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { "width": 223, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": true, + "measured": { "width": 223, "height": 49 } + }, + { + "id": "yraH8ID6eALCTPZnrjxH9", + "type": "paragraph", + "position": { "x": -253.16916540260297, "y": 1203.4587419076465 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Professional Development", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "rpvQMyWGn7_7NzWOjBJCd" + }, + "zIndex": 999, + "measured": { "width": 297, "height": 53 }, + "dragging": false, + "focusable": true, + "width": 297, + "height": 53, + "resizing": false + }, + { + "id": "s1xKK8HL5-QGZpcutiuvj", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1622.4625843997128 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Specialized Courses", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "HHjsFR6wRDqUd66PMDE_7" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53 + }, + { + "id": "HHjsFR6wRDqUd66PMDE_7", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1680.3574706784932 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Industry Credentials", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53, + "resizing": false + }, + { + "id": "kQ9ireRCosbBw2M91hP9Y", + "type": "label", + "position": { "x": -542.5708359378116, "y": 1738.2523569572736 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Certifications", + "style": { "fontSize": 17 }, + "href": "", + "color": "#000000" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 117, "height": 38 }, + "dragging": false, + "focusable": true + }, + { + "id": "MmwwRK4I9aRH_ha7duPqf", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1390.8622737963847 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Lab Environments", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "s1xKK8HL5-QGZpcutiuvj" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53 + }, + { + "id": "2Imb64Px3ZQcBpSQjdc_G", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1447.8622737963847 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "CTF Challenges", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "DpYsL0du37n40toH33fIr" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53, + "resizing": false + }, + { + "id": "T8QzRM83aE3vOvU_ot8Zm", + "type": "label", + "position": { "x": -571.5708359378116, "y": 1568.4109462086944 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Practical Experience", + "style": { "fontSize": 17 }, + "href": "", + "color": "#000000", + "oldId": "kQ9ireRCosbBw2M91hP9Y" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 175, "height": 38 }, + "dragging": false, + "focusable": true + }, + { + "id": "DpYsL0du37n40toH33fIr", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1504.8622737963847 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Red Team Simulations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "HHjsFR6wRDqUd66PMDE_7" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53, + "resizing": false + }, + { + "id": "D84bHT-mLU1digq0_7nn_", + "type": "section", + "position": { "x": -611.5708359378116, "y": 1142.4868717628697 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": { + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + }, + "oldId": "jyFzaSxCTk4-SkVtAqXDV" + }, + "zIndex": -999, + "width": 255, + "height": 236, + "style": { "width": 150, "height": 100 }, + "measured": { "width": 255, "height": 236 }, + "resizing": false, + "dragging": false, + "focusable": true + }, + { + "id": "LuKnmd9nSz9yLbTU_5Yp2", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1154.538662757303 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Conferences", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MmwwRK4I9aRH_ha7duPqf" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53 + }, + { + "id": "ZlR03pM-sqVFZNhD1gMSJ", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1211.538662757303 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Research Groups", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "2Imb64Px3ZQcBpSQjdc_G" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53, + "resizing": false + }, + { + "id": "ngi9yk6_ZTUOr90b2KSZD", + "type": "label", + "position": { "x": -586.0708359378116, "y": 1332.0873351696127 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Community Engagement", + "style": { "fontSize": 17 }, + "href": "", + "color": "#000000", + "oldId": "T8QzRM83aE3vOvU_ot8Zm" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 204, "height": 38 }, + "dragging": false, + "focusable": true + }, + { + "id": "Smncq-n1OlnLAY27AFQOO", + "type": "subtopic", + "position": { "x": -599.0708359378116, "y": 1268.538662757303 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Forums", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "DpYsL0du37n40toH33fIr" + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 230, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 230, + "height": 53, + "resizing": false + }, + { + "id": "rFMsUHR6bP0t9KqZxHtrE", + "type": "horizontal", + "position": { "x": -356.0708359378116, "y": 1219.9587419076465 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 113, + "height": 20, + "style": {}, + "measured": { "width": 113, "height": 20 }, + "dragging": false, + "resizing": false, + "focusable": true + }, + { + "id": "rpvQMyWGn7_7NzWOjBJCd", + "type": "paragraph", + "position": { "x": -253.16916540260297, "y": 1321.8008552818792 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Real-world Applications", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "ptbK6pLZbvotCcoaVOlhm" + }, + "zIndex": 999, + "measured": { "width": 297, "height": 53 }, + "dragging": false, + "focusable": true, + "width": 297, + "height": 53, + "resizing": false + }, + { + "id": "xJYTRbPxMn0Xs5ea0Ygn6", + "type": "subtopic", + "position": { "x": -219.66916540260297, "y": 1431.828358913156 }, + "selected": true, + "data": { + "label": "LLM Security Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KAcCZ3zcv25R6HwzAsfUG" + }, + "zIndex": 999, + "width": 230, + "height": 49, + "style": { "width": 230, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 230, "height": 49 } + }, + { + "id": "FVsKivsJrIb82B0lpPmgw", + "type": "subtopic", + "position": { "x": -219.66916540260297, "y": 1484.828358913156 }, + "selected": true, + "data": { + "label": "Agentic AI Security", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KAcCZ3zcv25R6HwzAsfUG" + }, + "zIndex": 999, + "width": 230, + "height": 49, + "style": { "width": 230, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 230, "height": 49 } + }, + { + "id": "KAcCZ3zcv25R6HwzAsfUG", + "type": "subtopic", + "position": { "x": -219.66916540260297, "y": 1537.828358913156 }, + "selected": true, + "data": { + "label": "Responsible Disclosure", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "c8n8FcYKDOgPLQvV9xF5J" + }, + "zIndex": 999, + "width": 230, + "height": 49, + "style": { "width": 230, "height": 49 }, + "positionAbsolute": { "x": -227.16916540260297, "y": 13.436864496015943 }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false, + "measured": { "width": 230, "height": 49 } + }, + { + "id": "kEUGGhl9GQU04yjihX1_h", + "type": "paragraph", + "position": { "x": -228.16916540260297, "y": 1696.0256874499853 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Future Directions", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + }, + "oldId": "rpvQMyWGn7_7NzWOjBJCd" + }, + "zIndex": 999, + "measured": { "width": 247, "height": 50 }, + "dragging": false, + "focusable": true, + "width": 247, + "height": 50, + "resizing": false + }, + { + "id": "-G8v_CNa8wO_g-46_RFQo", + "type": "subtopic", + "position": { "x": 171.94826997947376, "y": 1637.5256874499853 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Emerging Threats", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "WePO66_4-gNcSdE00WKmw" + }, + "zIndex": 999, + "style": { "width": 228 }, + "measured": { "width": 240, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 240, + "height": 53 + }, + { + "id": "soC-kcem1ISbnCQMa6BIB", + "type": "subtopic", + "position": { "x": 172.72664751020432, "y": 1694.5256874499853 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Advanced Techniques", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "WePO66_4-gNcSdE00WKmw" + }, + "zIndex": 999, + "style": { "width": 228 }, + "measured": { "width": 240, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 240, + "height": 53 + }, + { + "id": "VmaIHVsCpq2um_0cA33V3", + "type": "subtopic", + "position": { "x": 171.64628079512062, "y": 1751.5256874499853 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Research Opportunities", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "WePO66_4-gNcSdE00WKmw" + }, + "zIndex": 999, + "style": { "width": 228 }, + "measured": { "width": 240, "height": 49 }, + "focusable": true, + "dragging": false, + "width": 240, + "height": 49, + "resizing": false + }, + { + "id": "WePO66_4-gNcSdE00WKmw", + "type": "subtopic", + "position": { "x": 171.64628079512062, "y": 1804.5256874499853 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "Industry Standards", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "style": { "width": 228 }, + "measured": { "width": 240, "height": 53 }, + "focusable": true, + "dragging": false, + "width": 240, + "height": 53 + }, + { + "id": "9l6XW089CXuuYntRTtrj3", + "type": "linksgroup", + "position": { "x": -612.9219566015802, "y": -81.63210941079888 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "", + "style": {}, + "links": [ + { + "id": "Q101aKvyzsByYCy7jjz-_", + "label": "AI and Data Scientist Roadmap", + "href": "", + "url": "https://roadmap.sh/ai-data-scientist" + }, + { + "id": "yfFf2uIv0a9FGMy0HQ0Io", + "label": "AI Engineer Roadmap", + "url": "https://roadmap.sh/ai-engineer" + }, + { + "id": "0j6PkCmRAFfKI6FRWOj_R", + "label": "Data Analyst Roadmap", + "url": "https://roadmap.sh/data-analyst" + }, + { + "id": "ltyjAYZrUyWHyxcV13B_X", + "label": "MLOps Roadmap", + "url": "https://roadmap.sh/mlops" + } + ] + }, + "zIndex": 999, + "measured": { "width": 322, "height": 157 }, + "dragging": false, + "width": 322, + "height": 157, + "resizing": false, + "focusable": true + }, + { + "id": "qnWjt9HoNnyLacZ96z03g", + "type": "vertical", + "position": { "x": -115.16916540260297, "y": 1750.0256874499853 }, + "selected": true, + "selectable": true, + "draggable": true, + "deletable": true, + "data": { + "label": "vertical node", + "style": { "stroke": "#2B78E4", "strokeWidth": 3.5 } + }, + "zIndex": 999, + "style": {}, + "measured": { "width": 20, "height": 196 }, + "dragging": false, + "focusable": true, + "width": 20, + "height": 196, + "resizing": false + }, + { + "width": 572, + "height": 120, + "id": "0vLaVNJaJSHZ_bHli6Qzs", + "type": "paragraph", + "position": { "x": -394.6039560484319, "y": 1896.4719928267566 }, + "selected": true, + "data": { + "label": "Visit the following relevant tracks to keep learning", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "WHITe" + }, + "oldId": "m9eO0jLGuR_9w2JJbe_g2" + }, + "zIndex": 999, + "positionAbsolute": { "x": -151.0311490763803, "y": 2838.2842366925815 }, + "dragging": false, + "style": { "width": 412, "height": 121 }, + "resizing": false, + "focusable": true, + "selectable": true, + "measured": { "width": 572, "height": 120 } + }, + { + "width": 21, + "height": 85, + "id": "xi0QAi4kXm3-IFKgopnOP", + "type": "vertical", + "position": { "x": -112.10395604843185, "y": 2017.4719928267564 }, + "selected": true, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "RLtk1C3gofHnLJ17x3o5b" + }, + "zIndex": 999, + "positionAbsolute": { "x": 44.468850923619726, "y": 2959.2842366925815 }, + "dragging": false, + "focusable": true, + "style": { "width": 21, "height": 85 }, + "resizing": false, + "selectable": true, + "measured": { "width": 21, "height": 85 } + }, + { + "width": 175, + "height": 49, + "id": "-sFboM4eFUMVq1tlPl-fV", + "type": "button", + "position": { "x": -382.0708359378116, "y": 1956.4376436905484 }, + "selected": true, + "data": { + "label": "AI Engineer", + "href": "https://roadmap.sh/backend", + "color": "#FFFFFf", + "backgroundColor": "#4136D6", + "style": { "fontSize": 17 }, + "borderColor": "#4136D6", + "oldId": "qXKNK_IsGS8-JgLK-Q9oU" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { "x": -134.0311490763803, "y": 2895.0087874111223 }, + "style": { "width": 378, "height": 49 }, + "focusable": true, + "resizing": false, + "selectable": true, + "measured": { "width": 175, "height": 49 } + }, + { + "width": 209, + "height": 49, + "id": "0CxO0xyfbyyRymDjXm3k2", + "type": "button", + "position": { "x": -197.66916540260297, "y": 1956.4376436905484 }, + "selected": true, + "data": { + "label": "AI & Data Scientist", + "href": "https://roadmap.sh/backend", + "color": "#FFFFFf", + "backgroundColor": "#4136D6", + "style": { "fontSize": 17 }, + "borderColor": "#4136D6", + "oldId": "-sFboM4eFUMVq1tlPl-fV" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { "x": -134.0311490763803, "y": 2895.0087874111223 }, + "style": { "width": 378, "height": 49 }, + "focusable": true, + "resizing": false, + "selectable": true, + "measured": { "width": 209, "height": 49 } + }, + { + "width": 146, + "height": 49, + "id": "bAA_NreUn1yOULk6GanqQ", + "type": "button", + "position": { "x": 18.83083459739703, "y": 1956.4376436905484 }, + "selected": true, + "data": { + "label": "Data Analyst", + "href": "https://roadmap.sh/backend", + "color": "#FFFFFf", + "backgroundColor": "#4136D6", + "style": { "fontSize": 17 }, + "borderColor": "#4136D6", + "oldId": "0CxO0xyfbyyRymDjXm3k2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { "x": -134.0311490763803, "y": 2895.0087874111223 }, + "style": { "width": 378, "height": 49 }, + "focusable": true, + "resizing": false, + "selectable": true, + "measured": { "width": 146, "height": 49 } + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HFJIYcI16OMyM77fAw9af", + "sourceHandle": "z2", + "target": "1gyuEV519LjN-KpROoVwv", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "reactflow__edge-JDDG4KfhtIlw1rkNCzUliz2-gx4KaFqKgJX9n9_ZGMqlZy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "HFJIYcI16OMyM77fAw9af", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-nhUKKWyBH80nyKfGT8ErCw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HFJIYcI16OMyM77fAw9af", + "sourceHandle": "z2", + "target": "R9DQNc0AyAQ2HLpP4HOk6", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "reactflow__edge-nhUKKWyBH80nyKfGT8ErCz2-R9DQNc0AyAQ2HLpP4HOk6y1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HFJIYcI16OMyM77fAw9af", + "sourceHandle": "z2", + "target": "fNTb9y3zs1HPYclAmu_Wv", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "reactflow__edge-nhUKKWyBH80nyKfGT8ErCz2-fNTb9y3zs1HPYclAmu_Wvy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HFJIYcI16OMyM77fAw9af", + "sourceHandle": "z2", + "target": "Irkc9DgBfqSn72WaJqXEt", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__nhUKKWyBH80nyKfGT8ErCz2-gx4KaFqKgJX9n9_ZGMqlZy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HFJIYcI16OMyM77fAw9af", + "sourceHandle": "x2", + "target": "EQrDljYCypm5zlzVmXane", + "targetHandle": "w2", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__HFJIYcI16OMyM77fAw9afx2-EQrDljYCypm5zlzVmXanew2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "EQrDljYCypm5zlzVmXane", + "sourceHandle": "x2", + "target": "USnljlWi_1nOvc-zViBh7", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__EQrDljYCypm5zlzVmXanex2-USnljlWi_1nOvc-zViBh7w1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "NvOJIv36Utpm7_kOZyr79", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-NvOJIv36Utpm7_kOZyr79z1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "ZC0yKsu-CJC-LZKKo2pLD", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-ZC0yKsu-CJC-LZKKo2pLDz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "Xqzc4mOKsVzwaUxLGjHya", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-Xqzc4mOKsVzwaUxLGjHyaz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "RuKzVhd1nZphCrlW1wZGL", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-RuKzVhd1nZphCrlW1wZGLz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "3XJ-g0KvHP75U18mxCqgw", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-3XJ-g0KvHP75U18mxCqgwz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "8K-wCn2cLc7Vs_V4sC3sE", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-8K-wCn2cLc7Vs_V4sC3sEz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "USnljlWi_1nOvc-zViBh7", + "sourceHandle": "y2", + "target": "gx4KaFqKgJX9n9_ZGMqlZ", + "targetHandle": "z1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__USnljlWi_1nOvc-zViBh7y2-gx4KaFqKgJX9n9_ZGMqlZz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "wg_PryJK5Ucr8bZofa4z-", + "sourceHandle": "z2", + "target": "WZkIHZkV2qDYbYF9KBBRi", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__wg_PryJK5Ucr8bZofa4z-z2-WZkIHZkV2qDYbYF9KBBRiy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "wg_PryJK5Ucr8bZofa4z-", + "sourceHandle": "z2", + "target": "RDOaTBWP3aIJPUp_kcafm", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__wg_PryJK5Ucr8bZofa4z-z2-RDOaTBWP3aIJPUp_kcafmy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "wg_PryJK5Ucr8bZofa4z-", + "sourceHandle": "z2", + "target": "MupRvk_8Io2Hn7yEvU663", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__wg_PryJK5Ucr8bZofa4z-z2-MupRvk_8Io2Hn7yEvU663y1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "wg_PryJK5Ucr8bZofa4z-", + "sourceHandle": "z2", + "target": "887lc3tWCRH-sOHSxWgWJ", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__wg_PryJK5Ucr8bZofa4z-z2-887lc3tWCRH-sOHSxWgWJy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "wg_PryJK5Ucr8bZofa4z-", + "sourceHandle": "x2", + "target": "1Xr7mxVekeAHzTL7G4eAZ", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__wg_PryJK5Ucr8bZofa4z-x2-nhUKKWyBH80nyKfGT8ErCw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "1Xr7mxVekeAHzTL7G4eAZ", + "sourceHandle": "x2", + "target": "uBXrri2bXVsNiM8fIHHOv", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__1Xr7mxVekeAHzTL7G4eAZx2-uBXrri2bXVsNiM8fIHHOvw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "uBXrri2bXVsNiM8fIHHOv", + "sourceHandle": "x2", + "target": "YpDr02T3XuKdDFcA44B4F", + "targetHandle": "w2", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__uBXrri2bXVsNiM8fIHHOvx2-YpDr02T3XuKdDFcA44B4Fw2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YpDr02T3XuKdDFcA44B4F", + "sourceHandle": "x2", + "target": "vhBu5x8INTtqvx6vcYAhE", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__YpDr02T3XuKdDFcA44B4Fx2-vhBu5x8INTtqvx6vcYAhEw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "vhBu5x8INTtqvx6vcYAhE", + "sourceHandle": "z2", + "target": "ptbK6pLZbvotCcoaVOlhm", + "targetHandle": "y1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__vhBu5x8INTtqvx6vcYAhEz2-ptbK6pLZbvotCcoaVOlhmy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ptbK6pLZbvotCcoaVOlhm", + "sourceHandle": "x2", + "target": "0bApnJTt-Z2IUf0X3OCYf", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__ptbK6pLZbvotCcoaVOlhmx2-0bApnJTt-Z2IUf0X3OCYfw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "65Lo60JQS5YlvvQ6KevXt", + "sourceHandle": "x2", + "target": "zB-hhiDU8BPXoDZXlqPyW", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__65Lo60JQS5YlvvQ6KevXtx2-rpvQMyWGn7_7NzWOjBJCdw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zB-hhiDU8BPXoDZXlqPyW", + "sourceHandle": "x2", + "target": "c8n8FcYKDOgPLQvV9xF5J", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__rpvQMyWGn7_7NzWOjBJCdx2-c8n8FcYKDOgPLQvV9xF5Jw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zB-hhiDU8BPXoDZXlqPyW", + "sourceHandle": "y2", + "target": "yraH8ID6eALCTPZnrjxH9", + "targetHandle": "z1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__zB-hhiDU8BPXoDZXlqPyWy2-rpvQMyWGn7_7NzWOjBJCdz1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yraH8ID6eALCTPZnrjxH9", + "sourceHandle": "x2", + "target": "rpvQMyWGn7_7NzWOjBJCd", + "targetHandle": "w1", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__yraH8ID6eALCTPZnrjxH9x2-rpvQMyWGn7_7NzWOjBJCdw1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rpvQMyWGn7_7NzWOjBJCd", + "sourceHandle": "x2", + "target": "xJYTRbPxMn0Xs5ea0Ygn6", + "targetHandle": "w2", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__rpvQMyWGn7_7NzWOjBJCdx2-xJYTRbPxMn0Xs5ea0Ygn6w2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KAcCZ3zcv25R6HwzAsfUG", + "sourceHandle": "x2", + "target": "kEUGGhl9GQU04yjihX1_h", + "targetHandle": "w2", + "data": { "edgeStyle": "solid" }, + "id": "xy-edge__KAcCZ3zcv25R6HwzAsfUGx2-kEUGGhl9GQU04yjihX1_hw2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kEUGGhl9GQU04yjihX1_h", + "sourceHandle": "z2", + "target": "-G8v_CNa8wO_g-46_RFQo", + "targetHandle": "y2", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__kEUGGhl9GQU04yjihX1_hz2--G8v_CNa8wO_g-46_RFQoy2", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kEUGGhl9GQU04yjihX1_h", + "sourceHandle": "z2", + "target": "soC-kcem1ISbnCQMa6BIB", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__kEUGGhl9GQU04yjihX1_hz2-soC-kcem1ISbnCQMa6BIBy1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kEUGGhl9GQU04yjihX1_h", + "sourceHandle": "z2", + "target": "VmaIHVsCpq2um_0cA33V3", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__kEUGGhl9GQU04yjihX1_hz2-VmaIHVsCpq2um_0cA33V3y1", + "selected": true, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kEUGGhl9GQU04yjihX1_h", + "sourceHandle": "z2", + "target": "WePO66_4-gNcSdE00WKmw", + "targetHandle": "y1", + "data": { "edgeStyle": "dashed" }, + "id": "xy-edge__kEUGGhl9GQU04yjihX1_hz2-WePO66_4-gNcSdE00WKmwy1", + "selected": true, + "selectable": true, + "focusable": true + } + ] +} diff --git a/src/data/roadmaps/ai-red-teaming/ai-red-teaming.md b/src/data/roadmaps/ai-red-teaming/ai-red-teaming.md new file mode 100644 index 000000000..de78cf682 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/ai-red-teaming.md @@ -0,0 +1,58 @@ +--- +jsonUrl: '/jsons/roadmaps/ai-red-teaming.json' +pdfUrl: '/pdfs/roadmaps/ai-red-teaming.pdf' +order: 22 +briefTitle: 'AI Red Teaming' +briefDescription: 'Learn to become a red teaming expert in AI' +title: 'AI Red Teaming' +description: 'Learn to become a red teaming expert in AI' +isNew: true +hasTopics: true +renderer: editor +dimensions: + width: 968 + height: 2150 +schema: + headline: 'AI Red Teaming Roadmap' + description: 'Learn how to red team your AI applications with this interactive step by step guide in 2025. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/ai-red-teaming.png' + datePublished: '2025-04-22' + dateModified: '2025-04-22' +seo: + title: 'AI Red Teaming Roadmap - roadmap.sh' + description: 'Step by step guide to learn AI Red Teaming in 2025. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + keywords: + - 'ai red teaming tutorial' + - 'step by step guide for ai red teaming' + - 'how to learn ai red teaming' + - 'use ai red teaming in production' + - 'ai red teaming roadmap 2025' + - 'guide to learning ai red teaming' + - 'ai red teaming for beginners' + - 'ai red teaming roadmap' + - 'ai red teaming learning path' + - 'ai red teaming learning roadmap' + - 'ai red teaming learning guide' + - 'ai red teaming skills' + - 'ai red teaming for development' + - 'ai red teaming for development skills' + - 'ai red teaming for development skills test' + - 'ai red teaming quiz' + - 'ai red teaming career path' + - 'ai red teaming interview questions' + - 'learn ai red teaming for development' + - 'become an ai red teaming expert' + - 'what is ai red teaming' +relatedRoadmaps: + - 'ai-engineer' + - 'ai-data-scientist' + - 'prompt-engineering' + - 'data-analyst' +sitemap: + priority: 1 + changefreq: 'monthly' +tags: + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' +--- diff --git a/src/data/roadmaps/ai-red-teaming/content/advanced-techniques@soC-kcem1ISbnCQMa6BIB.md b/src/data/roadmaps/ai-red-teaming/content/advanced-techniques@soC-kcem1ISbnCQMa6BIB.md new file mode 100644 index 000000000..d9fa0be71 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/advanced-techniques@soC-kcem1ISbnCQMa6BIB.md @@ -0,0 +1 @@ +# Advanced Techniques \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/adversarial-examples@xjlttOti-_laPRn8a2fVy.md b/src/data/roadmaps/ai-red-teaming/content/adversarial-examples@xjlttOti-_laPRn8a2fVy.md new file mode 100644 index 000000000..c05804125 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/adversarial-examples@xjlttOti-_laPRn8a2fVy.md @@ -0,0 +1 @@ +# Adversarial Examples \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/adversarial-training@2Y0ZO-etpv3XIvunDLu-W.md b/src/data/roadmaps/ai-red-teaming/content/adversarial-training@2Y0ZO-etpv3XIvunDLu-W.md new file mode 100644 index 000000000..d90b3d4fa --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/adversarial-training@2Y0ZO-etpv3XIvunDLu-W.md @@ -0,0 +1 @@ +# Adversarial Training \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/agentic-ai-security@FVsKivsJrIb82B0lpPmgw.md b/src/data/roadmaps/ai-red-teaming/content/agentic-ai-security@FVsKivsJrIb82B0lpPmgw.md new file mode 100644 index 000000000..9b7c40449 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/agentic-ai-security@FVsKivsJrIb82B0lpPmgw.md @@ -0,0 +1 @@ +# Agentic AI Security \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/ai-security-fundamentals@R9DQNc0AyAQ2HLpP4HOk6.md b/src/data/roadmaps/ai-red-teaming/content/ai-security-fundamentals@R9DQNc0AyAQ2HLpP4HOk6.md new file mode 100644 index 000000000..364370c2f --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/ai-security-fundamentals@R9DQNc0AyAQ2HLpP4HOk6.md @@ -0,0 +1 @@ +# AI Security Fundamentals \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/api-protection@Tszl26iNBnQBdBEWOueDA.md b/src/data/roadmaps/ai-red-teaming/content/api-protection@Tszl26iNBnQBdBEWOueDA.md new file mode 100644 index 000000000..97999a018 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/api-protection@Tszl26iNBnQBdBEWOueDA.md @@ -0,0 +1 @@ +# API Protection \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/authentication@J7gjlt2MBx7lOkOnfGvPF.md b/src/data/roadmaps/ai-red-teaming/content/authentication@J7gjlt2MBx7lOkOnfGvPF.md new file mode 100644 index 000000000..66a783b30 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/authentication@J7gjlt2MBx7lOkOnfGvPF.md @@ -0,0 +1 @@ +# Authentication \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/authentication@JQ3bR8odXJfd-1RCEf3-Q.md b/src/data/roadmaps/ai-red-teaming/content/authentication@JQ3bR8odXJfd-1RCEf3-Q.md new file mode 100644 index 000000000..66a783b30 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/authentication@JQ3bR8odXJfd-1RCEf3-Q.md @@ -0,0 +1 @@ +# Authentication \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/automated-vs-manual@LVdYN9hyCyNPYn2Lz1y9b.md b/src/data/roadmaps/ai-red-teaming/content/automated-vs-manual@LVdYN9hyCyNPYn2Lz1y9b.md new file mode 100644 index 000000000..5dd1cbdc4 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/automated-vs-manual@LVdYN9hyCyNPYn2Lz1y9b.md @@ -0,0 +1 @@ +# Automated vs Manual \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/benchmark-datasets@et1Xrr8ez-fmB0mAq8W_a.md b/src/data/roadmaps/ai-red-teaming/content/benchmark-datasets@et1Xrr8ez-fmB0mAq8W_a.md new file mode 100644 index 000000000..f71b33c88 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/benchmark-datasets@et1Xrr8ez-fmB0mAq8W_a.md @@ -0,0 +1 @@ +# Benchmark Datasets \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/black-box-testing@0bApnJTt-Z2IUf0X3OCYf.md b/src/data/roadmaps/ai-red-teaming/content/black-box-testing@0bApnJTt-Z2IUf0X3OCYf.md new file mode 100644 index 000000000..46dc68bec --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/black-box-testing@0bApnJTt-Z2IUf0X3OCYf.md @@ -0,0 +1 @@ +# Black Box Testing \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/code-injection@vhBu5x8INTtqvx6vcYAhE.md b/src/data/roadmaps/ai-red-teaming/content/code-injection@vhBu5x8INTtqvx6vcYAhE.md new file mode 100644 index 000000000..8127d97ea --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/code-injection@vhBu5x8INTtqvx6vcYAhE.md @@ -0,0 +1 @@ +# Code Injection \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/conferences@LuKnmd9nSz9yLbTU_5Yp2.md b/src/data/roadmaps/ai-red-teaming/content/conferences@LuKnmd9nSz9yLbTU_5Yp2.md new file mode 100644 index 000000000..142b54db9 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/conferences@LuKnmd9nSz9yLbTU_5Yp2.md @@ -0,0 +1 @@ +# Conferences \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/confidentiality-integrity-availability@WZkIHZkV2qDYbYF9KBBRi.md b/src/data/roadmaps/ai-red-teaming/content/confidentiality-integrity-availability@WZkIHZkV2qDYbYF9KBBRi.md new file mode 100644 index 000000000..7f87208ca --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/confidentiality-integrity-availability@WZkIHZkV2qDYbYF9KBBRi.md @@ -0,0 +1 @@ +# Confidentiality, Integrity, Availability \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/continuous-monitoring@7Km0mFpHguHYPs5UhHTsM.md b/src/data/roadmaps/ai-red-teaming/content/continuous-monitoring@7Km0mFpHguHYPs5UhHTsM.md new file mode 100644 index 000000000..c8ee07c2f --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/continuous-monitoring@7Km0mFpHguHYPs5UhHTsM.md @@ -0,0 +1 @@ +# Continuous Monitoring \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/continuous-testing@65Lo60JQS5YlvvQ6KevXt.md b/src/data/roadmaps/ai-red-teaming/content/continuous-testing@65Lo60JQS5YlvvQ6KevXt.md new file mode 100644 index 000000000..5a6bdbd23 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/continuous-testing@65Lo60JQS5YlvvQ6KevXt.md @@ -0,0 +1 @@ +# Continuous Testing \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/countermeasures@G1u_Kq4NeUsGX2qnUTuJU.md b/src/data/roadmaps/ai-red-teaming/content/countermeasures@G1u_Kq4NeUsGX2qnUTuJU.md new file mode 100644 index 000000000..78a297b0c --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/countermeasures@G1u_Kq4NeUsGX2qnUTuJU.md @@ -0,0 +1 @@ +# Countermeasures \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/ctf-challenges@2Imb64Px3ZQcBpSQjdc_G.md b/src/data/roadmaps/ai-red-teaming/content/ctf-challenges@2Imb64Px3ZQcBpSQjdc_G.md new file mode 100644 index 000000000..f46349f5e --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/ctf-challenges@2Imb64Px3ZQcBpSQjdc_G.md @@ -0,0 +1 @@ +# CTF Challenges \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/custom-testing-scripts@C1zO2xC0AqyV53p2YEPWg.md b/src/data/roadmaps/ai-red-teaming/content/custom-testing-scripts@C1zO2xC0AqyV53p2YEPWg.md new file mode 100644 index 000000000..8bab7b373 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/custom-testing-scripts@C1zO2xC0AqyV53p2YEPWg.md @@ -0,0 +1 @@ +# Custom Testing Scripts \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/data-poisoning@nD0_64ELEeJSN-0aZiR7i.md b/src/data/roadmaps/ai-red-teaming/content/data-poisoning@nD0_64ELEeJSN-0aZiR7i.md new file mode 100644 index 000000000..1121c2850 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/data-poisoning@nD0_64ELEeJSN-0aZiR7i.md @@ -0,0 +1 @@ +# Data Poisoning \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/direct@5zHow4KZVpfhch5Aabeft.md b/src/data/roadmaps/ai-red-teaming/content/direct@5zHow4KZVpfhch5Aabeft.md new file mode 100644 index 000000000..ed0419d8a --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/direct@5zHow4KZVpfhch5Aabeft.md @@ -0,0 +1 @@ +# Direct \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/emerging-threats@-G8v_CNa8wO_g-46_RFQo.md b/src/data/roadmaps/ai-red-teaming/content/emerging-threats@-G8v_CNa8wO_g-46_RFQo.md new file mode 100644 index 000000000..9502b7803 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/emerging-threats@-G8v_CNa8wO_g-46_RFQo.md @@ -0,0 +1 @@ +# Emerging Threats \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/ethical-considerations@1gyuEV519LjN-KpROoVwv.md b/src/data/roadmaps/ai-red-teaming/content/ethical-considerations@1gyuEV519LjN-KpROoVwv.md new file mode 100644 index 000000000..6cd4aeeb8 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/ethical-considerations@1gyuEV519LjN-KpROoVwv.md @@ -0,0 +1 @@ +# Ethical Considerations \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/forums@Smncq-n1OlnLAY27AFQOO.md b/src/data/roadmaps/ai-red-teaming/content/forums@Smncq-n1OlnLAY27AFQOO.md new file mode 100644 index 000000000..34b48047f --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/forums@Smncq-n1OlnLAY27AFQOO.md @@ -0,0 +1 @@ +# Forums \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/generative-models@3XJ-g0KvHP75U18mxCqgw.md b/src/data/roadmaps/ai-red-teaming/content/generative-models@3XJ-g0KvHP75U18mxCqgw.md new file mode 100644 index 000000000..71b3bf5c6 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/generative-models@3XJ-g0KvHP75U18mxCqgw.md @@ -0,0 +1 @@ +# Generative Models \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/grey-box-testing@ZVNAMCP68XKRXVxF2-hBc.md b/src/data/roadmaps/ai-red-teaming/content/grey-box-testing@ZVNAMCP68XKRXVxF2-hBc.md new file mode 100644 index 000000000..665f0f3ea --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/grey-box-testing@ZVNAMCP68XKRXVxF2-hBc.md @@ -0,0 +1 @@ +# Grey Box Testing \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/indirect@3_gJRtJSdm2iAfkwmcv0e.md b/src/data/roadmaps/ai-red-teaming/content/indirect@3_gJRtJSdm2iAfkwmcv0e.md new file mode 100644 index 000000000..6e9982d2e --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/indirect@3_gJRtJSdm2iAfkwmcv0e.md @@ -0,0 +1 @@ +# Indirect \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/industry-credentials@HHjsFR6wRDqUd66PMDE_7.md b/src/data/roadmaps/ai-red-teaming/content/industry-credentials@HHjsFR6wRDqUd66PMDE_7.md new file mode 100644 index 000000000..94e989f67 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/industry-credentials@HHjsFR6wRDqUd66PMDE_7.md @@ -0,0 +1 @@ +# Industry Credentials \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/industry-standards@WePO66_4-gNcSdE00WKmw.md b/src/data/roadmaps/ai-red-teaming/content/industry-standards@WePO66_4-gNcSdE00WKmw.md new file mode 100644 index 000000000..318ae5c74 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/industry-standards@WePO66_4-gNcSdE00WKmw.md @@ -0,0 +1 @@ +# Industry Standards \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/infrastructure-security@nhUKKWyBH80nyKfGT8ErC.md b/src/data/roadmaps/ai-red-teaming/content/infrastructure-security@nhUKKWyBH80nyKfGT8ErC.md new file mode 100644 index 000000000..3fcdd05d1 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/infrastructure-security@nhUKKWyBH80nyKfGT8ErC.md @@ -0,0 +1 @@ +# Infrastructure Security \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/insecure-deserialization@aKzai0A8J55-OBXTnQih1.md b/src/data/roadmaps/ai-red-teaming/content/insecure-deserialization@aKzai0A8J55-OBXTnQih1.md new file mode 100644 index 000000000..ccabbd585 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/insecure-deserialization@aKzai0A8J55-OBXTnQih1.md @@ -0,0 +1 @@ +# Insecure Deserialization \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/introduction@HFJIYcI16OMyM77fAw9af.md b/src/data/roadmaps/ai-red-teaming/content/introduction@HFJIYcI16OMyM77fAw9af.md new file mode 100644 index 000000000..f6ecaa676 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/introduction@HFJIYcI16OMyM77fAw9af.md @@ -0,0 +1 @@ +# Introduction \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/jailbreak-techniques@Ds8pqn4y9Npo7z6ubunvc.md b/src/data/roadmaps/ai-red-teaming/content/jailbreak-techniques@Ds8pqn4y9Npo7z6ubunvc.md new file mode 100644 index 000000000..6cd93ca54 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/jailbreak-techniques@Ds8pqn4y9Npo7z6ubunvc.md @@ -0,0 +1 @@ +# Jailbreak Techniques \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/lab-environments@MmwwRK4I9aRH_ha7duPqf.md b/src/data/roadmaps/ai-red-teaming/content/lab-environments@MmwwRK4I9aRH_ha7duPqf.md new file mode 100644 index 000000000..dfa68396a --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/lab-environments@MmwwRK4I9aRH_ha7duPqf.md @@ -0,0 +1 @@ +# Lab Environments \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/large-language-models@8K-wCn2cLc7Vs_V4sC3sE.md b/src/data/roadmaps/ai-red-teaming/content/large-language-models@8K-wCn2cLc7Vs_V4sC3sE.md new file mode 100644 index 000000000..da3ae161d --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/large-language-models@8K-wCn2cLc7Vs_V4sC3sE.md @@ -0,0 +1 @@ +# Large Language Models \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/llm-security-testing@xJYTRbPxMn0Xs5ea0Ygn6.md b/src/data/roadmaps/ai-red-teaming/content/llm-security-testing@xJYTRbPxMn0Xs5ea0Ygn6.md new file mode 100644 index 000000000..ccd9745dd --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/llm-security-testing@xJYTRbPxMn0Xs5ea0Ygn6.md @@ -0,0 +1 @@ +# LLM Security Testing \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/model-inversion@iE5PcswBHnu_EBFIacib0.md b/src/data/roadmaps/ai-red-teaming/content/model-inversion@iE5PcswBHnu_EBFIacib0.md new file mode 100644 index 000000000..db2599d89 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/model-inversion@iE5PcswBHnu_EBFIacib0.md @@ -0,0 +1 @@ +# Model Inversion \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/model-vulnerabilities@uBXrri2bXVsNiM8fIHHOv.md b/src/data/roadmaps/ai-red-teaming/content/model-vulnerabilities@uBXrri2bXVsNiM8fIHHOv.md new file mode 100644 index 000000000..c9532891c --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/model-vulnerabilities@uBXrri2bXVsNiM8fIHHOv.md @@ -0,0 +1 @@ +# Model Vulnerabilities \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/model-weight-stealing@QFzLx5nc4rCCD8WVc20mo.md b/src/data/roadmaps/ai-red-teaming/content/model-weight-stealing@QFzLx5nc4rCCD8WVc20mo.md new file mode 100644 index 000000000..69009be05 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/model-weight-stealing@QFzLx5nc4rCCD8WVc20mo.md @@ -0,0 +1 @@ +# Model Weight Stealing \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/monitoring-solutions@59lkLcoqV4gq7f8Zm0X2p.md b/src/data/roadmaps/ai-red-teaming/content/monitoring-solutions@59lkLcoqV4gq7f8Zm0X2p.md new file mode 100644 index 000000000..9c7be42ca --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/monitoring-solutions@59lkLcoqV4gq7f8Zm0X2p.md @@ -0,0 +1 @@ +# Monitoring Solutions \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/neural-networks@RuKzVhd1nZphCrlW1wZGL.md b/src/data/roadmaps/ai-red-teaming/content/neural-networks@RuKzVhd1nZphCrlW1wZGL.md new file mode 100644 index 000000000..e9fcdbc74 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/neural-networks@RuKzVhd1nZphCrlW1wZGL.md @@ -0,0 +1 @@ +# Neural Networks \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/prompt-engineering@gx4KaFqKgJX9n9_ZGMqlZ.md b/src/data/roadmaps/ai-red-teaming/content/prompt-engineering@gx4KaFqKgJX9n9_ZGMqlZ.md new file mode 100644 index 000000000..2d10f0367 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/prompt-engineering@gx4KaFqKgJX9n9_ZGMqlZ.md @@ -0,0 +1 @@ +# Prompt Engineering \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/prompt-hacking@1Xr7mxVekeAHzTL7G4eAZ.md b/src/data/roadmaps/ai-red-teaming/content/prompt-hacking@1Xr7mxVekeAHzTL7G4eAZ.md new file mode 100644 index 000000000..1d4b5e7fa --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/prompt-hacking@1Xr7mxVekeAHzTL7G4eAZ.md @@ -0,0 +1 @@ +# Prompt Hacking \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/prompt-injection@XOrAPDRhBvde9R-znEipH.md b/src/data/roadmaps/ai-red-teaming/content/prompt-injection@XOrAPDRhBvde9R-znEipH.md new file mode 100644 index 000000000..7227af039 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/prompt-injection@XOrAPDRhBvde9R-znEipH.md @@ -0,0 +1 @@ +# Prompt Injection \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/red-team-simulations@DpYsL0du37n40toH33fIr.md b/src/data/roadmaps/ai-red-teaming/content/red-team-simulations@DpYsL0du37n40toH33fIr.md new file mode 100644 index 000000000..fd3d564b7 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/red-team-simulations@DpYsL0du37n40toH33fIr.md @@ -0,0 +1 @@ +# Red Team Simulations \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/reinforcement-learning@Xqzc4mOKsVzwaUxLGjHya.md b/src/data/roadmaps/ai-red-teaming/content/reinforcement-learning@Xqzc4mOKsVzwaUxLGjHya.md new file mode 100644 index 000000000..998d9bd63 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/reinforcement-learning@Xqzc4mOKsVzwaUxLGjHya.md @@ -0,0 +1 @@ +# Reinforcement Learning \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/remote-code-execution@kgDsDlBk8W2aM6LyWpFY8.md b/src/data/roadmaps/ai-red-teaming/content/remote-code-execution@kgDsDlBk8W2aM6LyWpFY8.md new file mode 100644 index 000000000..10a5f3987 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/remote-code-execution@kgDsDlBk8W2aM6LyWpFY8.md @@ -0,0 +1 @@ +# Remote Code Execution \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/reporting-tools@BLnfNlA0C4yzy1dvifjwx.md b/src/data/roadmaps/ai-red-teaming/content/reporting-tools@BLnfNlA0C4yzy1dvifjwx.md new file mode 100644 index 000000000..b4885e59a --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/reporting-tools@BLnfNlA0C4yzy1dvifjwx.md @@ -0,0 +1 @@ +# Reporting Tools \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/research-groups@ZlR03pM-sqVFZNhD1gMSJ.md b/src/data/roadmaps/ai-red-teaming/content/research-groups@ZlR03pM-sqVFZNhD1gMSJ.md new file mode 100644 index 000000000..8a1fbf925 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/research-groups@ZlR03pM-sqVFZNhD1gMSJ.md @@ -0,0 +1 @@ +# Research Groups \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/research-opportunities@VmaIHVsCpq2um_0cA33V3.md b/src/data/roadmaps/ai-red-teaming/content/research-opportunities@VmaIHVsCpq2um_0cA33V3.md new file mode 100644 index 000000000..5841ae1c3 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/research-opportunities@VmaIHVsCpq2um_0cA33V3.md @@ -0,0 +1 @@ +# Research Opportunities \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/responsible-disclosure@KAcCZ3zcv25R6HwzAsfUG.md b/src/data/roadmaps/ai-red-teaming/content/responsible-disclosure@KAcCZ3zcv25R6HwzAsfUG.md new file mode 100644 index 000000000..f9e2753fc --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/responsible-disclosure@KAcCZ3zcv25R6HwzAsfUG.md @@ -0,0 +1 @@ +# Responsible Disclosure \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/risk-management@MupRvk_8Io2Hn7yEvU663.md b/src/data/roadmaps/ai-red-teaming/content/risk-management@MupRvk_8Io2Hn7yEvU663.md new file mode 100644 index 000000000..bc1aa5e0e --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/risk-management@MupRvk_8Io2Hn7yEvU663.md @@ -0,0 +1 @@ +# Risk Management \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/robust-model-design@6gEHMhh6BGJI-ZYN27YPW.md b/src/data/roadmaps/ai-red-teaming/content/robust-model-design@6gEHMhh6BGJI-ZYN27YPW.md new file mode 100644 index 000000000..793ae2fd1 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/robust-model-design@6gEHMhh6BGJI-ZYN27YPW.md @@ -0,0 +1 @@ +# Robust Model Design \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/role-of-red-teams@Irkc9DgBfqSn72WaJqXEt.md b/src/data/roadmaps/ai-red-teaming/content/role-of-red-teams@Irkc9DgBfqSn72WaJqXEt.md new file mode 100644 index 000000000..92742bd3b --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/role-of-red-teams@Irkc9DgBfqSn72WaJqXEt.md @@ -0,0 +1 @@ +# Role of Red Teams \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/safety-filter-bypasses@j7uLLpt8MkZ1rqM7UBPW4.md b/src/data/roadmaps/ai-red-teaming/content/safety-filter-bypasses@j7uLLpt8MkZ1rqM7UBPW4.md new file mode 100644 index 000000000..3b20ce7e0 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/safety-filter-bypasses@j7uLLpt8MkZ1rqM7UBPW4.md @@ -0,0 +1 @@ +# Safety Filter Bypasses \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/specialized-courses@s1xKK8HL5-QGZpcutiuvj.md b/src/data/roadmaps/ai-red-teaming/content/specialized-courses@s1xKK8HL5-QGZpcutiuvj.md new file mode 100644 index 000000000..aa116eb04 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/specialized-courses@s1xKK8HL5-QGZpcutiuvj.md @@ -0,0 +1 @@ +# Specialized Courses \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/supervised-learning@NvOJIv36Utpm7_kOZyr79.md b/src/data/roadmaps/ai-red-teaming/content/supervised-learning@NvOJIv36Utpm7_kOZyr79.md new file mode 100644 index 000000000..cc80ec827 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/supervised-learning@NvOJIv36Utpm7_kOZyr79.md @@ -0,0 +1 @@ +# Supervised Learning \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/testing-platforms@c8n8FcYKDOgPLQvV9xF5J.md b/src/data/roadmaps/ai-red-teaming/content/testing-platforms@c8n8FcYKDOgPLQvV9xF5J.md new file mode 100644 index 000000000..1138bca53 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/testing-platforms@c8n8FcYKDOgPLQvV9xF5J.md @@ -0,0 +1 @@ +# Testing Platforms \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/threat-modeling@RDOaTBWP3aIJPUp_kcafm.md b/src/data/roadmaps/ai-red-teaming/content/threat-modeling@RDOaTBWP3aIJPUp_kcafm.md new file mode 100644 index 000000000..4d4e54d40 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/threat-modeling@RDOaTBWP3aIJPUp_kcafm.md @@ -0,0 +1 @@ +# Threat Modeling \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/unauthorized-access@DQeOavZCoXpF3k_qRDABs.md b/src/data/roadmaps/ai-red-teaming/content/unauthorized-access@DQeOavZCoXpF3k_qRDABs.md new file mode 100644 index 000000000..f589e9da8 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/unauthorized-access@DQeOavZCoXpF3k_qRDABs.md @@ -0,0 +1 @@ +# Unauthorized Access \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/unsupervised-learning@ZC0yKsu-CJC-LZKKo2pLD.md b/src/data/roadmaps/ai-red-teaming/content/unsupervised-learning@ZC0yKsu-CJC-LZKKo2pLD.md new file mode 100644 index 000000000..a0216c8b4 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/unsupervised-learning@ZC0yKsu-CJC-LZKKo2pLD.md @@ -0,0 +1 @@ +# Unsupervised Learning \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/vulnerability-assessment@887lc3tWCRH-sOHSxWgWJ.md b/src/data/roadmaps/ai-red-teaming/content/vulnerability-assessment@887lc3tWCRH-sOHSxWgWJ.md new file mode 100644 index 000000000..5666706cd --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/vulnerability-assessment@887lc3tWCRH-sOHSxWgWJ.md @@ -0,0 +1 @@ +# Vulnerability Assessment \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/white-box-testing@Mrk_js5UVn4dRDw-Yco3Y.md b/src/data/roadmaps/ai-red-teaming/content/white-box-testing@Mrk_js5UVn4dRDw-Yco3Y.md new file mode 100644 index 000000000..d0cc507ce --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/white-box-testing@Mrk_js5UVn4dRDw-Yco3Y.md @@ -0,0 +1 @@ +# White Box Testing \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/content/why-red-team-ai-systems@fNTb9y3zs1HPYclAmu_Wv.md b/src/data/roadmaps/ai-red-teaming/content/why-red-team-ai-systems@fNTb9y3zs1HPYclAmu_Wv.md new file mode 100644 index 000000000..a127864b7 --- /dev/null +++ b/src/data/roadmaps/ai-red-teaming/content/why-red-team-ai-systems@fNTb9y3zs1HPYclAmu_Wv.md @@ -0,0 +1 @@ +# Why Red Team AI Systems? \ No newline at end of file diff --git a/src/data/roadmaps/ai-red-teaming/faqs.astro b/src/data/roadmaps/ai-red-teaming/faqs.astro new file mode 100644 index 000000000..e69de29bb