diff --git a/.ai/mcp/mcp.json b/.ai/mcp/mcp.json new file mode 100644 index 0000000..bb3f251 --- /dev/null +++ b/.ai/mcp/mcp.json @@ -0,0 +1,12 @@ +{ + "mcpServers": { + "angular-cli": { + "command": "npx", + "args": [ + "-y", + "@angular/cli", + "mcp" + ] + } + } +} \ No newline at end of file diff --git a/.idea/laravel-idea.xml b/.idea/laravel-idea.xml new file mode 100644 index 0000000..2d9ee95 --- /dev/null +++ b/.idea/laravel-idea.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index 294e22d..480cdc8 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -143,7 +143,7 @@ - + diff --git a/backend/app/Ai/Agents/ContentWriterAgent.php b/backend/app/Ai/Agents/ContentWriterAgent.php new file mode 100644 index 0000000..4df4c6e --- /dev/null +++ b/backend/app/Ai/Agents/ContentWriterAgent.php @@ -0,0 +1,77 @@ +prompt($request->input('prompt')); + $postText = $socialMediaResponse->text; + + $imagePromptResponse = $creativeDirectorAgent->prompt($postText); + $imagePrompt = $imagePromptResponse->text; + + return response()->json([ + 'post' => $postText, + 'image_prompt' => $imagePrompt, + ]); + } +} diff --git a/backend/app/Http/Requests/SocialMediaPostRequest.php b/backend/app/Http/Requests/SocialMediaPostRequest.php new file mode 100644 index 0000000..5aa215f --- /dev/null +++ b/backend/app/Http/Requests/SocialMediaPostRequest.php @@ -0,0 +1,31 @@ + [ + 'required', + 'string', + 'min:3', + function (string $attribute, mixed $value, \Closure $fail): void { + $wordCount = str_word_count(strip_tags(trim($value))); + + if ($wordCount > 400) { + $fail("The {$attribute} must not exceed 400 words (you provided {$wordCount} words)."); + } + }, + ], + ]; + } + + public function authorize(): bool + { + return true; + } +} diff --git a/backend/config/ai.php b/backend/config/ai.php index 8d2443b..79b5e58 100644 --- a/backend/config/ai.php +++ b/backend/config/ai.php @@ -13,7 +13,7 @@ | */ - 'default' => 'openai', + 'default' => 'groq', 'default_for_images' => 'gemini', 'default_for_audio' => 'openai', 'default_for_transcription' => 'openai', diff --git a/backend/routes/api.php b/backend/routes/api.php index 65390bd..8ac7abd 100644 --- a/backend/routes/api.php +++ b/backend/routes/api.php @@ -1,5 +1,6 @@ user(); })->middleware('auth:sanctum'); +Route::post('/social-media/generate', [SocialMediaPostController::class, 'generate']);