export interface MindnetSettings { edgeVocabularyPath: string; // vault-relativ graphSchemaPath: string; // vault-relativ (später) maxHops: number; strictMode: boolean; showCanonicalHints: boolean; chainDirection: "forward" | "backward" | "both"; interviewConfigPath: string; // vault-relativ autoStartInterviewOnCreate: boolean; interceptUnresolvedLinkClicks: boolean; // Semantic mapping builder settings mappingWrapperCalloutType: string; // default: "abstract" mappingWrapperTitle: string; // default: "🕸️ Semantic Mapping" mappingWrapperFolded: boolean; // default: true defaultEdgeType: string; // default: "" unassignedHandling: "prompt" | "none" | "defaultType" | "advisor"; // default: "prompt" allowOverwriteExistingMappings: boolean; // default: false defaultNotesFolder: string; // default: "" (vault root) } export const DEFAULT_SETTINGS: MindnetSettings = { edgeVocabularyPath: "_system/dictionary/edge_vocabulary.md", graphSchemaPath: "_system/dictionary/graph_schema.md", maxHops: 3, strictMode: false, showCanonicalHints: false, chainDirection: "forward", interviewConfigPath: "_system/dictionary/interview_config.yaml", autoStartInterviewOnCreate: false, interceptUnresolvedLinkClicks: true, mappingWrapperCalloutType: "abstract", mappingWrapperTitle: "🕸️ Semantic Mapping", mappingWrapperFolded: true, defaultEdgeType: "", unassignedHandling: "prompt", allowOverwriteExistingMappings: false, defaultNotesFolder: "", }; /** * Optional helper: normalize to Obsidian vault paths (forward slashes). */ export function normalizeVaultPath(p: string): string { return (p || "").trim().replace(/\\/g, "/"); }