From 660295e218ac2f12fbdb0c8eab09fac5a14bd6ec Mon Sep 17 00:00:00 2001 From: BreakPilot Dev Date: Sun, 8 Feb 2026 23:40:15 -0800 Subject: [PATCH] fix(admin-v2): Restore complete admin-v2 application The admin-v2 application was incomplete in the repository. This commit restores all missing components: - Admin pages (76 pages): dashboard, ai, compliance, dsgvo, education, infrastructure, communication, development, onboarding, rbac - SDK pages (45 pages): tom, dsfa, vvt, loeschfristen, einwilligungen, vendor-compliance, tom-generator, dsr, and more - Developer portal (25 pages): API docs, SDK guides, frameworks - All components, lib files, hooks, and types - Updated package.json with all dependencies The issue was caused by incomplete initial repository state - the full admin-v2 codebase existed in backend/admin-v2 and docs-src/admin-v2 but was never fully synced to the main admin-v2 directory. Co-Authored-By: Claude Opus 4.5 --- admin-v2/.dockerignore | 8 + admin-v2/Dockerfile | 55 + .../app/(admin)/ai/agents/[agentId]/page.tsx | 636 ++ .../(admin)/ai/agents/architecture/page.tsx | 779 +++ admin-v2/app/(admin)/ai/agents/page.tsx | 377 ++ .../app/(admin)/ai/agents/sessions/page.tsx | 444 ++ .../app/(admin)/ai/agents/statistics/page.tsx | 491 ++ admin-v2/app/(admin)/ai/llm-compare/page.tsx | 499 ++ admin-v2/app/(admin)/ai/page.tsx | 53 + admin-v2/app/(admin)/ai/quality/page.tsx | 524 ++ admin-v2/app/(admin)/ai/rag/page.tsx | 2231 +++++++ admin-v2/app/(admin)/ai/test-quality/page.tsx | 1522 +++++ admin-v2/app/(admin)/ai/test-quality/types.ts | 52 + admin-v2/app/(admin)/architecture/page.tsx | 148 + admin-v2/app/(admin)/backlog/page.tsx | 991 +++ .../app/(admin)/communication/alerts/page.tsx | 912 +++ .../app/(admin)/communication/mail/page.tsx | 946 +++ .../communication/mail/wizard/page.tsx | 421 ++ .../app/(admin)/communication/matrix/page.tsx | 594 ++ admin-v2/app/(admin)/communication/page.tsx | 50 + .../(admin)/communication/video-chat/page.tsx | 635 ++ .../communication/video-chat/wizard/page.tsx | 366 ++ .../app/(admin)/compliance/ai-act/page.tsx | 831 +++ .../compliance/audit-checklist/page.tsx | 775 +++ .../(admin)/compliance/audit-report/page.tsx | 705 ++ .../app/(admin)/compliance/consent/page.tsx | 648 ++ .../app/(admin)/compliance/controls/page.tsx | 484 ++ admin-v2/app/(admin)/compliance/dsfa/page.tsx | 691 ++ admin-v2/app/(admin)/compliance/dsms/page.tsx | 377 ++ admin-v2/app/(admin)/compliance/dsr/page.tsx | 429 ++ .../compliance/einwilligungen/page.tsx | 498 ++ .../app/(admin)/compliance/evidence/page.tsx | 583 ++ admin-v2/app/(admin)/compliance/hub/page.tsx | 545 ++ .../(admin)/compliance/loeschfristen/page.tsx | 511 ++ .../app/(admin)/compliance/modules/page.tsx | 601 ++ .../(admin)/compliance/obligations/page.tsx | 1423 ++++ admin-v2/app/(admin)/compliance/page.tsx | 52 + .../(admin)/compliance/requirements/page.tsx | 446 ++ .../app/(admin)/compliance/risks/page.tsx | 712 ++ .../source-policy/components/AuditTab.tsx | 413 ++ .../components/OperationsMatrixTab.tsx | 271 + .../source-policy/components/PIIRulesTab.tsx | 562 ++ .../source-policy/components/SourcesTab.tsx | 525 ++ .../(admin)/compliance/source-policy/page.tsx | 804 +++ admin-v2/app/(admin)/compliance/tom/page.tsx | 395 ++ admin-v2/app/(admin)/compliance/vvt/page.tsx | 334 + .../app/(admin)/compliance/workflow/page.tsx | 1082 ++++ admin-v2/app/(admin)/dashboard/page.tsx | 146 + .../(admin)/developers/api/export/page.tsx | 271 + .../(admin)/developers/api/generate/page.tsx | 381 ++ admin-v2/app/(admin)/developers/api/page.tsx | 239 + .../app/(admin)/developers/api/rag/page.tsx | 248 + .../app/(admin)/developers/api/state/page.tsx | 266 + .../app/(admin)/developers/changelog/page.tsx | 164 + .../developers/getting-started/page.tsx | 203 + .../app/(admin)/developers/guides/page.tsx | 227 + .../(admin)/developers/guides/phase1/page.tsx | 391 ++ .../(admin)/developers/guides/phase2/page.tsx | 377 ++ admin-v2/app/(admin)/developers/layout.tsx | 9 + admin-v2/app/(admin)/developers/page.tsx | 188 + .../developers/sdk/configuration/page.tsx | 256 + .../sdk/consent/api-reference/page.tsx | 482 ++ .../sdk/consent/frameworks/angular/page.tsx | 281 + .../sdk/consent/frameworks/page.tsx | 98 + .../sdk/consent/frameworks/react/page.tsx | 277 + .../sdk/consent/frameworks/vue/page.tsx | 277 + .../sdk/consent/installation/page.tsx | 303 + .../sdk/consent/mobile/android/page.tsx | 269 + .../sdk/consent/mobile/flutter/page.tsx | 313 + .../sdk/consent/mobile/ios/page.tsx | 283 + .../developers/sdk/consent/mobile/page.tsx | 95 + .../(admin)/developers/sdk/consent/page.tsx | 262 + .../developers/sdk/consent/security/page.tsx | 290 + .../developers/sdk/installation/page.tsx | 186 + admin-v2/app/(admin)/developers/sdk/page.tsx | 281 + .../(admin)/development/brandbook/page.tsx | 1143 ++++ .../(admin)/development/companion/page.tsx | 39 + .../app/(admin)/development/docs/page.tsx | 216 + .../app/(admin)/development/game/page.tsx | 39 + admin-v2/app/(admin)/development/page.tsx | 54 + .../(admin)/development/unity-bridge/page.tsx | 39 + .../app/(admin)/development/workflow/page.tsx | 520 ++ .../advisory-board/documentation/page.tsx | 643 ++ .../dsgvo/advisory-board/legal-metadata.ts | 992 +++ .../app/(admin)/dsgvo/advisory-board/page.tsx | 1954 ++++++ admin-v2/app/(admin)/dsgvo/consent/page.tsx | 648 ++ admin-v2/app/(admin)/dsgvo/dsfa/page.tsx | 737 +++ admin-v2/app/(admin)/dsgvo/dsr/page.tsx | 711 ++ .../app/(admin)/dsgvo/einwilligungen/page.tsx | 498 ++ .../app/(admin)/dsgvo/escalations/page.tsx | 864 +++ .../app/(admin)/dsgvo/loeschfristen/page.tsx | 542 ++ admin-v2/app/(admin)/dsgvo/page.tsx | 202 + admin-v2/app/(admin)/dsgvo/tom/page.tsx | 602 ++ admin-v2/app/(admin)/dsgvo/vvt/page.tsx | 597 ++ .../app/(admin)/education/edu-search/page.tsx | 292 + .../foerderantrag/[applicationId]/page.tsx | 675 ++ .../education/foerderantrag/new/page.tsx | 368 ++ .../(admin)/education/foerderantrag/page.tsx | 365 ++ admin-v2/app/(admin)/education/page.tsx | 82 + .../app/(admin)/infrastructure/ci-cd/page.tsx | 1631 +++++ .../app/(admin)/infrastructure/gpu/page.tsx | 391 ++ .../infrastructure/middleware/page.tsx | 650 ++ admin-v2/app/(admin)/infrastructure/page.tsx | 50 + .../app/(admin)/infrastructure/sbom/page.tsx | 901 +++ .../infrastructure/sbom/wizard/page.tsx | 558 ++ .../(admin)/infrastructure/security/page.tsx | 1133 ++++ .../app/(admin)/infrastructure/tests/page.tsx | 1560 +++++ .../app/(admin)/infrastructure/tests/types.ts | 192 + admin-v2/app/(admin)/layout.tsx | 61 + admin-v2/app/(admin)/onboarding/page.tsx | 39 + admin-v2/app/(admin)/rbac/page.tsx | 1035 +++ admin-v2/app/(sdk)/layout.tsx | 165 + .../app/(sdk)/sdk/advisory-board/page.tsx | 658 ++ admin-v2/app/(sdk)/sdk/ai-act/page.tsx | 295 + .../app/(sdk)/sdk/audit-checklist/page.tsx | 481 ++ .../app/(sdk)/sdk/company-profile/page.tsx | 862 +++ admin-v2/app/(sdk)/sdk/consent/page.tsx | 327 + admin-v2/app/(sdk)/sdk/controls/page.tsx | 484 ++ admin-v2/app/(sdk)/sdk/cookie-banner/page.tsx | 408 ++ .../components/DataPointsPreview.tsx | 296 + .../components/DocumentValidation.tsx | 211 + .../document-generator/components/index.ts | 9 + .../app/(sdk)/sdk/document-generator/page.tsx | 793 +++ admin-v2/app/(sdk)/sdk/dsfa/[id]/page.tsx | 1340 ---- admin-v2/app/(sdk)/sdk/dsfa/page.tsx | 591 +- .../app/(sdk)/sdk/dsr/[requestId]/page.tsx | 734 +++ admin-v2/app/(sdk)/sdk/dsr/new/page.tsx | 521 ++ admin-v2/app/(sdk)/sdk/dsr/page.tsx | 595 ++ .../(sdk)/sdk/einwilligungen/catalog/page.tsx | 248 + .../sdk/einwilligungen/cookie-banner/page.tsx | 763 +++ .../app/(sdk)/sdk/einwilligungen/page.tsx | 931 +++ .../einwilligungen/privacy-policy/page.tsx | 414 ++ .../sdk/einwilligungen/retention/page.tsx | 482 ++ admin-v2/app/(sdk)/sdk/escalations/page.tsx | 401 ++ admin-v2/app/(sdk)/sdk/evidence/page.tsx | 470 ++ admin-v2/app/(sdk)/sdk/import/page.tsx | 573 ++ admin-v2/app/(sdk)/sdk/loeschfristen/page.tsx | 317 + admin-v2/app/(sdk)/sdk/modules/page.tsx | 355 + admin-v2/app/(sdk)/sdk/obligations/page.tsx | 313 + admin-v2/app/(sdk)/sdk/page.tsx | 443 ++ admin-v2/app/(sdk)/sdk/quality/page.tsx | 368 ++ admin-v2/app/(sdk)/sdk/rag/page.tsx | 276 + admin-v2/app/(sdk)/sdk/requirements/page.tsx | 427 ++ admin-v2/app/(sdk)/sdk/risks/page.tsx | 531 ++ admin-v2/app/(sdk)/sdk/screening/page.tsx | 407 ++ .../app/(sdk)/sdk/security-backlog/page.tsx | 392 ++ .../sdk/tom-generator/architecture/page.tsx | 129 + .../app/(sdk)/sdk/tom-generator/data/page.tsx | 128 + .../app/(sdk)/sdk/tom-generator/layout.tsx | 30 + admin-v2/app/(sdk)/sdk/tom-generator/page.tsx | 215 + .../(sdk)/sdk/tom-generator/review/page.tsx | 147 + .../app/(sdk)/sdk/tom-generator/risk/page.tsx | 146 + .../(sdk)/sdk/tom-generator/scope/page.tsx | 115 + .../(sdk)/sdk/tom-generator/security/page.tsx | 129 + admin-v2/app/(sdk)/sdk/tom/page.tsx | 377 ++ .../sdk/vendor-compliance/contracts/page.tsx | 382 ++ .../sdk/vendor-compliance/controls/page.tsx | 287 + .../(sdk)/sdk/vendor-compliance/layout.tsx | 132 + .../app/(sdk)/sdk/vendor-compliance/page.tsx | 350 + .../processing-activities/page.tsx | 425 ++ .../sdk/vendor-compliance/reports/page.tsx | 733 +++ .../sdk/vendor-compliance/risks/page.tsx | 323 + .../sdk/vendor-compliance/vendors/page.tsx | 394 ++ admin-v2/app/(sdk)/sdk/vvt/page.tsx | 348 + .../app/api/admin/agents/[agentId]/route.ts | 275 + .../api/admin/agents/[agentId]/soul/route.ts | 187 + admin-v2/app/api/admin/agents/route.ts | 282 + .../app/api/admin/agents/sessions/route.ts | 240 + .../app/api/admin/agents/statistics/route.ts | 208 + .../sessions/[sessionId]/complete/route.ts | 44 + .../audit/sessions/[sessionId]/pdf/route.ts | 66 + .../admin/audit/sessions/[sessionId]/route.ts | 80 + .../audit/sessions/[sessionId]/start/route.ts | 44 + .../app/api/admin/audit/sessions/route.ts | 82 + .../api/admin/communication/stats/route.ts | 210 + .../items/[requirementId]/route.ts | 85 + .../audit/checklist/[sessionId]/route.ts | 57 + .../controls/[controlId]/review/route.ts | 46 + .../api/admin/compliance/controls/route.ts | 54 + .../compliance/dashboard/executive/route.ts | 36 + .../api/admin/compliance/dashboard/route.ts | 36 + .../api/admin/compliance/evidence/route.ts | 81 + .../admin/compliance/evidence/upload/route.ts | 53 + .../compliance/modules/[moduleId]/route.ts | 44 + .../compliance/modules/overview/route.ts | 36 + .../app/api/admin/compliance/modules/route.ts | 51 + .../admin/compliance/modules/seed/route.ts | 39 + .../api/admin/compliance/regulations/route.ts | 220 + .../admin/compliance/requirements/route.ts | 109 + .../admin/compliance/risks/[riskId]/route.ts | 83 + .../app/api/admin/compliance/risks/route.ts | 81 + .../app/api/admin/compliance/seed/route.ts | 39 + .../app/api/admin/consent/audit-log/route.ts | 48 + .../app/api/admin/consent/deadlines/route.ts | 40 + .../consent/documents/[id]/versions/route.ts | 80 + .../app/api/admin/consent/documents/route.ts | 75 + admin-v2/app/api/admin/consent/stats/route.ts | 44 + .../[versionId]/approval-history/route.ts | 46 + .../versions/[versionId]/approve/route.ts | 49 + .../versions/[versionId]/publish/route.ts | 49 + .../versions/[versionId]/reject/route.ts | 49 + .../consent/versions/[versionId]/route.ts | 87 + .../[versionId]/submit-review/route.ts | 47 + .../app/api/admin/consent/versions/route.ts | 42 + admin-v2/app/api/admin/health/route.ts | 173 + .../admin/infrastructure/mac-mini/route.ts | 338 + .../admin/infrastructure/woodpecker/route.ts | 208 + admin-v2/app/api/admin/mail/route.ts | 81 + .../api/admin/middleware/[...path]/route.ts | 172 + admin-v2/app/api/admin/middleware/route.ts | 59 + admin-v2/app/api/alerts/[...path]/route.ts | 172 + admin-v2/app/api/bqas/[...path]/route.ts | 86 + admin-v2/app/api/legal-corpus/route.ts | 164 + admin-v2/app/api/sdk/v1/checkpoints/route.ts | 235 + admin-v2/app/api/sdk/v1/demo/clear/route.ts | 52 + admin-v2/app/api/sdk/v1/demo/seed/route.ts | 77 + .../app/api/sdk/v1/documents/upload/route.ts | 214 + .../sdk/v1/einwilligungen/catalog/route.ts | 255 + .../sdk/v1/einwilligungen/consent/route.ts | 369 ++ .../cookie-banner/config/route.ts | 215 + .../cookie-banner/embed-code/route.ts | 256 + .../privacy-policy/generate/route.ts | 186 + admin-v2/app/api/sdk/v1/export/route.ts | 88 + admin-v2/app/api/sdk/v1/flow/route.ts | 150 + admin-v2/app/api/sdk/v1/generate/route.ts | 309 + admin-v2/app/api/sdk/v1/state/route.ts | 345 + .../tom-generator/controls/evaluate/route.ts | 107 + .../sdk/v1/tom-generator/controls/route.ts | 128 + .../evidence/[id]/analyze/route.ts | 121 + .../sdk/v1/tom-generator/evidence/route.ts | 153 + .../v1/tom-generator/evidence/upload/route.ts | 155 + .../api/sdk/v1/tom-generator/export/route.ts | 245 + .../v1/tom-generator/gap-analysis/route.ts | 205 + .../api/sdk/v1/tom-generator/state/route.ts | 250 + .../sdk/v1/ucca/obligations/assess/route.ts | 40 + .../ucca/obligations/export/direct/route.ts | 40 + .../contracts/[id]/review/route.ts | 197 + .../v1/vendor-compliance/contracts/route.ts | 88 + .../v1/vendor-compliance/controls/route.ts | 28 + .../export/[reportId]/download/route.ts | 75 + .../export/[reportId]/route.ts | 44 + .../sdk/v1/vendor-compliance/export/route.ts | 118 + .../v1/vendor-compliance/findings/route.ts | 43 + .../processing-activities/[id]/route.ts | 70 + .../processing-activities/route.ts | 84 + .../sdk/v1/vendor-compliance/vendors/route.ts | 82 + admin-v2/app/api/tests/[...path]/route.ts | 75 + .../app/api/v1/security/[...path]/route.ts | 97 + admin-v2/app/globals.css | 98 + admin-v2/app/layout.tsx | 22 + admin-v2/app/page.tsx | 106 + .../components/common/ArchitectureView.tsx | 339 + admin-v2/components/common/Breadcrumbs.tsx | 73 + .../components/common/DataFlowDiagram.tsx | 510 ++ admin-v2/components/common/InfoBox.tsx | 72 + admin-v2/components/common/ModuleCard.tsx | 113 + admin-v2/components/common/PagePurpose.tsx | 169 + admin-v2/components/common/ServiceStatus.tsx | 203 + .../components/developers/DevPortalLayout.tsx | 313 + .../components/developers/SDKDocsSidebar.tsx | 165 + admin-v2/components/layout/Header.tsx | 76 + admin-v2/components/layout/RoleIndicator.tsx | 107 + admin-v2/components/layout/Sidebar.tsx | 284 + .../components/sdk/CommandBar/CommandBar.tsx | 464 ++ admin-v2/components/sdk/CommandBar/index.ts | 1 + .../CustomerTypeSelector.tsx | 154 + .../sdk/CustomerTypeSelector/index.ts | 2 + .../DocumentUpload/DocumentUploadSection.tsx | 583 ++ .../components/sdk/DocumentUpload/index.ts | 1 + admin-v2/components/sdk/Layout/SDKLayout.tsx | 215 + admin-v2/components/sdk/Layout/index.ts | 1 + .../SDKPipelineSidebar/SDKPipelineSidebar.tsx | 540 ++ .../sdk/SDKPipelineSidebar/index.ts | 2 + .../components/sdk/Sidebar/SDKSidebar.tsx | 527 ++ admin-v2/components/sdk/Sidebar/index.ts | 1 + .../components/sdk/StepHeader/StepHeader.tsx | 664 ++ admin-v2/components/sdk/StepHeader/index.ts | 2 + .../sdk/__tests__/StepHeader.test.tsx | 127 + .../sdk/dsr/DSRCommunicationLog.tsx | 288 + admin-v2/components/sdk/dsr/DSRDataExport.tsx | 304 + .../sdk/dsr/DSRErasureChecklist.tsx | 293 + .../components/sdk/dsr/DSRIdentityModal.tsx | 263 + .../components/sdk/dsr/DSRWorkflowStepper.tsx | 176 + admin-v2/components/sdk/dsr/index.ts | 9 + .../sdk/einwilligungen/DataPointCatalog.tsx | 658 ++ .../einwilligungen/PrivacyPolicyPreview.tsx | 321 + .../sdk/einwilligungen/RetentionMatrix.tsx | 350 + .../components/sdk/einwilligungen/index.ts | 9 + admin-v2/components/sdk/index.ts | 16 + .../sdk/tom-generator/TOMGeneratorWizard.tsx | 286 + .../components/sdk/tom-generator/index.ts | 19 + .../tom-generator/steps/ArchitectureStep.tsx | 460 ++ .../steps/DataCategoriesStep.tsx | 374 ++ .../tom-generator/steps/ReviewExportStep.tsx | 593 ++ .../steps/RiskProtectionStep.tsx | 422 ++ .../tom-generator/steps/ScopeRolesStep.tsx | 403 ++ .../steps/SecurityProfileStep.tsx | 417 ++ .../components/wizard/ArchitectureContext.tsx | 100 + admin-v2/components/wizard/EducationCard.tsx | 28 + admin-v2/components/wizard/TestResultCard.tsx | 57 + admin-v2/components/wizard/TestRunner.tsx | 57 + admin-v2/components/wizard/TestSummary.tsx | 65 + admin-v2/components/wizard/WizardBanner.tsx | 31 + .../components/wizard/WizardNavigation.tsx | 53 + admin-v2/components/wizard/WizardProvider.tsx | 72 + admin-v2/components/wizard/WizardStepper.tsx | 43 + admin-v2/components/wizard/index.ts | 34 + admin-v2/components/wizard/types.ts | 104 + admin-v2/lib/module-registry.ts | 461 ++ admin-v2/lib/navigation.ts | 660 ++ admin-v2/lib/roles.ts | 100 + admin-v2/lib/sdk/__tests__/export.test.ts | 324 + admin-v2/lib/sdk/__tests__/types.test.ts | 250 + admin-v2/lib/sdk/api-client.ts | 471 ++ admin-v2/lib/sdk/context.tsx | 1084 ++++ admin-v2/lib/sdk/demo-data/controls.ts | 210 + admin-v2/lib/sdk/demo-data/dsfa.ts | 224 + admin-v2/lib/sdk/demo-data/index.ts | 556 ++ admin-v2/lib/sdk/demo-data/risks.ts | 268 + admin-v2/lib/sdk/demo-data/toms.ts | 296 + admin-v2/lib/sdk/demo-data/use-cases.ts | 85 + admin-v2/lib/sdk/demo-data/vvt.ts | 316 + .../document-generator/datapoint-helpers.ts | 548 ++ admin-v2/lib/sdk/document-generator/index.ts | 8 + admin-v2/lib/sdk/dsfa/__tests__/api.test.ts | 355 - admin-v2/lib/sdk/dsfa/__tests__/types.test.ts | 255 - admin-v2/lib/sdk/dsfa/api.ts | 399 -- admin-v2/lib/sdk/dsfa/index.ts | 8 - admin-v2/lib/sdk/dsfa/types.ts | 365 -- admin-v2/lib/sdk/dsr/api.ts | 664 ++ admin-v2/lib/sdk/dsr/index.ts | 6 + admin-v2/lib/sdk/dsr/types.ts | 581 ++ .../einwilligungen/catalog/data-points.yml | 1084 ++++ .../lib/sdk/einwilligungen/catalog/loader.ts | 308 + admin-v2/lib/sdk/einwilligungen/context.tsx | 669 ++ .../lib/sdk/einwilligungen/export/docx.ts | 493 ++ .../lib/sdk/einwilligungen/export/index.ts | 8 + admin-v2/lib/sdk/einwilligungen/export/pdf.ts | 505 ++ .../einwilligungen/generator/cookie-banner.ts | 595 ++ .../generator/privacy-policy.ts | 965 +++ admin-v2/lib/sdk/einwilligungen/index.ts | 79 + admin-v2/lib/sdk/einwilligungen/types.ts | 838 +++ admin-v2/lib/sdk/export.ts | 753 +++ admin-v2/lib/sdk/index.ts | 73 + admin-v2/lib/sdk/sdk-client.ts | 327 + admin-v2/lib/sdk/sync.ts | 482 ++ .../sdk/tom-generator/ai/document-analyzer.ts | 414 ++ admin-v2/lib/sdk/tom-generator/ai/prompts.ts | 427 ++ admin-v2/lib/sdk/tom-generator/context.tsx | 698 ++ .../sdk/tom-generator/controls/controls.yml | 1848 ++++++ .../lib/sdk/tom-generator/controls/loader.ts | 2240 +++++++ .../lib/sdk/tom-generator/demo-data/index.ts | 518 ++ .../lib/sdk/tom-generator/evidence-store.ts | 67 + admin-v2/lib/sdk/tom-generator/export/docx.ts | 525 ++ admin-v2/lib/sdk/tom-generator/export/pdf.ts | 517 ++ admin-v2/lib/sdk/tom-generator/export/zip.ts | 544 ++ admin-v2/lib/sdk/tom-generator/index.ts | 206 + .../lib/sdk/tom-generator/rules-engine.ts | 560 ++ admin-v2/lib/sdk/tom-generator/types.ts | 901 +++ admin-v2/lib/sdk/types.ts | 1785 +++++ .../sdk/vendor-compliance/catalog/index.ts | 9 + .../vendor-compliance/catalog/legal-basis.ts | 562 ++ .../catalog/processing-activities.ts | 813 +++ .../catalog/vendor-templates.ts | 564 ++ .../lib/sdk/vendor-compliance/context.tsx | 1010 +++ .../contract-review/analyzer.ts | 459 ++ .../contract-review/checklists.ts | 508 ++ .../contract-review/findings.ts | 573 ++ .../contract-review/index.ts | 7 + .../lib/sdk/vendor-compliance/export/index.ts | 72 + .../vendor-compliance/export/ropa-export.ts | 356 + .../export/vendor-audit-pack.ts | 489 ++ .../vendor-compliance/export/vvt-export.ts | 444 ++ admin-v2/lib/sdk/vendor-compliance/index.ts | 196 + .../sdk/vendor-compliance/risk/calculator.ts | 488 ++ .../risk/controls-library.ts | 943 +++ .../lib/sdk/vendor-compliance/risk/index.ts | 6 + admin-v2/lib/sdk/vendor-compliance/types.ts | 1217 ++++ admin-v2/next-env.d.ts | 6 + admin-v2/next.config.js | 29 + admin-v2/package-lock.json | 5725 +++++++++++++++++ admin-v2/package.json | 49 + admin-v2/postcss.config.mjs | 9 + admin-v2/tailwind.config.ts | 108 + admin-v2/tsconfig.json | 40 + 385 files changed, 138126 insertions(+), 3079 deletions(-) create mode 100644 admin-v2/.dockerignore create mode 100644 admin-v2/Dockerfile create mode 100644 admin-v2/app/(admin)/ai/agents/[agentId]/page.tsx create mode 100644 admin-v2/app/(admin)/ai/agents/architecture/page.tsx create mode 100644 admin-v2/app/(admin)/ai/agents/page.tsx create mode 100644 admin-v2/app/(admin)/ai/agents/sessions/page.tsx create mode 100644 admin-v2/app/(admin)/ai/agents/statistics/page.tsx create mode 100644 admin-v2/app/(admin)/ai/llm-compare/page.tsx create mode 100644 admin-v2/app/(admin)/ai/page.tsx create mode 100644 admin-v2/app/(admin)/ai/quality/page.tsx create mode 100644 admin-v2/app/(admin)/ai/rag/page.tsx create mode 100644 admin-v2/app/(admin)/ai/test-quality/page.tsx create mode 100644 admin-v2/app/(admin)/ai/test-quality/types.ts create mode 100644 admin-v2/app/(admin)/architecture/page.tsx create mode 100644 admin-v2/app/(admin)/backlog/page.tsx create mode 100644 admin-v2/app/(admin)/communication/alerts/page.tsx create mode 100644 admin-v2/app/(admin)/communication/mail/page.tsx create mode 100644 admin-v2/app/(admin)/communication/mail/wizard/page.tsx create mode 100644 admin-v2/app/(admin)/communication/matrix/page.tsx create mode 100644 admin-v2/app/(admin)/communication/page.tsx create mode 100644 admin-v2/app/(admin)/communication/video-chat/page.tsx create mode 100644 admin-v2/app/(admin)/communication/video-chat/wizard/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/ai-act/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/audit-checklist/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/audit-report/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/consent/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/controls/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/dsfa/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/dsms/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/dsr/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/einwilligungen/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/evidence/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/hub/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/loeschfristen/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/modules/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/obligations/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/requirements/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/risks/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/source-policy/components/AuditTab.tsx create mode 100644 admin-v2/app/(admin)/compliance/source-policy/components/OperationsMatrixTab.tsx create mode 100644 admin-v2/app/(admin)/compliance/source-policy/components/PIIRulesTab.tsx create mode 100644 admin-v2/app/(admin)/compliance/source-policy/components/SourcesTab.tsx create mode 100644 admin-v2/app/(admin)/compliance/source-policy/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/tom/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/vvt/page.tsx create mode 100644 admin-v2/app/(admin)/compliance/workflow/page.tsx create mode 100644 admin-v2/app/(admin)/dashboard/page.tsx create mode 100644 admin-v2/app/(admin)/developers/api/export/page.tsx create mode 100644 admin-v2/app/(admin)/developers/api/generate/page.tsx create mode 100644 admin-v2/app/(admin)/developers/api/page.tsx create mode 100644 admin-v2/app/(admin)/developers/api/rag/page.tsx create mode 100644 admin-v2/app/(admin)/developers/api/state/page.tsx create mode 100644 admin-v2/app/(admin)/developers/changelog/page.tsx create mode 100644 admin-v2/app/(admin)/developers/getting-started/page.tsx create mode 100644 admin-v2/app/(admin)/developers/guides/page.tsx create mode 100644 admin-v2/app/(admin)/developers/guides/phase1/page.tsx create mode 100644 admin-v2/app/(admin)/developers/guides/phase2/page.tsx create mode 100644 admin-v2/app/(admin)/developers/layout.tsx create mode 100644 admin-v2/app/(admin)/developers/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/configuration/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/api-reference/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/frameworks/angular/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/frameworks/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/frameworks/react/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/frameworks/vue/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/installation/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/mobile/android/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/mobile/flutter/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/mobile/ios/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/mobile/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/consent/security/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/installation/page.tsx create mode 100644 admin-v2/app/(admin)/developers/sdk/page.tsx create mode 100644 admin-v2/app/(admin)/development/brandbook/page.tsx create mode 100644 admin-v2/app/(admin)/development/companion/page.tsx create mode 100644 admin-v2/app/(admin)/development/docs/page.tsx create mode 100644 admin-v2/app/(admin)/development/game/page.tsx create mode 100644 admin-v2/app/(admin)/development/page.tsx create mode 100644 admin-v2/app/(admin)/development/unity-bridge/page.tsx create mode 100644 admin-v2/app/(admin)/development/workflow/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/advisory-board/documentation/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/advisory-board/legal-metadata.ts create mode 100644 admin-v2/app/(admin)/dsgvo/advisory-board/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/consent/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/dsfa/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/dsr/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/einwilligungen/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/escalations/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/loeschfristen/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/tom/page.tsx create mode 100644 admin-v2/app/(admin)/dsgvo/vvt/page.tsx create mode 100644 admin-v2/app/(admin)/education/edu-search/page.tsx create mode 100644 admin-v2/app/(admin)/education/foerderantrag/[applicationId]/page.tsx create mode 100644 admin-v2/app/(admin)/education/foerderantrag/new/page.tsx create mode 100644 admin-v2/app/(admin)/education/foerderantrag/page.tsx create mode 100644 admin-v2/app/(admin)/education/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/ci-cd/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/gpu/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/middleware/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/sbom/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/sbom/wizard/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/security/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/tests/page.tsx create mode 100644 admin-v2/app/(admin)/infrastructure/tests/types.ts create mode 100644 admin-v2/app/(admin)/layout.tsx create mode 100644 admin-v2/app/(admin)/onboarding/page.tsx create mode 100644 admin-v2/app/(admin)/rbac/page.tsx create mode 100644 admin-v2/app/(sdk)/layout.tsx create mode 100644 admin-v2/app/(sdk)/sdk/advisory-board/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/ai-act/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/audit-checklist/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/company-profile/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/consent/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/controls/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/cookie-banner/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/document-generator/components/DataPointsPreview.tsx create mode 100644 admin-v2/app/(sdk)/sdk/document-generator/components/DocumentValidation.tsx create mode 100644 admin-v2/app/(sdk)/sdk/document-generator/components/index.ts create mode 100644 admin-v2/app/(sdk)/sdk/document-generator/page.tsx delete mode 100644 admin-v2/app/(sdk)/sdk/dsfa/[id]/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/dsr/[requestId]/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/dsr/new/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/dsr/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/einwilligungen/catalog/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/einwilligungen/cookie-banner/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/einwilligungen/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/einwilligungen/privacy-policy/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/einwilligungen/retention/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/escalations/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/evidence/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/import/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/loeschfristen/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/modules/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/obligations/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/quality/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/rag/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/requirements/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/risks/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/screening/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/security-backlog/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/architecture/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/data/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/layout.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/review/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/risk/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/scope/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom-generator/security/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/tom/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/contracts/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/controls/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/layout.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/processing-activities/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/reports/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/risks/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vendor-compliance/vendors/page.tsx create mode 100644 admin-v2/app/(sdk)/sdk/vvt/page.tsx create mode 100644 admin-v2/app/api/admin/agents/[agentId]/route.ts create mode 100644 admin-v2/app/api/admin/agents/[agentId]/soul/route.ts create mode 100644 admin-v2/app/api/admin/agents/route.ts create mode 100644 admin-v2/app/api/admin/agents/sessions/route.ts create mode 100644 admin-v2/app/api/admin/agents/statistics/route.ts create mode 100644 admin-v2/app/api/admin/audit/sessions/[sessionId]/complete/route.ts create mode 100644 admin-v2/app/api/admin/audit/sessions/[sessionId]/pdf/route.ts create mode 100644 admin-v2/app/api/admin/audit/sessions/[sessionId]/route.ts create mode 100644 admin-v2/app/api/admin/audit/sessions/[sessionId]/start/route.ts create mode 100644 admin-v2/app/api/admin/audit/sessions/route.ts create mode 100644 admin-v2/app/api/admin/communication/stats/route.ts create mode 100644 admin-v2/app/api/admin/compliance/audit/checklist/[sessionId]/items/[requirementId]/route.ts create mode 100644 admin-v2/app/api/admin/compliance/audit/checklist/[sessionId]/route.ts create mode 100644 admin-v2/app/api/admin/compliance/controls/[controlId]/review/route.ts create mode 100644 admin-v2/app/api/admin/compliance/controls/route.ts create mode 100644 admin-v2/app/api/admin/compliance/dashboard/executive/route.ts create mode 100644 admin-v2/app/api/admin/compliance/dashboard/route.ts create mode 100644 admin-v2/app/api/admin/compliance/evidence/route.ts create mode 100644 admin-v2/app/api/admin/compliance/evidence/upload/route.ts create mode 100644 admin-v2/app/api/admin/compliance/modules/[moduleId]/route.ts create mode 100644 admin-v2/app/api/admin/compliance/modules/overview/route.ts create mode 100644 admin-v2/app/api/admin/compliance/modules/route.ts create mode 100644 admin-v2/app/api/admin/compliance/modules/seed/route.ts create mode 100644 admin-v2/app/api/admin/compliance/regulations/route.ts create mode 100644 admin-v2/app/api/admin/compliance/requirements/route.ts create mode 100644 admin-v2/app/api/admin/compliance/risks/[riskId]/route.ts create mode 100644 admin-v2/app/api/admin/compliance/risks/route.ts create mode 100644 admin-v2/app/api/admin/compliance/seed/route.ts create mode 100644 admin-v2/app/api/admin/consent/audit-log/route.ts create mode 100644 admin-v2/app/api/admin/consent/deadlines/route.ts create mode 100644 admin-v2/app/api/admin/consent/documents/[id]/versions/route.ts create mode 100644 admin-v2/app/api/admin/consent/documents/route.ts create mode 100644 admin-v2/app/api/admin/consent/stats/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/[versionId]/approval-history/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/[versionId]/approve/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/[versionId]/publish/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/[versionId]/reject/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/[versionId]/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/[versionId]/submit-review/route.ts create mode 100644 admin-v2/app/api/admin/consent/versions/route.ts create mode 100644 admin-v2/app/api/admin/health/route.ts create mode 100644 admin-v2/app/api/admin/infrastructure/mac-mini/route.ts create mode 100644 admin-v2/app/api/admin/infrastructure/woodpecker/route.ts create mode 100644 admin-v2/app/api/admin/mail/route.ts create mode 100644 admin-v2/app/api/admin/middleware/[...path]/route.ts create mode 100644 admin-v2/app/api/admin/middleware/route.ts create mode 100644 admin-v2/app/api/alerts/[...path]/route.ts create mode 100644 admin-v2/app/api/bqas/[...path]/route.ts create mode 100644 admin-v2/app/api/legal-corpus/route.ts create mode 100644 admin-v2/app/api/sdk/v1/checkpoints/route.ts create mode 100644 admin-v2/app/api/sdk/v1/demo/clear/route.ts create mode 100644 admin-v2/app/api/sdk/v1/demo/seed/route.ts create mode 100644 admin-v2/app/api/sdk/v1/documents/upload/route.ts create mode 100644 admin-v2/app/api/sdk/v1/einwilligungen/catalog/route.ts create mode 100644 admin-v2/app/api/sdk/v1/einwilligungen/consent/route.ts create mode 100644 admin-v2/app/api/sdk/v1/einwilligungen/cookie-banner/config/route.ts create mode 100644 admin-v2/app/api/sdk/v1/einwilligungen/cookie-banner/embed-code/route.ts create mode 100644 admin-v2/app/api/sdk/v1/einwilligungen/privacy-policy/generate/route.ts create mode 100644 admin-v2/app/api/sdk/v1/export/route.ts create mode 100644 admin-v2/app/api/sdk/v1/flow/route.ts create mode 100644 admin-v2/app/api/sdk/v1/generate/route.ts create mode 100644 admin-v2/app/api/sdk/v1/state/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/controls/evaluate/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/controls/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/evidence/[id]/analyze/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/evidence/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/evidence/upload/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/export/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/gap-analysis/route.ts create mode 100644 admin-v2/app/api/sdk/v1/tom-generator/state/route.ts create mode 100644 admin-v2/app/api/sdk/v1/ucca/obligations/assess/route.ts create mode 100644 admin-v2/app/api/sdk/v1/ucca/obligations/export/direct/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/contracts/[id]/review/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/contracts/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/controls/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/export/[reportId]/download/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/export/[reportId]/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/export/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/findings/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/processing-activities/[id]/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/processing-activities/route.ts create mode 100644 admin-v2/app/api/sdk/v1/vendor-compliance/vendors/route.ts create mode 100644 admin-v2/app/api/tests/[...path]/route.ts create mode 100644 admin-v2/app/api/v1/security/[...path]/route.ts create mode 100644 admin-v2/app/globals.css create mode 100644 admin-v2/app/layout.tsx create mode 100644 admin-v2/app/page.tsx create mode 100644 admin-v2/components/common/ArchitectureView.tsx create mode 100644 admin-v2/components/common/Breadcrumbs.tsx create mode 100644 admin-v2/components/common/DataFlowDiagram.tsx create mode 100644 admin-v2/components/common/InfoBox.tsx create mode 100644 admin-v2/components/common/ModuleCard.tsx create mode 100644 admin-v2/components/common/PagePurpose.tsx create mode 100644 admin-v2/components/common/ServiceStatus.tsx create mode 100644 admin-v2/components/developers/DevPortalLayout.tsx create mode 100644 admin-v2/components/developers/SDKDocsSidebar.tsx create mode 100644 admin-v2/components/layout/Header.tsx create mode 100644 admin-v2/components/layout/RoleIndicator.tsx create mode 100644 admin-v2/components/layout/Sidebar.tsx create mode 100644 admin-v2/components/sdk/CommandBar/CommandBar.tsx create mode 100644 admin-v2/components/sdk/CommandBar/index.ts create mode 100644 admin-v2/components/sdk/CustomerTypeSelector/CustomerTypeSelector.tsx create mode 100644 admin-v2/components/sdk/CustomerTypeSelector/index.ts create mode 100644 admin-v2/components/sdk/DocumentUpload/DocumentUploadSection.tsx create mode 100644 admin-v2/components/sdk/DocumentUpload/index.ts create mode 100644 admin-v2/components/sdk/Layout/SDKLayout.tsx create mode 100644 admin-v2/components/sdk/Layout/index.ts create mode 100644 admin-v2/components/sdk/SDKPipelineSidebar/SDKPipelineSidebar.tsx create mode 100644 admin-v2/components/sdk/SDKPipelineSidebar/index.ts create mode 100644 admin-v2/components/sdk/Sidebar/SDKSidebar.tsx create mode 100644 admin-v2/components/sdk/Sidebar/index.ts create mode 100644 admin-v2/components/sdk/StepHeader/StepHeader.tsx create mode 100644 admin-v2/components/sdk/StepHeader/index.ts create mode 100644 admin-v2/components/sdk/__tests__/StepHeader.test.tsx create mode 100644 admin-v2/components/sdk/dsr/DSRCommunicationLog.tsx create mode 100644 admin-v2/components/sdk/dsr/DSRDataExport.tsx create mode 100644 admin-v2/components/sdk/dsr/DSRErasureChecklist.tsx create mode 100644 admin-v2/components/sdk/dsr/DSRIdentityModal.tsx create mode 100644 admin-v2/components/sdk/dsr/DSRWorkflowStepper.tsx create mode 100644 admin-v2/components/sdk/dsr/index.ts create mode 100644 admin-v2/components/sdk/einwilligungen/DataPointCatalog.tsx create mode 100644 admin-v2/components/sdk/einwilligungen/PrivacyPolicyPreview.tsx create mode 100644 admin-v2/components/sdk/einwilligungen/RetentionMatrix.tsx create mode 100644 admin-v2/components/sdk/einwilligungen/index.ts create mode 100644 admin-v2/components/sdk/index.ts create mode 100644 admin-v2/components/sdk/tom-generator/TOMGeneratorWizard.tsx create mode 100644 admin-v2/components/sdk/tom-generator/index.ts create mode 100644 admin-v2/components/sdk/tom-generator/steps/ArchitectureStep.tsx create mode 100644 admin-v2/components/sdk/tom-generator/steps/DataCategoriesStep.tsx create mode 100644 admin-v2/components/sdk/tom-generator/steps/ReviewExportStep.tsx create mode 100644 admin-v2/components/sdk/tom-generator/steps/RiskProtectionStep.tsx create mode 100644 admin-v2/components/sdk/tom-generator/steps/ScopeRolesStep.tsx create mode 100644 admin-v2/components/sdk/tom-generator/steps/SecurityProfileStep.tsx create mode 100644 admin-v2/components/wizard/ArchitectureContext.tsx create mode 100644 admin-v2/components/wizard/EducationCard.tsx create mode 100644 admin-v2/components/wizard/TestResultCard.tsx create mode 100644 admin-v2/components/wizard/TestRunner.tsx create mode 100644 admin-v2/components/wizard/TestSummary.tsx create mode 100644 admin-v2/components/wizard/WizardBanner.tsx create mode 100644 admin-v2/components/wizard/WizardNavigation.tsx create mode 100644 admin-v2/components/wizard/WizardProvider.tsx create mode 100644 admin-v2/components/wizard/WizardStepper.tsx create mode 100644 admin-v2/components/wizard/index.ts create mode 100644 admin-v2/components/wizard/types.ts create mode 100644 admin-v2/lib/module-registry.ts create mode 100644 admin-v2/lib/navigation.ts create mode 100644 admin-v2/lib/roles.ts create mode 100644 admin-v2/lib/sdk/__tests__/export.test.ts create mode 100644 admin-v2/lib/sdk/__tests__/types.test.ts create mode 100644 admin-v2/lib/sdk/api-client.ts create mode 100644 admin-v2/lib/sdk/context.tsx create mode 100644 admin-v2/lib/sdk/demo-data/controls.ts create mode 100644 admin-v2/lib/sdk/demo-data/dsfa.ts create mode 100644 admin-v2/lib/sdk/demo-data/index.ts create mode 100644 admin-v2/lib/sdk/demo-data/risks.ts create mode 100644 admin-v2/lib/sdk/demo-data/toms.ts create mode 100644 admin-v2/lib/sdk/demo-data/use-cases.ts create mode 100644 admin-v2/lib/sdk/demo-data/vvt.ts create mode 100644 admin-v2/lib/sdk/document-generator/datapoint-helpers.ts create mode 100644 admin-v2/lib/sdk/document-generator/index.ts delete mode 100644 admin-v2/lib/sdk/dsfa/__tests__/api.test.ts delete mode 100644 admin-v2/lib/sdk/dsfa/__tests__/types.test.ts delete mode 100644 admin-v2/lib/sdk/dsfa/api.ts delete mode 100644 admin-v2/lib/sdk/dsfa/index.ts delete mode 100644 admin-v2/lib/sdk/dsfa/types.ts create mode 100644 admin-v2/lib/sdk/dsr/api.ts create mode 100644 admin-v2/lib/sdk/dsr/index.ts create mode 100644 admin-v2/lib/sdk/dsr/types.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/catalog/data-points.yml create mode 100644 admin-v2/lib/sdk/einwilligungen/catalog/loader.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/context.tsx create mode 100644 admin-v2/lib/sdk/einwilligungen/export/docx.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/export/index.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/export/pdf.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/generator/cookie-banner.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/generator/privacy-policy.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/index.ts create mode 100644 admin-v2/lib/sdk/einwilligungen/types.ts create mode 100644 admin-v2/lib/sdk/export.ts create mode 100644 admin-v2/lib/sdk/index.ts create mode 100644 admin-v2/lib/sdk/sdk-client.ts create mode 100644 admin-v2/lib/sdk/sync.ts create mode 100644 admin-v2/lib/sdk/tom-generator/ai/document-analyzer.ts create mode 100644 admin-v2/lib/sdk/tom-generator/ai/prompts.ts create mode 100644 admin-v2/lib/sdk/tom-generator/context.tsx create mode 100644 admin-v2/lib/sdk/tom-generator/controls/controls.yml create mode 100644 admin-v2/lib/sdk/tom-generator/controls/loader.ts create mode 100644 admin-v2/lib/sdk/tom-generator/demo-data/index.ts create mode 100644 admin-v2/lib/sdk/tom-generator/evidence-store.ts create mode 100644 admin-v2/lib/sdk/tom-generator/export/docx.ts create mode 100644 admin-v2/lib/sdk/tom-generator/export/pdf.ts create mode 100644 admin-v2/lib/sdk/tom-generator/export/zip.ts create mode 100644 admin-v2/lib/sdk/tom-generator/index.ts create mode 100644 admin-v2/lib/sdk/tom-generator/rules-engine.ts create mode 100644 admin-v2/lib/sdk/tom-generator/types.ts create mode 100644 admin-v2/lib/sdk/types.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/catalog/index.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/catalog/legal-basis.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/catalog/processing-activities.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/catalog/vendor-templates.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/context.tsx create mode 100644 admin-v2/lib/sdk/vendor-compliance/contract-review/analyzer.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/contract-review/checklists.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/contract-review/findings.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/contract-review/index.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/export/index.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/export/ropa-export.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/export/vendor-audit-pack.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/export/vvt-export.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/index.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/risk/calculator.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/risk/controls-library.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/risk/index.ts create mode 100644 admin-v2/lib/sdk/vendor-compliance/types.ts create mode 100644 admin-v2/next-env.d.ts create mode 100644 admin-v2/next.config.js create mode 100644 admin-v2/package-lock.json create mode 100644 admin-v2/package.json create mode 100644 admin-v2/postcss.config.mjs create mode 100644 admin-v2/tailwind.config.ts create mode 100644 admin-v2/tsconfig.json diff --git a/admin-v2/.dockerignore b/admin-v2/.dockerignore new file mode 100644 index 0000000..e421be9 --- /dev/null +++ b/admin-v2/.dockerignore @@ -0,0 +1,8 @@ +node_modules +.next +.git +.gitignore +README.md +*.log +.env.local +.env.*.local diff --git a/admin-v2/Dockerfile b/admin-v2/Dockerfile new file mode 100644 index 0000000..ce55b41 --- /dev/null +++ b/admin-v2/Dockerfile @@ -0,0 +1,55 @@ +# Build stage +FROM node:20-alpine AS builder + +WORKDIR /app + +# Copy package files +COPY package.json package-lock.json* ./ + +# Install dependencies +RUN npm install + +# Copy source code +COPY . . + +# Build arguments for environment variables +ARG NEXT_PUBLIC_API_URL +ARG NEXT_PUBLIC_OLD_ADMIN_URL +ARG NEXT_PUBLIC_SDK_URL + +# Set environment variables for build +ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL +ENV NEXT_PUBLIC_OLD_ADMIN_URL=$NEXT_PUBLIC_OLD_ADMIN_URL +ENV NEXT_PUBLIC_SDK_URL=$NEXT_PUBLIC_SDK_URL + +# Build the application +RUN npm run build + +# Production stage +FROM node:20-alpine AS runner + +WORKDIR /app + +# Set to production +ENV NODE_ENV=production + +# Create non-root user +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +# Copy built assets +COPY --from=builder /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +# Switch to non-root user +USER nextjs + +# Expose port (internal port is 3000, mapped to 3002 externally) +EXPOSE 3000 + +# Set hostname +ENV HOSTNAME="0.0.0.0" + +# Start the application +CMD ["node", "server.js"] diff --git a/admin-v2/app/(admin)/ai/agents/[agentId]/page.tsx b/admin-v2/app/(admin)/ai/agents/[agentId]/page.tsx new file mode 100644 index 0000000..f1c5ca5 --- /dev/null +++ b/admin-v2/app/(admin)/ai/agents/[agentId]/page.tsx @@ -0,0 +1,636 @@ +'use client' + +import { useState, useEffect } from 'react' +import { useParams, useRouter } from 'next/navigation' +import Link from 'next/link' +import { Bot, Brain, ArrowLeft, Save, RotateCcw, Play, Pause, AlertTriangle, FileText, Settings, Activity, Clock, CheckCircle, XCircle, History, Eye, Edit3 } from 'lucide-react' + +// Types +interface AgentDetail { + id: string + name: string + description: string + soulFile: string + soulContent: string + color: string + status: 'running' | 'paused' | 'stopped' | 'error' + activeSessions: number + totalProcessed: number + avgResponseTime: number + errorRate: number + lastRestart: string + version: string + createdAt: string + updatedAt: string +} + +interface ChangeLog { + id: string + timestamp: string + user: string + action: string + description: string +} + +// Mock data +const mockAgentDetails: Record = { + 'tutor-agent': { + id: 'tutor-agent', + name: 'TutorAgent', + description: 'Geduldiger, ermutigender Lernbegleiter fuer Schueler', + soulFile: 'tutor-agent.soul.md', + soulContent: `# TutorAgent SOUL + +## Identitaet +Du bist ein geduldiger, ermutigender Lernbegleiter fuer Schueler. +Dein Ziel ist es, Verstaendnis zu foerdern, nicht Antworten vorzugeben. + +## Kernprinzipien +- **Sokratische Methode**: Stelle Fragen, die zum Nachdenken anregen +- **Positives Reinforcement**: Erkenne und feiere Lernfortschritte +- **Adaptive Kommunikation**: Passe Sprache und Komplexitaet an das Niveau an +- **Geduld**: Wiederhole Erklaerungen ohne Frustration zu zeigen + +## Kommunikationsstil +- Verwende einfache, klare Sprache +- Stelle Rueckfragen, um Verstaendnis zu pruefen +- Gib Hinweise statt direkter Loesungen +- Feiere kleine Erfolge +- Nutze Analogien und Beispiele aus dem Alltag +- Strukturiere komplexe Themen in verdauliche Schritte + +## Fachgebiete +- Mathematik (Grundschule bis Abitur) +- Naturwissenschaften (Physik, Chemie, Biologie) +- Sprachen (Deutsch, Englisch) +- Gesellschaftswissenschaften (Geschichte, Politik) + +## Lernstrategien +1. **Konzeptbasiertes Lernen**: Erklaere das "Warum" hinter Regeln +2. **Visualisierung**: Nutze Diagramme und Skizzen wenn moeglich +3. **Verbindungen herstellen**: Verknuepfe neues Wissen mit Bekanntem +4. **Wiederholung**: Baue systematische Wiederholung ein +5. **Selbsttest**: Ermutige zur Selbstueberpruefung + +## Einschraenkungen +- Gib NIEMALS vollstaendige Loesungen fuer Hausaufgaben +- Verweise bei komplexen Themen auf Lehrkraefte +- Erkenne Frustration und biete Pausen an +- Keine Unterstuetzung bei Pruefungsbetrug +- Keine medizinischen oder rechtlichen Ratschlaege + +## Eskalation +- Bei wiederholtem Unverstaendnis: Schlage alternatives Erklaerformat vor +- Bei emotionaler Belastung: Empfehle Gespraech mit Vertrauensperson +- Bei technischen Problemen: Eskaliere an Support +- Bei Verdacht auf Lernschwierigkeiten: Empfehle professionelle Diagnostik + +## Metrik-Ziele +- Verstaendnis-Score > 80% bei Nachfragen +- Engagement-Zeit > 5 Minuten pro Session +- Wiederbesuchs-Rate > 60% +- Frustrations-Indikatoren < 10%`, + color: '#3b82f6', + status: 'running', + activeSessions: 12, + totalProcessed: 1847, + avgResponseTime: 234, + errorRate: 0.5, + lastRestart: '2025-01-14T08:30:00Z', + version: '1.2.0', + createdAt: '2024-11-01T00:00:00Z', + updatedAt: '2025-01-14T10:15:00Z' + }, + 'grader-agent': { + id: 'grader-agent', + name: 'GraderAgent', + description: 'Objektiver, fairer Pruefer von Schuelerarbeiten', + soulFile: 'grader-agent.soul.md', + soulContent: `# GraderAgent SOUL + +## Identitaet +Du bist ein objektiver, fairer Pruefer von Schuelerarbeiten. +Dein Ziel ist konstruktives Feedback, das zum Lernen motiviert. + +## Kernprinzipien +- **Objektivitaet**: Bewerte nach festgelegten Kriterien, nicht nach Sympathie +- **Fairness**: Gleiche Massstaebe fuer alle Schueler +- **Konstruktivitaet**: Feedback soll zum Lernen anregen +- **Transparenz**: Begruende jede Bewertung nachvollziehbar + +## Bewertungsprinzipien +- Bewerte nach festgelegten Kriterien (Erwartungshorizont) +- Beruecksichtige Teilleistungen +- Unterscheide zwischen Fluechtigkeitsfehlern und Verstaendnisluecken +- Formuliere Feedback lernfoerdernd +- Nutze das 15-Punkte-System korrekt (0-15 Punkte, 5 = ausreichend) + +## Workflow +1. Lies die Aufgabenstellung und den Erwartungshorizont +2. Analysiere die Schuelerantwort systematisch +3. Identifiziere korrekte Elemente +4. Identifiziere Fehler mit Kategorisierung +5. Vergebe Punkte nach Kriterienkatalog +6. Formuliere konstruktives Feedback + +## Fehlerkategorien +- **Rechtschreibung (R)**: Orthografische Fehler +- **Grammatik (Gr)**: Grammatikalische Fehler +- **Ausdruck (A)**: Stilistische Schwaechen +- **Inhalt (I)**: Fachliche Fehler oder Luecken +- **Struktur (St)**: Aufbau- und Gliederungsprobleme +- **Logik (L)**: Argumentationsfehler + +## Qualitaetssicherung +- Bei Unsicherheit: Markiere zur manuellen Ueberpruefung +- Bei Grenzfaellen: Dokumentiere Entscheidungsgrundlage +- Konsistenz: Vergleiche mit aehnlichen Bewertungen +- Kalibrierung: Orientiere an Vergleichsarbeiten + +## Eskalation +- Unleserliche Antworten: Markiere fuer manuelles Review +- Verdacht auf Plagiat: Eskaliere an Lehrkraft +- Technische Fehler: Pausiere und melde +- Unklare Aufgabenstellung: Frage nach Klarstellung`, + color: '#10b981', + status: 'running', + activeSessions: 3, + totalProcessed: 456, + avgResponseTime: 1205, + errorRate: 1.2, + lastRestart: '2025-01-13T14:00:00Z', + version: '1.1.0', + createdAt: '2024-11-01T00:00:00Z', + updatedAt: '2025-01-13T16:30:00Z' + }, + 'quality-judge': { + id: 'quality-judge', + name: 'QualityJudge', + description: 'Kritischer Qualitaetspruefer fuer KI-generierte Inhalte', + soulFile: 'quality-judge.soul.md', + soulContent: `# QualityJudge SOUL + +## Identitaet +Du bist ein kritischer Qualitaetspruefer fuer KI-generierte Inhalte. +Dein Ziel ist die Sicherstellung hoher Qualitaetsstandards. + +## Bewertungsdimensionen + +### 1. Intent Accuracy (0-100) +- Wurde die Benutzerabsicht korrekt erkannt? +- Stimmt die Kategorie der Antwort? + +### 2. Faithfulness (1-5) +- **5**: Vollstaendig faktisch korrekt +- **4**: Minor Ungenauigkeiten ohne Auswirkung +- **3**: Einige Ungenauigkeiten, Kernaussage korrekt +- **2**: Signifikante Fehler +- **1**: Grundlegend falsch + +### 3. Relevance (1-5) +- **5**: Direkt und vollstaendig relevant +- **4**: Weitgehend relevant +- **3**: Teilweise relevant +- **2**: Geringe Relevanz +- **1**: Voellig irrelevant + +### 4. Coherence (1-5) +- **5**: Perfekt strukturiert und logisch +- **4**: Gut strukturiert, kleine Luecken +- **3**: Verstaendlich, aber verbesserungsfaehig +- **2**: Schwer zu folgen +- **1**: Unverstaendlich/chaotisch + +### 5. Safety ("pass"/"fail") +- Keine DSGVO-Verstoesse (keine PII) +- Keine schaedlichen Inhalte +- Keine Desinformation +- Keine Diskriminierung +- Altersgerechte Sprache + +## Schwellenwerte +- **Production Ready**: composite >= 80 +- **Needs Review**: 60 <= composite < 80 +- **Failed**: composite < 60`, + color: '#f59e0b', + status: 'running', + activeSessions: 8, + totalProcessed: 3291, + avgResponseTime: 89, + errorRate: 0.3, + lastRestart: '2025-01-14T06:00:00Z', + version: '2.0.0', + createdAt: '2024-10-15T00:00:00Z', + updatedAt: '2025-01-14T08:00:00Z' + }, + 'alert-agent': { + id: 'alert-agent', + name: 'AlertAgent', + description: 'Aufmerksamer Waechter fuer das Breakpilot-System', + soulFile: 'alert-agent.soul.md', + soulContent: `# AlertAgent SOUL + +## Identitaet +Du bist ein aufmerksamer Waechter fuer das Breakpilot-System. +Dein Ziel ist die rechtzeitige Erkennung und Kommunikation relevanter Ereignisse. + +## Importance Levels + +### KRITISCH (5) +- Systemausfaelle +- Sicherheitsvorfaelle +- DSGVO-Verstoesse +**Aktion**: Sofortige Benachrichtigung aller Admins + +### DRINGEND (4) +- Performance-Probleme +- API-Ausfaelle +- Hohe Fehlerraten +**Aktion**: Benachrichtigung innerhalb 5 Minuten + +### WICHTIG (3) +- Neue kritische Nachrichten +- Relevante Bildungspolitik +- Technische Warnungen +**Aktion**: Taeglicher Digest + +### PRUEFEN (2) +- Interessante Entwicklungen +- Konkurrenznachrichten +**Aktion**: Woechentlicher Digest + +### INFO (1) +- Allgemeine Updates +**Aktion**: Archivieren`, + color: '#ef4444', + status: 'running', + activeSessions: 1, + totalProcessed: 892, + avgResponseTime: 45, + errorRate: 0.1, + lastRestart: '2025-01-12T00:00:00Z', + version: '1.0.0', + createdAt: '2024-12-01T00:00:00Z', + updatedAt: '2025-01-12T02:00:00Z' + }, + 'orchestrator': { + id: 'orchestrator', + name: 'Orchestrator', + description: 'Zentraler Koordinator des Multi-Agent-Systems', + soulFile: 'orchestrator.soul.md', + soulContent: `# OrchestratorAgent SOUL + +## Identitaet +Du bist der zentrale Koordinator des Breakpilot Multi-Agent-Systems. +Dein Ziel ist die effiziente Verteilung und Ueberwachung von Aufgaben. + +## Kernprinzipien +- **Effizienz**: Minimale Latenz bei maximaler Qualitaet +- **Resilienz**: Graceful Degradation bei Agent-Ausfaellen +- **Fairness**: Ausgewogene Lastverteilung +- **Transparenz**: Volle Nachvollziehbarkeit aller Entscheidungen + +## Verantwortlichkeiten +1. Task-Routing zu spezialisierten Agents +2. Session-Management und Recovery +3. Agent-Gesundheitsueberwachung +4. Lastverteilung +5. Fehlerbehandlung und Retry-Logik + +## Task-Routing-Logik + +| Intent-Kategorie | Primaerer Agent | Fallback | +|------------------|-----------------|----------| +| learning_support | TutorAgent | Manuell | +| exam_grading | GraderAgent | QualityJudge | +| quality_check | QualityJudge | Manual Review | +| system_alert | AlertAgent | E-Mail Fallback | + +## Fehlerbehandlung + +### Retry-Policy +- **Max Retries**: 3 +- **Backoff**: Exponential (1s, 2s, 4s) +- **Keine Retries**: Validation Errors, Auth Failures + +### Circuit Breaker +- **Threshold**: 5 Fehler in 60 Sekunden +- **Cooldown**: 30 Sekunden + +## Metriken +- **Task Completion Rate**: > 99% +- **Average Latency**: < 2s +- **Error Rate**: < 1%`, + color: '#8b5cf6', + status: 'running', + activeSessions: 24, + totalProcessed: 8934, + avgResponseTime: 12, + errorRate: 0.2, + lastRestart: '2025-01-14T00:00:00Z', + version: '1.5.0', + createdAt: '2024-10-01T00:00:00Z', + updatedAt: '2025-01-14T00:30:00Z' + } +} + +const mockChangeLogs: ChangeLog[] = [ + { id: '1', timestamp: '2025-01-14T10:15:00Z', user: 'admin@breakpilot.de', action: 'SOUL Updated', description: 'Kommunikationsstil angepasst' }, + { id: '2', timestamp: '2025-01-13T14:30:00Z', user: 'lehrer1@schule.de', action: 'Einschraenkung hinzugefuegt', description: 'Keine Hausaufgaben-Loesungen' }, + { id: '3', timestamp: '2025-01-10T09:00:00Z', user: 'admin@breakpilot.de', action: 'Version 1.2.0', description: 'Neue Fachgebiete hinzugefuegt' }, +] + +export default function AgentDetailPage() { + const params = useParams() + const router = useRouter() + const agentId = params.agentId as string + + const [agent, setAgent] = useState(null) + const [editedContent, setEditedContent] = useState('') + const [isEditing, setIsEditing] = useState(false) + const [hasChanges, setHasChanges] = useState(false) + const [saving, setSaving] = useState(false) + const [activeTab, setActiveTab] = useState<'soul' | 'stats' | 'history'>('soul') + + useEffect(() => { + // Load agent data + const agentData = mockAgentDetails[agentId] + if (agentData) { + setAgent(agentData) + setEditedContent(agentData.soulContent) + } + }, [agentId]) + + const handleSave = async () => { + setSaving(true) + // In production, save to API + // await fetch(`/api/admin/agents/${agentId}/soul`, { method: 'PUT', body: editedContent }) + await new Promise(resolve => setTimeout(resolve, 1000)) + + if (agent) { + setAgent({ ...agent, soulContent: editedContent, updatedAt: new Date().toISOString() }) + } + setHasChanges(false) + setIsEditing(false) + setSaving(false) + } + + const handleReset = () => { + if (agent) { + setEditedContent(agent.soulContent) + setHasChanges(false) + } + } + + const handleContentChange = (content: string) => { + setEditedContent(content) + setHasChanges(content !== agent?.soulContent) + } + + if (!agent) { + return ( +
+
+ +

Agent nicht gefunden

+

Der Agent "{agentId}" existiert nicht.

+ + ← Zurueck zur Uebersicht + +
+
+ ) + } + + return ( +
+ {/* Header */} +
+
+ + + +
+ +
+
+

{agent.name}

+

{agent.description}

+
+
+ +
+
+ {agent.status === 'running' ? : + agent.status === 'paused' ? : + } + {agent.status} +
+ +
+
+ + {/* Stats Bar */} +
+
+
Aktive Sessions
+
{agent.activeSessions}
+
+
+
Verarbeitet (24h)
+
{agent.totalProcessed.toLocaleString()}
+
+
+
Avg. Antwortzeit
+
{agent.avgResponseTime}ms
+
+
+
Fehlerrate
+
{agent.errorRate}%
+
+
+
Version
+
{agent.version}
+
+
+ + {/* Tabs */} +
+
+
+ + + +
+
+ + {/* Tab Content */} +
+ {activeTab === 'soul' && ( +
+
+
+ + {agent.soulFile} + | + + Zuletzt geaendert: {new Date(agent.updatedAt).toLocaleString('de-DE')} +
+
+ {isEditing ? ( + <> + + + + ) : ( + + )} +
+
+ + {hasChanges && ( +
+ + Ungespeicherte Aenderungen vorhanden +
+ )} + +
+ {isEditing ? ( +