@@ -29,9 +29,8 @@ async def import_data(
2929 """
3030 try :
3131 # Ensure the base folder exists
32- base_path = self .base_path
3332 if destination_folder :
34- base_path = await self .ensure_folder_exists (destination_folder )
33+ await self .ensure_folder_exists (destination_folder )
3534
3635 projects = source_data
3736
@@ -42,20 +41,26 @@ async def import_data(
4241 for project in projects :
4342 project_dir = clean_filename (project ["name" ])
4443
45- # Create project directories using FileService
46- docs_dir = base_path / project_dir / "docs"
44+ # Create project directories using FileService with relative path
45+ docs_dir = (
46+ f"{ destination_folder } /{ project_dir } /docs"
47+ if destination_folder
48+ else f"{ project_dir } /docs"
49+ )
4750 await self .file_service .ensure_directory (docs_dir )
4851
4952 # Import prompt template if it exists
50- if prompt_entity := self ._format_prompt_markdown (project ):
51- file_path = base_path / f"{ prompt_entity .frontmatter .metadata ['permalink' ]} .md"
53+ if prompt_entity := self ._format_prompt_markdown (project , destination_folder ):
54+ # Write file using relative path - FileService handles base_path
55+ file_path = f"{ prompt_entity .frontmatter .metadata ['permalink' ]} .md"
5256 await self .write_entity (prompt_entity , file_path )
5357 prompts_imported += 1
5458
5559 # Import project documents
5660 for doc in project .get ("docs" , []):
57- entity = self ._format_project_markdown (project , doc )
58- file_path = base_path / f"{ entity .frontmatter .metadata ['permalink' ]} .md"
61+ entity = self ._format_project_markdown (project , doc , destination_folder )
62+ # Write file using relative path - FileService handles base_path
63+ file_path = f"{ entity .frontmatter .metadata ['permalink' ]} .md"
5964 await self .write_entity (entity , file_path )
6065 docs_imported += 1
6166
@@ -71,13 +76,14 @@ async def import_data(
7176 return self .handle_error ("Failed to import Claude projects" , e ) # pyright: ignore [reportReturnType]
7277
7378 def _format_project_markdown (
74- self , project : Dict [str , Any ], doc : Dict [str , Any ]
79+ self , project : Dict [str , Any ], doc : Dict [str , Any ], destination_folder : str = ""
7580 ) -> EntityMarkdown :
7681 """Format a project document as a Basic Memory entity.
7782
7883 Args:
7984 project: Project data.
8085 doc: Document data.
86+ destination_folder: Optional destination folder prefix.
8187
8288 Returns:
8389 EntityMarkdown instance representing the document.
@@ -90,6 +96,13 @@ def _format_project_markdown(
9096 project_dir = clean_filename (project ["name" ])
9197 doc_file = clean_filename (doc ["filename" ])
9298
99+ # Build permalink with optional destination folder prefix
100+ permalink = (
101+ f"{ destination_folder } /{ project_dir } /docs/{ doc_file } "
102+ if destination_folder
103+ else f"{ project_dir } /docs/{ doc_file } "
104+ )
105+
93106 # Create entity
94107 entity = EntityMarkdown (
95108 frontmatter = EntityFrontmatter (
@@ -98,7 +111,7 @@ def _format_project_markdown(
98111 "title" : doc ["filename" ],
99112 "created" : created_at ,
100113 "modified" : modified_at ,
101- "permalink" : f" { project_dir } /docs/ { doc_file } " ,
114+ "permalink" : permalink ,
102115 "project_name" : project ["name" ],
103116 "project_uuid" : project ["uuid" ],
104117 "doc_uuid" : doc ["uuid" ],
@@ -109,11 +122,14 @@ def _format_project_markdown(
109122
110123 return entity
111124
112- def _format_prompt_markdown (self , project : Dict [str , Any ]) -> Optional [EntityMarkdown ]:
125+ def _format_prompt_markdown (
126+ self , project : Dict [str , Any ], destination_folder : str = ""
127+ ) -> Optional [EntityMarkdown ]:
113128 """Format project prompt template as a Basic Memory entity.
114129
115130 Args:
116131 project: Project data.
132+ destination_folder: Optional destination folder prefix.
117133
118134 Returns:
119135 EntityMarkdown instance representing the prompt template, or None if
@@ -129,6 +145,13 @@ def _format_prompt_markdown(self, project: Dict[str, Any]) -> Optional[EntityMar
129145 # Generate clean project directory name
130146 project_dir = clean_filename (project ["name" ])
131147
148+ # Build permalink with optional destination folder prefix
149+ permalink = (
150+ f"{ destination_folder } /{ project_dir } /prompt-template"
151+ if destination_folder
152+ else f"{ project_dir } /prompt-template"
153+ )
154+
132155 # Create entity
133156 entity = EntityMarkdown (
134157 frontmatter = EntityFrontmatter (
@@ -137,7 +160,7 @@ def _format_prompt_markdown(self, project: Dict[str, Any]) -> Optional[EntityMar
137160 "title" : f"Prompt Template: { project ['name' ]} " ,
138161 "created" : created_at ,
139162 "modified" : modified_at ,
140- "permalink" : f" { project_dir } /prompt-template" ,
163+ "permalink" : permalink ,
141164 "project_name" : project ["name" ],
142165 "project_uuid" : project ["uuid" ],
143166 }
0 commit comments