@@ -100,22 +100,78 @@ def start(self) -> None:
100100 "injected_api.js" ,
101101 ]
102102
103+ copied_files = []
103104 for file in files_to_copy :
104105 src = extension_source / file
105106 if src .exists ():
106- shutil .copy2 (src , os .path .join (temp_dir , file ))
107+ dst = os .path .join (temp_dir , file )
108+ shutil .copy2 (src , dst )
109+ copied_files .append (file )
110+ else :
111+ raise FileNotFoundError (
112+ f"Extension file not found: { src } \n "
113+ f"Extension source: { extension_source } \n "
114+ f"Extension source exists: { extension_source .exists ()} \n "
115+ f"Files in extension source: { list (extension_source .iterdir ()) if extension_source .exists () else 'N/A' } "
116+ )
117+
118+ # Verify all required files were copied
119+ if len (copied_files ) != len (files_to_copy ):
120+ missing = set (files_to_copy ) - set (copied_files )
121+ raise FileNotFoundError (
122+ f"Missing extension files: { missing } \n "
123+ f"Extension source: { extension_source } "
124+ )
125+
126+ # Verify files are in temp directory
127+ for file in files_to_copy :
128+ temp_file = os .path .join (temp_dir , file )
129+ if not os .path .exists (temp_file ):
130+ raise FileNotFoundError (
131+ f"File not copied to temp directory: { temp_file } \n "
132+ f"Temp dir: { temp_dir } \n "
133+ f"Files in temp dir: { os .listdir (temp_dir )} "
134+ )
107135
108136 # Copy pkg directory (WASM)
109137 pkg_source = extension_source / "pkg"
110138 if pkg_source .exists ():
111139 pkg_dest = os .path .join (temp_dir , "pkg" )
112140 shutil .copytree (pkg_source , pkg_dest , dirs_exist_ok = True )
141+ # Verify WASM files were copied
142+ wasm_file = os .path .join (pkg_dest , "sentience_core_bg.wasm" )
143+ js_file = os .path .join (pkg_dest , "sentience_core.js" )
144+ if not os .path .exists (wasm_file ) or not os .path .exists (js_file ):
145+ raise FileNotFoundError (
146+ f"WASM files not found after copy. Expected:\n "
147+ f" - { wasm_file } \n "
148+ f" - { js_file } \n "
149+ f"Files in pkg_dest: { os .listdir (pkg_dest ) if os .path .exists (pkg_dest ) else 'directory does not exist' } \n "
150+ f"Files in pkg_source: { list (pkg_source .iterdir ()) if pkg_source .exists () else 'directory does not exist' } "
151+ )
113152 else :
114153 raise FileNotFoundError (
115154 f"WASM files not found at { pkg_source } . "
155+ f"Extension source: { extension_source } \n "
156+ f"Extension source exists: { extension_source .exists ()} \n "
157+ f"Files in extension source: { list (extension_source .iterdir ()) if extension_source .exists () else 'directory does not exist' } \n "
116158 "Build the extension first: cd sentience-chrome && ./build.sh"
117159 )
118160
161+ # Verify manifest.json is valid JSON
162+ manifest_path = os .path .join (temp_dir , "manifest.json" )
163+ try :
164+ import json
165+ with open (manifest_path , 'r' ) as f :
166+ manifest = json .load (f )
167+ # Verify required manifest fields
168+ if "manifest_version" not in manifest :
169+ raise ValueError ("manifest.json missing 'manifest_version' field" )
170+ except json .JSONDecodeError as e :
171+ raise ValueError (f"manifest.json is not valid JSON: { e } " )
172+ except Exception as e :
173+ raise ValueError (f"Error reading manifest.json: { e } " )
174+
119175 # Launch Playwright
120176 self .playwright = sync_playwright ().start ()
121177
0 commit comments