@@ -50,6 +50,7 @@ func DetectReactProject(projectPath string) (*ReactProject, error) {
5050 }
5151
5252 // Read and parse package.json
53+ packageJSONPath = filepath .Clean (packageJSONPath )
5354 data , err := os .ReadFile (packageJSONPath )
5455 if err != nil {
5556 return nil , fmt .Errorf ("failed to read package.json: %w" , err )
@@ -172,7 +173,7 @@ func (rp *ReactProject) GenerateVapiComponents() error {
172173 }
173174
174175 componentsDir := filepath .Join (rp .Path , srcDir , "components" , "vapi" )
175- if err := os .MkdirAll (componentsDir , 0o755 ); err != nil {
176+ if err := os .MkdirAll (componentsDir , 0o750 ); err != nil {
176177 return fmt .Errorf ("failed to create components directory: %w" , err )
177178 }
178179
@@ -186,7 +187,7 @@ func (rp *ReactProject) GenerateVapiComponents() error {
186187
187188 hookContent := rp .generateVapiHook ()
188189 hookPath := filepath .Join (componentsDir , hookFile )
189- if err := os .WriteFile (hookPath , []byte (hookContent ), 0o644 ); err != nil {
190+ if err := os .WriteFile (hookPath , []byte (hookContent ), 0o600 ); err != nil {
190191 return fmt .Errorf ("failed to write Vapi hook: %w" , err )
191192 }
192193
@@ -200,7 +201,7 @@ func (rp *ReactProject) GenerateVapiComponents() error {
200201
201202 componentContent := rp .generateVapiComponent ()
202203 componentPath := filepath .Join (componentsDir , componentFile )
203- if err := os .WriteFile (componentPath , []byte (componentContent ), 0o644 ); err != nil {
204+ if err := os .WriteFile (componentPath , []byte (componentContent ), 0o600 ); err != nil {
204205 return fmt .Errorf ("failed to write Vapi component: %w" , err )
205206 }
206207
@@ -214,7 +215,7 @@ func (rp *ReactProject) GenerateVapiComponents() error {
214215
215216 exampleContent := rp .generateVapiExample ()
216217 examplePath := filepath .Join (componentsDir , exampleFile )
217- if err := os .WriteFile (examplePath , []byte (exampleContent ), 0o644 ); err != nil {
218+ if err := os .WriteFile (examplePath , []byte (exampleContent ), 0o600 ); err != nil {
218219 return fmt .Errorf ("failed to write Vapi example: %w" , err )
219220 }
220221
@@ -244,7 +245,7 @@ NEXT_PUBLIC_VAPI_ASSISTANT_ID=your_assistant_id_here
244245`
245246 }
246247
247- if err := os .WriteFile (envPath , []byte (envContent ), 0o644 ); err != nil {
248+ if err := os .WriteFile (envPath , []byte (envContent ), 0o600 ); err != nil {
248249 return fmt .Errorf ("failed to create .env.example: %w" , err )
249250 }
250251
@@ -259,7 +260,7 @@ func (rp *ReactProject) savePackageJSON() error {
259260 }
260261
261262 packageJSONPath := filepath .Join (rp .Path , "package.json" )
262- return os .WriteFile (packageJSONPath , data , 0o644 )
263+ return os .WriteFile (packageJSONPath , data , 0o600 )
263264}
264265
265266func (rp * ReactProject ) generateVapiHook () string {
@@ -760,10 +761,10 @@ func GenerateReactIntegration(projectPath string, info *ProjectInfo) error {
760761 }
761762
762763 // Create directories if they don't exist
763- if err := os .MkdirAll (componentsDir , 0o755 ); err != nil {
764+ if err := os .MkdirAll (componentsDir , 0o750 ); err != nil {
764765 return fmt .Errorf ("failed to create components directory: %w" , err )
765766 }
766- if err := os .MkdirAll (hooksDir , 0o755 ); err != nil {
767+ if err := os .MkdirAll (hooksDir , 0o750 ); err != nil {
767768 return fmt .Errorf ("failed to create hooks directory: %w" , err )
768769 }
769770
@@ -940,7 +941,7 @@ export const useVapi = (config) => {
940941 }
941942
942943 filename := fmt .Sprintf ("useVapi.%s" , ext )
943- return os .WriteFile (filepath .Join (dir , filename ), []byte (content ), 0o644 )
944+ return os .WriteFile (filepath .Join (dir , filename ), []byte (content ), 0o600 )
944945}
945946
946947// generateVapiButton creates the VapiButton component
@@ -1149,7 +1150,7 @@ export const VapiButton = ({
11491150 }
11501151
11511152 filename := fmt .Sprintf ("VapiButton.%s" , ext )
1152- return os .WriteFile (filepath .Join (dir , filename ), []byte (content ), 0o644 )
1153+ return os .WriteFile (filepath .Join (dir , filename ), []byte (content ), 0o600 )
11531154}
11541155
11551156// generateVapiExample creates an example component showing Vapi usage
@@ -1208,7 +1209,7 @@ export const VapiExample = () => {
12081209 }
12091210
12101211 filename := fmt .Sprintf ("VapiExample.%s" , ext )
1211- return os .WriteFile (filepath .Join (dir , filename ), []byte (content ), 0o644 )
1212+ return os .WriteFile (filepath .Join (dir , filename ), []byte (content ), 0o600 )
12121213}
12131214
12141215// generateEnvTemplate creates environment template file
@@ -1229,5 +1230,5 @@ func generateEnvTemplate(projectPath string) error {
12291230# %sVAPI_BASE_URL=https://api.vapi.ai
12301231` , envPrefix , envPrefix , envPrefix )
12311232
1232- return os .WriteFile (filepath .Join (projectPath , ".env.example" ), []byte (content ), 0o644 )
1233+ return os .WriteFile (filepath .Join (projectPath , ".env.example" ), []byte (content ), 0o600 )
12331234}
0 commit comments