main #11

Merged
mstoeck3 merged 66 commits from main into forensic-ai 2025-08-11 12:02:56 +00:00
2 changed files with 115 additions and 122 deletions
Showing only changes of commit 20b3bd44ca - Show all commits

2
.gitignore vendored
View File

@ -11,6 +11,7 @@ _site/
dist/ dist/
.astro/ .astro/
.astro/*
# Environment variables # Environment variables
.env .env
@ -85,3 +86,4 @@ temp/
.astro/data-store.json .astro/data-store.json
.astro/content.d.ts .astro/content.d.ts
prompt.md prompt.md
.astro/settings.json

View File

@ -1,222 +1,213 @@
// src/config/prompts.ts - Centralized German prompts for AI pipeline // src/config/prompts.ts
export const AI_PROMPTS = { export const AI_PROMPTS = {
toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => { toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => {
const modeInstruction = mode === 'workflow' const modeInstruction = mode === 'workflow'
? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW mit mehreren Tools/Methoden über verschiedene Phasen. Wählen Sie 15-25 Methoden/Tools aus, die den vollständigen Untersuchungszyklus (Datensammlung - Auswertung - Analyse - Berichterstattung) abdecken.' ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW über mehrere Phasen. Wählen Sie 1525 Elemente, die den Zyklus Datensammlung → Auswertung → Analyse → Bericht abdecken.'
: 'Der Benutzer möchte SPEZIFISCHE TOOLS/METHODEN, die ihr konkretes Problem direkt lösen. Wählen Sie 4-10 Methoden/Tools aus, die am relevantesten und effektivsten sind.'; : 'Der Benutzer möchte SPEZIFISCHE LÖSUNGEN. Wählen Sie 410 Elemente, die das Problem direkt adressieren. Beschreibungen dürfen hier ausführlicher ausfallen, um technische Tiefe zu vermitteln.';
return `Sie sind ein DFIR-Experte mit Zugang zur kompletten forensischen Methoden/Tool-Datenbank. Sie müssen die relevantesten Methoden, Tools und Konzepte für diese spezifische Anfrage auswählen. return `Sie sind DFIR-Experte mit Zugriff auf eine vollständige Datenbank aus Methoden (type: "method") und Tools (type: "software"/"os"). Ihre Aufgabe ist es, die relevantesten Elemente für die Anfrage auszuwählen.
AUSWAHLMETHODE: ${selectionMethod} AUSWAHLMETHODE: ${selectionMethod}
${selectionMethod === 'embeddings_candidates' ? ${selectionMethod === 'embeddings_candidates' ?
'Diese Methoden/Tools wurden durch Vektor-Ähnlichkeit vorgefiltert, sie sind bereits relevant. Ihre Aufgabe ist es, die BESTEN aus diesem relevanten Set auszuwählen. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.' : 'Die angezeigten Kandidaten wurden bereits semantisch vorgefiltert. Wählen Sie daraus die BESTEN.' :
'Sie haben Zugang zur vollständigen Methoden/Tool-Datenbank. Wählen Sie die relevantesten Methoden/Tools für die Anfrage aus. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.'} 'Sie sehen die vollständige Datenbasis. Wählen Sie die relevantesten Elemente.'}
WICHTIG MISCHUNG ERZWINGEN:
- Der finale Vorschlag MUSS eine Mischung aus Methoden UND Tools enthalten (sofern verfügbar).
- Ziel: grob 4060 % Methoden und 4060 % Tools. Wenn eine Kategorie knapp ist, wählen Sie so ausgewogen wie möglich. Begründen Sie Abweichungen im reasoning.
- Bezeichnen Sie Elemente konsequent als "Methode" oder "Tool" je nach Typ.
${modeInstruction} ${modeInstruction}
BENUTZER-ANFRAGE: "${userQuery}" BENUTZER-ANFRAGE: "${userQuery}"
KRITISCHE AUSWAHLPRINZIPIEN: KRITISCHE AUSWAHLPRINZIPIEN:
1. **KONTEXT ÜBER POPULARITÄT**: Verwenden Sie nicht automatisch "berühmte" Tools wie Volatility, Wireshark oder Autopsy nur weil sie bekannt sind. Wählen Sie basierend auf den SPEZIFISCHEN Szenario-Anforderungen. 1) KONTEXT > POPULARITÄT: Nicht automatisch zu populären Tools greifen. Wählen Sie strikt szenariobezogen.
2) METHODIK vs. SOFTWARE:
- Dringend/Triage Methoden für schnelle Reaktion priorisieren.
- Zeitkritisch Triage-Methoden vor Tiefenanalyse-Tools.
- Umfassende Analyse dann spezialisierte Tools ergänzen.
3) SPEZIFITÄT:
- ICS/SCADA spezialisierte ICS-Methoden/-Tools statt generischer Netzwerk-Tools.
- Mobile (Android/iOS) mobile-spezifische Methoden/Tools.
- Speicheranalyse dringend schnelle Memory-Methoden/Tools vor Vollanalyse.
4) LESEN SIE DIE VOLLBESCHREIBUNG UND METADATEN (Tags, Plattformen, Phasen, Lizenz, Access).
2. **METHODOLOGIE vs SOFTWARE**: UI-KÜRZE:
- Für SCHNELLE/DRINGENDE Szenarien Priorisieren Sie METHODEN und schnelle Antwort-Ansätze - Workflow-Modus: kurze, prägnante Beschreibungen.
- Für ZEITKRITISCHE Vorfälle Wählen Sie Triage-Methoden über tiefe Analyse-Tools - Spezifischer Modus: Beschreibungen dürfen deutlich länger sein (mehr technische Details, bis zu 200300 Zeichen in Kurzfassung).
- Für UMFASSENDE Analysen Dann betrachten Sie detaillierte Software-Tools
- METHODEN (Typ: "method") sind oft besser als SOFTWARE für prozedurale Anleitung, eine gute Mischung ist aber zwingend erforderlich.
3. **SZENARIO-SPEZIFISCHE LOGIK**: Wählen Sie die relevantesten Elemente (max ${maxSelectedItems} gesamt).
- "Schnell/Quick/Dringend/Triage" Szenarien Rapid Incident Response und Triage METHODE > Volatility oder ähnliche
- "Industrial/SCADA/ICS" Szenarien Spezialisierte ICS-Tools > generische Netzwerk-Tools
- "Mobile/Android/iOS" Szenarien Mobile-spezifische Tools > Desktop-Forensik-Tools
- "Speicher-Analyse dringend benötigt" Schnelle Speicher-Tools/Methoden > umfassende Volatility-Analyse oder ähnliche
ANALYSE-ANWEISUNGEN: ANTWORTFORMAT (JSON, SCHEMA UNVERÄNDERT):
1. Lesen Sie die VOLLSTÄNDIGE Beschreibung jedes Tools/Konzepts
2. Berücksichtigen Sie ALLE Tags, Plattformen, verwandte Tools und Metadaten und Beschreibungen
3. **PASSENDE DRINGLICHKEIT**: Schnelle Szenarien brauchen schnelle Methoden, nicht tiefe Analyse-Tools
4. **PASSENDE SPEZIFITÄT**: Spezialisierte Szenarien brauchen spezialisierte Tools, nicht generische
5. **BERÜCKSICHTIGEN SIE DEN TYP**: Methoden bieten prozedurale Anleitung, Software bietet technische Fähigkeiten
Wählen Sie die relevantesten Elemente aus (max ${maxSelectedItems} insgesamt).
Antworten Sie NUR mit diesem JSON-Format:
{ {
"selectedTools": ["Methode/Tool Name 1", "Methode/Tool Name 2", ...], "selectedTools": ["Name 1", "Name 2", ...],
"selectedConcepts": ["Konzept Name 1", "Konzept Name 2", ...], "selectedConcepts": ["Konzept 1", "Konzept 2", ...],
"reasoning": "Detaillierte Erklärung, warum diese spezifischen Methoden/Tools für diese Anfrage ausgewählt wurden, und warum bestimmte populäre Tools NICHT ausgewählt wurden, falls sie für den Szenario-Kontext ungeeignet waren" "reasoning": "Begründen Sie die Auswahl, die erzwungene Mischung Methode/Tool und warum bestimmte populäre Elemente nicht geeignet sind. Halten Sie die Sprache präzise und UI-tauglich."
}`; }`;
}, },
scenarioAnalysis: (isWorkflow: boolean, userQuery: string) => { scenarioAnalysis: (isWorkflow: boolean, userQuery: string) => {
const analysisType = isWorkflow ? 'Untersuchungsszenario' : 'technische Problem'; const analysisType = isWorkflow ? 'Untersuchungsszenario' : 'technische Problemstellung';
const considerations = isWorkflow ? const considerations = isWorkflow ?
`- Angriffsvektoren und Bedrohungsmodellierung nach MITRE ATT&CK `- Angriffsvektoren (MITRE ATT&CK) und Bedrohungsmodell
- Betroffene Systeme und kritische Infrastrukturen - Betroffene Systeme/Assets und Kritikalität
- Zeitkritische Faktoren und Beweiserhaltung - Zeitdruck, Beweiserhalt, Chain of Custody
- Forensische Artefakte und Datenquellen` : - Relevante Artefakte und Datenquellen` :
`- Spezifische forensische Herausforderungen `- Konkrete forensische Hürden
- Verfügbare Datenquellen und deren Integrität - Verfügbare Datenquellen und Integrität
- Methodische Anforderungen für rechtssichere Analyse`; - Anforderungen für rechtssichere Auswertung`;
return `Sie sind ein erfahrener DFIR-Experte. Analysieren Sie das folgende ${analysisType}. return `Analysieren Sie das ${analysisType} ${isWorkflow ? 'kompakt (max. 120 Wörter)' : 'ausführlicher (max. 160 Wörter)'}.
${isWorkflow ? 'UNTERSUCHUNGSSZENARIO' : 'TECHNISCHES PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
Führen Sie eine systematische ${isWorkflow ? 'Szenario-Analyse' : 'Problem-Analyse'} durch und berücksichtigen Sie dabei:
Berücksichtigen:
${considerations} ${considerations}
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen, Aufzählungen oder Markdown-Formatierung. Maximum 120 Wörter.`; Stil: Deutsch, ohne Listen/Markdown; klare, präzise Formulierungen, im spezifischen Modus mit mehr technischen Details.`;
}, },
investigationApproach: (isWorkflow: boolean, userQuery: string) => { investigationApproach: (isWorkflow: boolean, userQuery: string) => {
const approachType = isWorkflow ? 'Untersuchungsansatz' : 'Lösungsansatz'; const approachType = isWorkflow ? 'Untersuchungsansatz' : 'Lösungsansatz';
const considerations = isWorkflow ? const considerations = isWorkflow ?
`- Triage-Prioritäten nach forensischer Dringlichkeit `- Triage-Prioritäten nach forensischer Dringlichkeit
- Phasenabfolge nach Methodik (Datensammlung - Auswertung - Analyse - Bericht) - Phasenabfolge: Datensammlung Auswertung Analyse Bericht
- Kontaminationsvermeidung und forensische Isolierung - Kontaminationsvermeidung/Isolierung
- Objektivität und Transparenz` : - Objektivität und Nachvollziehbarkeit` :
`- Methodik-Auswahl nach wissenschaftlichen Kriterien `- Methodenwahl nach wissenschaftlichen Kriterien
- Validierung und Verifizierung der gewählten Ansätze - Validierung/Verifizierung der Vorgehensweise
- Integration in bestehende forensische Workflows - Integration in bestehende DFIR-Workflows
- Objektivität, Transparenz, Reproduzierbarkeit`; - Reproduzierbarkeit und Transparenz`;
return `Basierend auf der Analyse entwickeln Sie einen fundierten ${approachType} nach Methodik (Datensammlung - Auswertung - Analyse - Bericht). return `Formulieren Sie einen ${isWorkflow ? 'kompakten' : 'ausführlicheren'} ${approachType} (${isWorkflow ? 'max. 120 Wörter' : 'max. 160 Wörter'}), der explizit eine Mischung aus Methoden und Tools vorsieht.
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
Entwickeln Sie einen systematischen ${approachType} unter Berücksichtigung von: Berücksichtigen:
${considerations} ${considerations}
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.`; Stil: Deutsch, ohne Listen/Markdown, UI-tauglich.${isWorkflow ? '' : ' Mehr technische Tiefe und Kontext erwünscht.'}`;
}, },
criticalConsiderations: (isWorkflow: boolean, userQuery: string) => { criticalConsiderations: (isWorkflow: boolean, userQuery: string) => {
const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'wichtige methodische Voraussetzungen'; const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'methodische Voraussetzungen';
const aspects = isWorkflow ? const aspects = isWorkflow ?
`- zeitkritische Beweissicherung vs. Gründlichkeit `- Beweissicherung vs. Gründlichkeit (Zeitdruck)
- Chain of custody requirements und rechtliche Verwertbarkeit - Chain of Custody und rechtliche Verwertbarkeit
- Transparenz und Reproduzierbarkeit` : - Transparenz, Reproduzierbarkeit, Dokumentationspflichten` :
`- Methoden-/Tool-Validierung und Nachvollziehbarkeit `- Validierung/Nachvollziehbarkeit der Methode/Tools
- False positive/negative Risiken bei der gewählten Methodik - Risiken für False Positives/Negatives
- Qualifikationsanforderungen für die Durchführung - Qualifikationsanforderungen und Reporting-Standards`;
- Dokumentations- und Reporting-Standards`;
return `Identifizieren Sie ${considerationType} für diesen Fall. return `Identifizieren Sie ${considerationType} ${isWorkflow ? 'knapp (max. 120 Wörter)' : 'ausführlicher (max. 160 Wörter)'}.
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
Berücksichtigen Sie folgende forensische Aspekte: Aspekte:
${aspects} ${aspects}
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.`; Stil: Deutsch, ohne Listen/Markdown.${isWorkflow ? '' : ' Etwas mehr technische Details zulassen.'}`;
}, },
phaseToolSelection: (userQuery: string, phase: any, phaseTools: any[]) => { phaseToolSelection: (userQuery: string, phase: any, phaseTools: any[]) => {
return `Wählen Sie 2-3 Methoden/Tools für die Phase "${phase.name}" und bewerten Sie deren Aufgaben-Eignung VERGLEICHEND. const items = phaseTools.map((tool: any, index: number) => {
const typ = tool.type === 'method' ? 'Methode' : 'Tool';
const descLimit = 220;
const desc = (tool.description || '').replace(/\s+/g, ' ').trim().slice(0, descLimit);
return `${index + 1}. [${typ}] ${tool.name}: ${desc}\n - Plattformen: ${tool.platforms?.join(', ') || 'N/A'}\n - Skill Level: ${tool.skillLevel}\n - Tags: ${tool.tags?.join(', ') || 'N/A'}`;
}).join('\n\n');
return `Wählen Sie 23 Elemente für die Phase "${phase.name}" und bewerten Sie diese VERGLEICHEND. Erzwingen Sie eine Mischung aus mindestens einer Methode und einem Tool, sofern verfügbar.
SZENARIO: "${userQuery}" SZENARIO: "${userQuery}"
SPEZIFISCHE PHASE: ${phase.name} - ${phase.description || 'Forensische Untersuchungsphase'} PHASE: ${phase.name} ${phase.description || 'Forensische Untersuchungsphase'}
VERFÜGBARE TOOLS FÜR ${phase.name.toUpperCase()}: VERFÜGBARE ELEMENTE FÜR ${phase.name.toUpperCase()}:
${phaseTools.map((tool: any, index: number) => `${index + 1}. ${tool.name}: ${tool.description.slice(0, 150)}... ${items}
- Plattformen: ${tool.platforms?.join(', ') || 'N/A'}
- Skill Level: ${tool.skillLevel}
- Tags: ${tool.tags?.join(', ') || 'N/A'}`).join('\n\n')}
Bewerten Sie ALLE Methoden/Tools vergleichend für diese spezifische Aufgabe UND Phase. Wählen Sie die 2-3 besten aus. Es sollte eine Mischung aus Methoden und Tools sein, sofern verfügbar.
BEWERTUNGSKRITERIEN: BEWERTUNGSKRITERIEN:
- Wie gut löst die Methode/das Tool das forensische Problem im SZENARIO-Kontext? - Eignung für das konkrete Szenario und GENAU diese Phase
- Wie gut passt es zur spezifischen PHASE "${phase.name}"? - Vergleich zu den Alternativen in der Liste
- Wie vergleicht es sich mit den anderen verfügbaren Methoden/Tools für diese Phase? - Praktikabilität (Zeit, Setup, Reproduzierbarkeit)
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format: UI-KÜRZE:
- Workflow-Modus: 13Satz Kurzfassung (200260 Zeichen) + 12 kurze Details.
- Spezifischer Modus: Kurzfassung darf länger sein (250320 Zeichen) + 23 detailreichere Sätze.
- Bezeichnen Sie Elemente als "Methode" oder "Tool".
ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
[ [
{ {
"toolName": "Exakter Methoden/Tool-Name", "toolName": "Exakter Methoden/Tool-Name",
"taskRelevance": 85, "taskRelevance": 0100,
"justification": "Vergleichende Begründung warum diese Methode/dieses Tool für diese Phase und Aufgabe besser/schlechter als die anderen geeignet ist", "justification": "Kurzfassung zuerst (Workflow: ≈200260 Zeichen, Spezifisch: ≈250320 Zeichen). Danach Begründung mit Vergleich und technischen Details.",
"limitations": ["Spezifische Einschränkung 1", "Einschränkung 2"] "limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"]
} }
] ]
WICHTIG: Wählen Sie nur die 23 BESTEN Elemente und achten Sie auf die Mischung Methode+Tool.`;
- taskRelevance: 0-100 Score basierend auf Szenario-Eignung UND Phasen-Passung im VERGLEICH zu anderen Tools
- Nur die 2-3 BESTEN Methoden/Tools auswählen und bewerten
- justification soll VERGLEICHEND sein ("besser als X weil...", "für diese Phase ideal weil...")`;
}, },
toolEvaluation: (userQuery: string, tool: any, rank: number, taskRelevance: number) => { toolEvaluation: (userQuery: string, tool: any, rank: number, taskRelevance: number) => {
return `Sie sind ein DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieser/dieses bereits bewerteten Methode/Tools. const typ = tool.type === 'method' ? 'Methode' : 'Tool';
return `Sie sind DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieses bereits bewerteten Elements.
PROBLEM: "${userQuery}" PROBLEM: "${userQuery}"
TOOL: ${tool.name} (bereits bewertet mit ${taskRelevance}% Aufgaben-Eignung) ELEMENT: ${typ} ${tool.name} (Aufgaben-Eignung ${taskRelevance}%)
BESCHREIBUNG: ${tool.description} BESCHREIBUNG: ${(tool.description || '').replace(/\s+/g, ' ').trim()}
Die Methode/das Tool wurde bereits als Rang ${rank} für diese Aufgabe bewertet. Erklären Sie nun: ANTWORT AUSSCHLIESSLICH ALS JSON (Schema UNVERÄNDERT):
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
{ {
"detailed_explanation": "Detaillierte Erklärung warum und wie diese Methode/Tool für diese spezifische Aufgabe eingesetzt wird", "detailed_explanation": "Beginnen Sie mit einer Kurzfassung (Workflow: ≈200260 Zeichen, Spezifisch: ≈250320 Zeichen) für das UI: 'Kurz: …'. Danach (Workflow: ≈80140 Wörter, Spezifisch: ≈120180 Wörter) mit präziser, technisch korrekter Erläuterung, warum und wie diese ${typ.toLowerCase()} für dieses Problem eingesetzt wird.",
"implementation_approach": "Konkrete Schritt-für-Schritt Anleitung zur korrekten Anwendung", "implementation_approach": "Konkrete, reproduzierbare Schrittfolge. Kurze Schritte, kein Ausschweifen.",
"pros": ["Spezifischer Vorteil 1", "Spezifischer Vorteil 2"], "pros": ["Spezifischer Vorteil 1", "Vorteil 2"],
"limitations": ["Spezifische Einschränkung 1", "Spezifische Einschränkung 2"], "limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"],
"alternatives": "Alternative Ansätze oder Tools falls dieses nicht verfügbar ist" "alternatives": "Knappe Alternativen, falls dieses Element nicht verfügbar ist (Methoden und Tools anführen)."
} }
WICHTIG: WICHTIG:
- Keine erneute Bewertung - nur detaillierte Erklärung der bereits bewerteten Eignung - Keine erneute Bewertung nur Erklärung/Anwendung.
- "limitations" soll spezifische technische/methodische Einschränkungen der Methode/des Tools auflisten - Behalten Sie die korrekte Bezeichnung (Methode/Tool) bei.`;
- "pros" soll die Stärken für diese spezifische Aufgabe hervorheben`;
}, },
backgroundKnowledgeSelection: (userQuery: string, mode: string, selectedToolNames: string[], availableConcepts: any[]) => { backgroundKnowledgeSelection: (userQuery: string, mode: string, selectedToolNames: string[], availableConcepts: any[]) => {
return `Wählen Sie relevante forensische Konzepte für das Verständnis der empfohlenen Methodik. const conceptsList = availableConcepts.slice(0, 15).map((concept: any) => `- ${concept.name}: ${(concept.description || '').replace(/\s+/g, ' ').trim().slice(0, 80)}`).join('\n');
return `Wählen Sie 24 forensische Konzepte, die für die Anwendung der empfohlenen Elemente (Methoden + Tools) wesentlich sind.
${mode === 'workflow' ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${mode === 'workflow' ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
EMPFOHLENE TOOLS: ${selectedToolNames.join(', ')} EMPFOHLENE ELEMENTE: ${selectedToolNames.join(', ')}
VERFÜGBARE KONZEPTE: VERFÜGBARE KONZEPTE:
${availableConcepts.slice(0, 15).map((concept: any) => `- ${concept.name}: ${concept.description.slice(0, 80)}...`).join('\n')} ${conceptsList}
Wählen Sie 2-4 Konzepte aus, die für das Verständnis der forensischen Methodik essentiell sind. ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
[ [
{ {
"conceptName": "Exakter Konzept-Name", "conceptName": "Exakter Konzept-Name",
"relevance": "Forensische Relevanz: Warum dieses Konzept für das Verständnis der Methodik kritisch ist" "relevance": "Knappe Begründung, warum dieses Konzept für das Verständnis der Methodik/Tools kritisch ist (UI-tauglich)."
} }
]`; ]`;
}, },
finalRecommendations: (isWorkflow: boolean, userQuery: string, selectedToolNames: string[]) => { finalRecommendations: (isWorkflow: boolean, userQuery: string, selectedToolNames: string[]) => {
const prompt = isWorkflow ? if (isWorkflow) {
`Erstellen Sie eine Workflow-Empfehlung basierend auf DFIR-Prinzipien. return `Erstellen Sie einen knappen, methodisch korrekten WORKFLOW-Fließtext (max. 120 Wörter), der EXPLIZIT eine Mischung aus Methoden und Tools nutzt.
SZENARIO: "${userQuery}" SZENARIO: "${userQuery}"
AUSGEWÄHLTE TOOLS: ${selectedToolNames.join(', ') || 'Keine Tools ausgewählt'} AUSGEWÄHLTE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
Erstellen Sie konkrete methodische Workflow-Schritte für dieses spezifische Szenario unter Berücksichtigung forensischer Best Practices, Objektivität und rechtlicher Verwertbarkeit. Vorgaben: klare Phasen (Datensammlung Auswertung Analyse Bericht), Beweisführung/Chain of Custody, Reproduzierbarkeit. Sprache präzise und UI-tauglich. Keine Listen/Markdown.`;
}
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.` : return `Formulieren Sie kritische ÜBERLEGUNGEN (max. 140 Wörter) zur korrekten Anwendung der empfohlenen Elemente (Methoden + Tools).
`Erstellen Sie wichtige methodische Überlegungen für die korrekte Methoden-/Tool-Anwendung.
PROBLEM: "${userQuery}" PROBLEM: "${userQuery}"
EMPFOHLENE TOOLS: ${selectedToolNames.join(', ') || 'Keine Methoden/Tools ausgewählt'} EMPFOHLENE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
Geben Sie kritische methodische Überlegungen, Validierungsanforderungen und Qualitätssicherungsmaßnahmen für die korrekte Anwendung der empfohlenen Methoden/Tools. Fokus: Validierung/Qualitätssicherung, Risiken (FP/FN), Dokumentation/Reporting. Stil deutsch, ohne Listen/Markdown, UI-tauglich, mit mehr technischen Details.`;
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 100 Wörter.`;
return prompt;
} }
} as const; } as const;