@@ -148,11 +148,63 @@ public function action(string $httpPort, string $httpsPort, string $organization
148148 $ httpsPort = ($ httpsPort ) ? $ httpsPort : $ defaultHTTPSPort ;
149149 }
150150
151+ $ enableAssistant = false ;
152+ $ assistantExistsInOldCompose = false ;
153+
154+ if ($ data !== false && isset ($ compose )) {
155+ try {
156+ $ assistantService = $ compose ->getService ('appwrite-assistant ' );
157+ $ assistantExistsInOldCompose = $ assistantService !== null ;
158+ } catch (\Throwable ) {
159+ // assistant service doesn't exist, keep default false
160+ }
161+ }
162+
163+ if ($ interactive == 'Y ' && Console::isInteractive ()) {
164+ $ prompt = 'Add Appwrite Assistant? (Y/n) ' . ($ assistantExistsInOldCompose ? ' [Currently enabled] ' : '' );
165+ $ answer = Console::confirm ($ prompt );
166+
167+ if (empty ($ answer )) {
168+ $ enableAssistant = $ assistantExistsInOldCompose ;
169+ } else {
170+ $ enableAssistant = \strtolower ($ answer ) === 'y ' ;
171+ }
172+ } elseif ($ assistantExistsInOldCompose ) {
173+ $ enableAssistant = true ;
174+ }
175+
151176 $ input = [];
152177
153178 $ password = new Password ();
154179 $ token = new Token ();
155180 foreach ($ vars as $ var ) {
181+ if ($ var ['name ' ] === '_APP_ASSISTANT_OPENAI_API_KEY ' ) {
182+ if (!$ enableAssistant ) {
183+ $ input [$ var ['name ' ]] = '' ;
184+ continue ;
185+ }
186+
187+ // key already exists
188+ if (!empty ($ var ['default ' ])) {
189+ $ input [$ var ['name ' ]] = $ var ['default ' ];
190+ continue ;
191+ }
192+
193+ // if assistant enabled and no key, ask for it
194+ if (Console::isInteractive () && $ interactive === 'Y ' ) {
195+ $ input [$ var ['name ' ]] = Console::confirm ('Enter your OpenAI API key for Appwrite Assistant: ' );
196+ if (empty ($ input [$ var ['name ' ]])) {
197+ Console::warning ('No API key provided. Assistant will be disabled. ' );
198+ $ enableAssistant = false ;
199+ $ input [$ var ['name ' ]] = '' ;
200+ }
201+ continue ;
202+ }
203+
204+ $ input [$ var ['name ' ]] = '' ;
205+ continue ;
206+ }
207+
156208 if (!empty ($ var ['filter ' ]) && ($ interactive !== 'Y ' || !Console::isInteractive ())) {
157209 if ($ data && $ var ['default ' ] !== null ) {
158210 $ input [$ var ['name ' ]] = $ var ['default ' ];
@@ -199,7 +251,8 @@ public function action(string $httpPort, string $httpsPort, string $organization
199251 ->setParam ('httpsPort ' , $ httpsPort )
200252 ->setParam ('version ' , APP_VERSION_STABLE )
201253 ->setParam ('organization ' , $ organization )
202- ->setParam ('image ' , $ image );
254+ ->setParam ('image ' , $ image )
255+ ->setParam ('enableAssistant ' , $ enableAssistant );
203256
204257 $ templateForEnv ->setParam ('vars ' , $ input );
205258
0 commit comments