Skip to content

Commit 06367ec

Browse files
authored
Merge pull request #10954 from appwrite/optional-assistant
Optional assistant
2 parents 5534337 + a66b565 commit 06367ec

2 files changed

Lines changed: 57 additions & 1 deletion

File tree

app/views/install/compose.phtml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ $httpsPort = $this->getParam('httpsPort', '');
1111
$version = $this->getParam('version', '');
1212
$organization = $this->getParam('organization', '');
1313
$image = $this->getParam('image', '');
14+
$enableAssistant = $this->getParam('enableAssistant', false);
1415
?>services:
1516
traefik:
1617
image: traefik:2.11
@@ -848,6 +849,7 @@ $image = $this->getParam('image', '');
848849
- _APP_DB_USER
849850
- _APP_DB_PASS
850851

852+
<?php if ($enableAssistant): ?>
851853
appwrite-assistant:
852854
image: appwrite/assistant:0.8.4
853855
container_name: appwrite-assistant
@@ -857,6 +859,7 @@ $image = $this->getParam('image', '');
857859
- appwrite
858860
environment:
859861
- _APP_ASSISTANT_OPENAI_API_KEY
862+
<?php endif; ?>
860863

861864
appwrite-browser:
862865
image: appwrite/browser:0.3.2

src/Appwrite/Platform/Tasks/Install.php

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)